国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于面向服務流水線的體系結(jié)構(gòu)的制作方法

      文檔序號:6478559閱讀:211來源:國知局
      專利名稱:基于面向服務流水線的體系結(jié)構(gòu)的制作方法
      基于面向服務流水線的體系結(jié)構(gòu)背景主存服務正變得日益常見,其中各種應用程序在共享硬件上服務大量消費者(稱 為多承租人系統(tǒng))。主存服務可以向多個客戶機提供同一類型的服務或向單個客戶機提供 多個服務。如此,主存服務能是相當復雜的系統(tǒng)。復雜主存服務系統(tǒng)的代表性示例是基于 web的客戶關(guān)系管理(CRM)服務。CRM解決方案通常在主存計算機應用程序環(huán)境中提供創(chuàng)建和維護客戶的從第一次 接觸到購買和售后的清晰形象所需的工具和能力。對復雜承租人而言,CRM系統(tǒng)可提供幫助 改善銷售和營銷組織瞄準新客戶的方式、管理營銷活動、以及推動銷售活動的特征和能力。 CRM系統(tǒng)可包括由承租人內(nèi)部或外部的用戶單獨地或以共享方式利用的許多硬件和軟件組 件。諸如主存CRM服務等復雜系統(tǒng)需要響應于客戶機請求來執(zhí)行一系列操作。這些操 作可以是同步的或異步的,可具有次序依賴性,并可由不同的各方來實現(xiàn)。在實現(xiàn)這樣的系 統(tǒng)時的一個挑戰(zhàn)是管理該系統(tǒng)的復雜性,尤其是在第三方提供者添加操作時。這一挑戰(zhàn)在 其中服務提供者不完全信任第三方擴展的軟件即服務(SaaS)應用程序中惡化。概述提供本概述是為了以簡化的形式介紹將在以下詳細描述中進一步描述的一些概 念。該概述并非旨在標識所要求保護的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確 定所要求保護的主題的范圍。各實施例針對提供采用流水線體系結(jié)構(gòu)的主存服務。用于擴展現(xiàn)有功能或提供附 加功能的第三方擴展通過元數(shù)據(jù)來注冊并在流水線中與平臺操作串行地執(zhí)行,其中操作的 次序和每一操作的階段通過元數(shù)據(jù)來交換,以便均衡地對待系統(tǒng)功能和自定義功能。還可 以使用循環(huán)檢測機制來阻止通過偶然或惡意創(chuàng)建無限循環(huán)而對系統(tǒng)資源的濫用。通過閱讀以下詳細描述并查閱相關(guān)聯(lián)的附圖,這些和其他特征和優(yōu)點將是顯而易 見的。可以理解,前述一般描述和以下詳細描述均僅是說明性的,且不限制所要求保護的各 方面。附圖簡述

      圖1是示出示例多承租人服務系統(tǒng)體系結(jié)構(gòu)的示圖;圖2示出具有流水線體系結(jié)構(gòu)的面向服務系統(tǒng)中的各主要組件;圖3示出具有流水線體系結(jié)構(gòu)的示例面向服務系統(tǒng)(CRM);圖4是其中可以實現(xiàn)各實施例的示例聯(lián)網(wǎng)環(huán)境的示圖;圖5是其中可以實現(xiàn)各實施例的示例計算操作環(huán)境的框圖;圖6示出用于管理具有流水線體系結(jié)構(gòu)的面向服務系統(tǒng)中的操作的過程的邏輯流程圖;以及圖7示出用于具有流水線體系結(jié)構(gòu)的面向服務系統(tǒng)中的循環(huán)檢測過程的邏輯流程圖。詳細描述
      如以上簡要描述的,可以在用于管理第三方插件功能的面向服務系統(tǒng)中實現(xiàn)流水線體系結(jié)構(gòu)。在以下詳細描述中,參考了構(gòu)成其一部分并作為說明示出了各具體實施例或 示例的附圖。可組合這些方面,可利用其他方面,并且可以做出結(jié)構(gòu)上的改變而不背離本發(fā) 明的精神或范圍。因此,以下詳細描述并不旨在限制,本發(fā)明的范圍由所附權(quán)利要求及其等 效方案來定義。雖然在結(jié)合在個人計算機上的操作系統(tǒng)上運行的應用程序執(zhí)行的程序模塊的一 般上下文中描述了各實施例,但是本領(lǐng)域技術(shù)人員會認識到各方面也可以結(jié)合其他程序模 塊實現(xiàn)。一般而言,程序模塊包括執(zhí)行特定任務或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組 件、數(shù)據(jù)結(jié)構(gòu)和其他類型的結(jié)構(gòu)。此外,如本領(lǐng)域技術(shù)人員理解的,各實施例可以用其他計 算機系統(tǒng)配置來實施,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費者電子 產(chǎn)品、小型計算機、大型計算機等等。各實施例還能在其中任務由通過通信網(wǎng)絡(luò)鏈接的遠程 處理設(shè)備來執(zhí)行的分布式計算環(huán)境中實現(xiàn)。在分布式計算環(huán)境中,程序模塊可以位于本地 和遠程存儲器存儲設(shè)備中。各實施例可被實現(xiàn)為計算機進程(方法)、計算系統(tǒng)、或者如計算機程序產(chǎn)品或計 算機可讀介質(zhì)等制品。計算機程序產(chǎn)品可以是計算機系統(tǒng)可讀并編碼了用于執(zhí)行計算機進 程的指令的計算機程序的計算機存儲介質(zhì)。計算機程序產(chǎn)品還可以是計算系統(tǒng)可讀并編碼 了用于執(zhí)行計算機進程的指令的計算機程序的載波上的傳播信號。參考圖1,示出了示例多承租人服務系統(tǒng)體系結(jié)構(gòu)的示圖100。在一典型的多承租 人系統(tǒng)中,與不同的承租人相關(guān)聯(lián)的用戶可以從服務請求操作,該服務可執(zhí)行涉及承租人 專用信息的同步和異步操作。如上所述,主存服務使用多方面的默認和定制功能來便于各種應用程序與大量客 戶之間在共享硬件上的交互。例如,客戶關(guān)系管理(CRM)服務可使與多個承租人相關(guān)聯(lián)的 用戶能夠記錄、跟蹤、分析、以及處理聯(lián)系人、銷售線索(sales lead)等,同時向每一承租人 提供安全和自定義功能。這些所謂的軟件即服務(SaaS)的某些自定義(或默認)功能能 以與內(nèi)核平臺操作一起注冊和執(zhí)行的第三方擴展或插件的形式提供。在一典型的主存服務環(huán)境中,可伸縮和冗余的一組web服務服務器112與承租人 數(shù)據(jù)存儲114 一起工作來存儲和處理與該服務的各個承租人相關(guān)聯(lián)的數(shù)據(jù)。還可以通過另 一組服務器和/或數(shù)據(jù)存儲來提供補充服務116。例如,不同的服務器組能以優(yōu)化系統(tǒng)性能 的分布式方式來執(zhí)行同步和異步處理。通過使用同步和異步進程的獨立分發(fā)以及服務器和數(shù)據(jù)庫之間的交互,能夠使主 存服務組的任何部分都可以伸縮。因此,可以提供服務器(和/或數(shù)據(jù)庫)的多個實例來 解決增加的工作負載、附加承租人、數(shù)據(jù)容量等等。在一操作中,主存服務接收輸入數(shù)據(jù)(例如,CRM服務中的新聯(lián)系人信息)并從用 戶102請求處理。用戶102可以與用于定制主存服務的用戶應用程序、工具、和/或插件 104的獨立系統(tǒng)相關(guān)聯(lián)。與該獨立系統(tǒng)相關(guān)聯(lián)的數(shù)據(jù)可以存儲在用戶數(shù)據(jù)存儲106中。用 戶102可以向主存服務提供擴展(插件)以用于附加或定制功能,其中這些插件連同內(nèi)核 平臺操作一起注冊和執(zhí)行。根據(jù)一些實施例,這些插件不僅提供附加功能,而且還擴展服務 的現(xiàn)有默認功能。
      用戶102可以自己提供插件或從第三方(未示出)請求插件來由主存服務注冊。 在這樣的場景中,主存服務可以與該第三方提供者直接交互以在平臺中注冊該插件。此外, 第三方提供者可以在用戶(承租人)請求注冊他們的擴展中的一個或多個時聯(lián)系主存服 務,并提供使主存服務確保所提供的插件確實是用戶所請求的插件的證書。當然,該復雜的交互可對服務造成控制其操作完整性和用戶數(shù)據(jù)安全性的挑戰(zhàn)。 不是所有的第三方提供者都是可信的源,可能存在與服務平臺和插件相關(guān)聯(lián)的兼容性問 題,并且將插件集成到服務的操作結(jié)構(gòu)中可能不是簡單的。根據(jù)一些實施例,可響應于客戶機請求來串行地執(zhí)行具有基于流水線體系結(jié)構(gòu)的 插件功能的靈活且可伸縮的平臺。請求對象可以作為參數(shù)傳遞到流水線中的每一插件,并 且每一插件可以創(chuàng)建或操縱響應對象??梢匝卦摿魉€傳遞任意狀態(tài)以在插件之間傳遞數(shù) 據(jù)。圖2示出具有流水線體系結(jié)構(gòu)的面向服務系統(tǒng)中的各主要組件。一種根據(jù)各實施 例的系統(tǒng)可以采用通過響應于客戶機請求插入功能來定義靈活且可伸縮平臺的流水線體 系結(jié)構(gòu)。請求對象作為參數(shù)傳遞到流水線中的每一插件,該插件可以創(chuàng)建或操縱響應對象。 如果兩個客戶機請求操作同一流水線,則它們的行為應當相同。如此,這樣的系統(tǒng)中的測試 案例矩陣與硬編碼行為的系統(tǒng)相比減小了。在根據(jù)一個實施例的系統(tǒng)中,由流水線配置來表示要響應于客戶機請求執(zhí)行的動 作序列。流水線中動作的次序可以通過依賴圖分析來確定。可以在不重新編譯系統(tǒng)的情況 下通過在流水線配置中注冊“插件”來配置新動作。這樣,可以添加新功能或修改現(xiàn)有功能, 從而形成動態(tài)和可伸縮的執(zhí)行模型。更重要地,流水線配置包括定義要執(zhí)行的動作序列的 依賴信息以及實際插件代碼模塊。面向服務流水線體系結(jié)構(gòu)中的動作也可以是異步的,在這種情況下,可以保存并 恢復流水線的狀態(tài)以進行處理。因此,異步動作不能影響響應。根據(jù)一些實施例,插件配置 (包括插件代碼)可以集中地存儲,從而允許具有當前流水線配置的相干視圖的基于群集 的系統(tǒng)。根據(jù)一個實施例,面向服務體系結(jié)構(gòu)可以被實現(xiàn)為前端以供調(diào)用流水線體系結(jié)構(gòu) 系統(tǒng)。流水線配置(包括插件代碼)隨后可通過該面向服務系統(tǒng)的應用編程接口(API)來 配置(例如,通過web服務)。插件執(zhí)行可以使用受管執(zhí)行環(huán)境以取決于它們的作者(例 如,通過代碼簽名確定的)來實施對插件的有限信任。為了對根據(jù)各實施例的面向服務系統(tǒng)構(gòu)建插件,實現(xiàn)者可以設(shè)計調(diào)用該插件代碼 的接口。在調(diào)用插件時,系統(tǒng)可將上下文對象與流水線的當前狀態(tài)一起傳遞。從該上下文 對象,插件可獲取可通過其執(zhí)行附加系統(tǒng)功能的接口。如該附圖所示,web服務212與應用程序222、工具224、以及工作流(業(yè)務流 程)226進行交互以處理用戶請求。另外,web服務212接收用戶插件(例如,231、232、235、 236)來執(zhí)行用戶定義的動作。用戶通過插件定義的動作可包括通過現(xiàn)有功能的擴展或與現(xiàn) 有功能并行的新功能的客戶化。插件通過元數(shù)據(jù)在API中注冊,該元數(shù)據(jù)可包括插件的次 序和階段(例如,在激活另一插件之前使操作取消、完成等)。插件隨后可與平臺操作234 一起(由執(zhí)行流水線230)執(zhí)行,取決于元數(shù)據(jù)所定義的注冊次序,有些在前(例如,231、 232)而有些在后(例如,235、236)。
      在一示例場景中,一個插件可被配置成在添加新信息或修改(刪除)現(xiàn)有信息時 更新聯(lián)系人信息,同時使用與該第一插件串行執(zhí)行的另一插件以基于該第一插件所執(zhí)行的 更新來審計用戶的聯(lián)系人記錄。在根據(jù)各實施例的系統(tǒng)中,給予插件定義它們自己的事務 邊界的能力,從而允許靈活且可伸縮的系統(tǒng)。插件可以串行或并行執(zhí)行。各實施例不限于 一種特定執(zhí)行方法。如上所述,根據(jù)各實施例的系統(tǒng)可包括單獨的服務器和處理主機(例如,異步處 理主機)的許多實例。通過實現(xiàn)其中各單獨的服務器將長期運行請求排入隊列以供稍后處 理的可靠進程隊列,可以獨立地伸縮這些服務器集群中的每一個。調(diào)用來自這些插件的系統(tǒng)行為的能力,甚至是在受管執(zhí)行環(huán)境中,打開了無限循 環(huán)的可能性。這可導致系統(tǒng)性能降級,尤其是對于多承租人系統(tǒng)中的其他承租人而言。這些 循環(huán)可包括偶然或惡意生成無限數(shù)據(jù)量的退化循環(huán)或無限但不是退化的非退化循環(huán)(例 如,要在不確定的時間段內(nèi)一年處理一次的生日提醒)。為終止(或控制)這些循環(huán),可以 在接收到客戶機請求時設(shè)置默認“預算”和互相關(guān)id。在調(diào)用插件內(nèi)的系統(tǒng)方法時,可以傳 遞互相關(guān)標識符和預算的一部分。如果子調(diào)用具有不足的預算,則這導致錯誤,從而終止循 環(huán)。一種根據(jù)各實施例的系統(tǒng)針對所設(shè)預算來為每一操作分配成本,所設(shè)預算分布在 各個子操作中。因此,調(diào)用者獨立地發(fā)起的且不具有相關(guān)聯(lián)的先前上下文的動作和作為另 一動作的結(jié)果(例如,子動作)的具有繼承上下文的動作可以使用與調(diào)用者相關(guān)聯(lián)的操作 帳戶來跟蹤。例如,用戶可以經(jīng)由web服務來要求創(chuàng)建新帳戶,并且創(chuàng)建新帳戶可以使插件 調(diào)用創(chuàng)建任務的調(diào)用。創(chuàng)建任務的調(diào)用具有從對帳戶的原始創(chuàng)建所繼承的上下文。如果正 在創(chuàng)建新帳戶,則可在這時設(shè)置預算,并且對該帳戶每次執(zhí)行操作時,可以遞減預算。根據(jù) 另一實施例,可以利用深度參數(shù)來終止無限循環(huán)??梢栽谝婚_始設(shè)置操作(子操作)次數(shù) 的計數(shù),并在執(zhí)行附加操作(創(chuàng)建子操作)時遞增。在達到最初設(shè)置的深度限制時,終止循 環(huán)。根據(jù)其他實施例,可以采用基于時間的預算復位以允許作為非退化的無限循環(huán), 諸如定時成在喚醒進行生日提醒之前休眠一年的異步事件。在操作序列中存在預定義延遲 的情況下,系統(tǒng)可復位預算或深度。又一實施例采用在無限循環(huán)檢測和終止中的有限樹結(jié) 構(gòu)化操作(子操作)例外。例如,區(qū)域帳戶創(chuàng)建可能是非統(tǒng)一的(每一州具有可變數(shù)量的 銷售區(qū)域),從而導致有限樹結(jié)構(gòu)。在預算(或深度)以固定方式分布在所有子操作中的情 況下,基于預算的循環(huán)檢測算法可能嘗試終止操作。該系統(tǒng)可被配置成考慮這樣的有限樹 結(jié)構(gòu),并且當在執(zhí)行循環(huán)檢測時豁免它們。圖3示出具有流水線體系結(jié)構(gòu)的示例面向服務系統(tǒng)(CRM)。CRM系統(tǒng)是其中客戶 能夠向他們的組織(承租人)簽到的多承租人系統(tǒng)的示例,該組織邏輯上是他們自己的CRM 數(shù)據(jù)的數(shù)據(jù)庫??蛻艨烧埱笾T如創(chuàng)建帳戶、發(fā)送電子郵件、或刪除聯(lián)系人。這些請求在服務 器集群上處理。在圖3的示例系統(tǒng)300中,CRM web服務312通過執(zhí)行平臺內(nèi)核操作334(默認功 能)連同提供擴展或替換功能的插件331、332、335、336來處理這樣的用戶請求,從而允許 為用戶定制該服務。這些插件在CRM執(zhí)行流水線330中串行執(zhí)行并且它們的順序可由用戶 來定義(331、332、335、336)。根據(jù)一個實現(xiàn),這些插件可被分組成用于預處理或后處理內(nèi)核功能所處理的數(shù)據(jù)的預事件(pre-event)和后事件(post-event)操作,但這一分組不是限 制。在根據(jù)各實施例的系統(tǒng)中,這些插件和內(nèi)核操作可以用任何方式來分組或根本不分組。CRM web服務312可以與特定CRM應用程序322交互,利用CRM工具324,以及將 業(yè)務流程存儲為CRM工作流326。根據(jù)一示例實現(xiàn),利用CRM web服務312可用作對用戶 請求的傳輸。諸如結(jié)構(gòu)化查詢語言(SQL)數(shù)據(jù)庫等關(guān)系數(shù)據(jù)庫可用作該流水線配置的儲存 庫,并且另一數(shù)據(jù)庫可用作插件代碼模塊的儲存庫。圖2和圖3中描述的面向服務的系統(tǒng)和操作是用于說明目的的示例。可以使用更 多或更少組件或使用此處描述的原理的其他方案來實現(xiàn)用于在多承租人服務中采用流水 線體系結(jié)構(gòu)的系統(tǒng)。圖4是其中可以實現(xiàn)各實施例的示例聯(lián)網(wǎng)環(huán)境。采用流水線體系結(jié)構(gòu)的面向服務 系統(tǒng)可以用分布式方式在多個物理和虛擬的客戶機和服務器上實現(xiàn)。它們還可以在非群集 系統(tǒng)或利用通過一個或多個網(wǎng)絡(luò)(例如,網(wǎng)絡(luò)450)通信的多個節(jié)點的群集系統(tǒng)中實現(xiàn)。這種系統(tǒng)可以包括服務器、客戶機、因特網(wǎng)服務提供者、以及通信介質(zhì)的任何拓撲 結(jié)構(gòu)。同樣,該系統(tǒng)可以具有靜態(tài)或動態(tài)拓撲結(jié)構(gòu)。術(shù)語“客戶機”可以表示客戶機應用程 序或客戶機設(shè)備。盡管實現(xiàn)多承租人服務中的流水線體系結(jié)構(gòu)的聯(lián)網(wǎng)系統(tǒng)可以涉及更多組 件,但結(jié)合此附圖來討論相關(guān)組件。此外,根據(jù)各實施例的系統(tǒng)還可以是用于服務與單承租 人相關(guān)聯(lián)的用戶的單承租人系統(tǒng)。處理請求可通過各個客戶機設(shè)備441-443來自各個用戶。用戶自己或第三方提供 者(通過服務器444)可向一個或多個服務器(例如,服務器452)所管理的流水線體系結(jié) 構(gòu)提供用于擴展或附加功能的插件。該服務還可以在一個或多個服務器中實現(xiàn)。承租人數(shù) 據(jù)庫可被包括在數(shù)據(jù)存儲458中??墒褂脤S脭?shù)據(jù)庫服務器(例如,數(shù)據(jù)庫服務器456)來 協(xié)調(diào)一個或多個此類數(shù)據(jù)存儲中的數(shù)據(jù)檢索和存儲。網(wǎng)絡(luò)450可以包括諸如企業(yè)網(wǎng)絡(luò)等安全網(wǎng)絡(luò)、諸如無線開放網(wǎng)絡(luò)等非安全網(wǎng)絡(luò)、 或因特網(wǎng)。網(wǎng)絡(luò)450提供此處描述的節(jié)點之間的通信。作為示例而非局限,網(wǎng)絡(luò)450可以 包括諸如有線網(wǎng)絡(luò)或直接線連接等有線介質(zhì),以及諸如聲學、RF、紅外線和其它無線介質(zhì)等 無線介質(zhì)。可以利用計算設(shè)備、應用程序、數(shù)據(jù)源、數(shù)據(jù)分布系統(tǒng)的許多其它配置來實現(xiàn)面向 服務系統(tǒng)中的流水線體系結(jié)構(gòu)。此外,圖4中所討論的聯(lián)網(wǎng)環(huán)境僅用于說明目的。各實施 例不限于示例應用程序、模塊、或過程。圖5及相關(guān)聯(lián)的討論旨在提供對適于在其中實現(xiàn)各實施例的計算環(huán)境的簡要概 括描述。參考圖5,示出了諸如計算設(shè)備500等示例計算操作環(huán)境的框圖。在一基本配置 中,計算設(shè)備500可以是提供與采用流水線體系結(jié)構(gòu)的面向服務系統(tǒng)相關(guān)聯(lián)的服務的服務 器,并通常包括至少一個處理單元502和系統(tǒng)存儲器504。計算設(shè)備500還可包括協(xié)作執(zhí)行 程序的多個處理單元。取決于計算設(shè)備的確切配置和類型,系統(tǒng)存儲器504可以是易失性 的(諸如RAM)、非易失性的(諸如ROM、閃存等)或是兩者的某種組合。系統(tǒng)存儲器504通 常包括適于控制聯(lián)網(wǎng)個人計算機的操作的操作系統(tǒng)505,諸如來自華盛頓州雷德蒙市的微 軟公司的WINDOWS 操作系統(tǒng)。系統(tǒng)存儲器504還可以包括一個或多個軟件應用程序, 諸如程序模塊606、web服務522、以及插件524。web服務522可以是分開的應用程序或是向與計算設(shè)備500相關(guān)聯(lián)的客戶機應用程序提供數(shù)據(jù)和處理服務的主存服務應用程序的整合模塊。如上所述,插件524可以提供 為特定用戶和/或操作定制web服務522的操作的附加功能。該基本配置在圖5中由虛線 508內(nèi)的組件示出。計算設(shè)備500可具有附加特征或功能。例如,計算設(shè)備500還可包括附加數(shù)據(jù)存 儲設(shè)備(可移動和/或不可移動),諸如例如磁盤、光盤或磁帶。這些其它存儲在圖5中由 可移動存儲509和不可移動存儲510示出。計算機存儲介質(zhì)可包括以用于存儲諸如計算機 可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)實現(xiàn)的易失性和非易 失性、可移動和不可移動介質(zhì)。系統(tǒng)存儲器504、可移動存儲509和不可移動存儲510都是 計算機存儲介質(zhì)的示例。計算機存儲介質(zhì)包括,但不限于,RAM、R0M、EEPR0M、閃存或其它存 儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁帶盒、磁帶、磁盤存儲或其它磁 性存儲設(shè)備、或能用于存儲所需信息且可以由計算設(shè)備500訪問的任何其它介質(zhì)。任何這 樣的計算機存儲介質(zhì)都可以是設(shè)備500的一部分。計算設(shè)備500還可具有諸如鍵盤、鼠標、 筆、語音輸入設(shè)備、觸摸輸入設(shè)備等輸入設(shè)備512。還可包括諸如顯示器、揚聲器、打印機等 輸出設(shè)備514。這些設(shè)備在本領(lǐng)域中公知且無需在此處詳細討論。計算設(shè)備500還可以包含允許該設(shè)備諸如在分布式計算環(huán)境中,例如在內(nèi)聯(lián)網(wǎng)或 互聯(lián)網(wǎng)中通過無線網(wǎng)絡(luò)與其它計算設(shè)備518通信的通信連接516。其他計算設(shè)備518可包 括執(zhí)行與提供插件的另一服務或第三方提供者相關(guān)聯(lián)的應用程序的服務器。通信連接516 是通信介質(zhì)的一個示例。通信介質(zhì)通常由諸如載波或其他傳輸機制等已調(diào)制數(shù)據(jù)信號中的 計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)來體現(xiàn),并包括任何信息傳遞介質(zhì)。術(shù)語 “已調(diào)制數(shù)據(jù)信號”指的是其一個或多個特征以在信號中編碼信息的方式被設(shè)定或更改的 信號。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,以及無線 介質(zhì),諸如聲學、RF、紅外線和其它無線介質(zhì)。如此處所使用的術(shù)語“計算機可讀介質(zhì)”包括 存儲介質(zhì)和通信介質(zhì)兩者。所要求保護的主題還包括各方法。這些方法可以用任何數(shù)量的方式,包括本文中 所描述的結(jié)構(gòu)來實現(xiàn)。一種此類方式是通過本文中描述的類型的設(shè)備的機器操作。另一可任選方式是結(jié)合一個或多個人類操作者執(zhí)行該方法的各個操作中的某一 些來執(zhí)行該方法的一個或多個操作。這些人類操作者無需彼此同在一處,而是其每一個可 以僅與執(zhí)行程序的一部分的機器同在一處。圖6示出用于管理具有流水線體系結(jié)構(gòu)的面向服務系統(tǒng)中的操作的過程600的邏 輯流程圖。過程600可作為例如主存CRM服務的一部分來實現(xiàn)。過程600在操作602開始,在此流水線體系結(jié)構(gòu)服務接收用戶構(gòu)造的方案(和/ 或操作)。該方案(和/或操作)與可由該用戶或由該用戶授權(quán)的第三方提供的一個或多 個插件相關(guān)聯(lián)。處理從操作602前進至操作604。在操作604,自動地配置該方案。例如,在利用SQL數(shù)據(jù)庫的CRM系統(tǒng)中,可以基于 該方案、相關(guān)聯(lián)的元數(shù)據(jù)、以及操作本身來生成SQL數(shù)據(jù)(查詢)。系統(tǒng)至今不執(zhí)行任何操 作,因為與用戶數(shù)據(jù)相關(guān)聯(lián)的用戶沒有請求任何動作。處理從操作604移至操作606。在操作606,接收用戶插件。這些插件執(zhí)行用戶請求的動作,從而以均衡方式向該 服務的內(nèi)核功能提供擴展或替換功能。處理從操作606移至操作608。在操作608,通過元數(shù)據(jù)在系統(tǒng)API中注冊用戶動作,元數(shù)據(jù)還包括在流水線中執(zhí)行用戶動作時每一插件的次序和階段。處理從操作608移至操作610,其中在來自用戶的請 求時,服務以指定次序執(zhí)行注冊插件來處理用戶數(shù)據(jù)。該系統(tǒng)可以執(zhí)行附加操作,諸如用于 對流水線操作進行排序的依賴性分析(在上傳插件時),從而使多方都能夠擴展該系統(tǒng)并 可預測地工作。處理從操作610移至調(diào)用過程以供進一步操作。如上所述,通過允許用戶注冊并以任何次序(以及在進行中)執(zhí)行他們自己的擴 展,該系統(tǒng)因為偶然或惡意生成的無限循環(huán)而易受性能降級的損害。因此,可以使用循環(huán)檢 測機制來檢測并終止無限循環(huán),同時允許特定準無限(無限但非退化)循環(huán)免于終止。這 些機制在下面將更詳細地描述。圖7示出用于具有流水線體系結(jié)構(gòu)的面向服務系統(tǒng)中的循環(huán)檢測過程700的邏輯 流程圖。過程700可以在圖6的操作管理過程600內(nèi)實現(xiàn)。過程700在操作702開始,在這里接收調(diào)用。該調(diào)用可以針對最初動作或針對現(xiàn) 有帳戶上的動作。這由系統(tǒng)通過檢查與該調(diào)用一起傳遞的上下文來確定。處理從操作702 前進至判定操作704。在判定操作704,作出所傳遞的上下文是否包括現(xiàn)有預算(深度)的判定。如果對 所請求的動作沒有找到現(xiàn)有預算(深度),則在操作706創(chuàng)建一個預算(深度)。如果找到 與該調(diào)用相關(guān)聯(lián)的現(xiàn)有預算(深度),則在操作708基于與該調(diào)用相關(guān)聯(lián)的操作的數(shù)量或 類型來遞減該預算(深度)。每一操作都具有相對于預算的成本,預算分布于各子操作中。 如上所述,還可以使用基于子操作或操作的計數(shù)的深度來代替預算。暫時跳過可任選操作710和712,在判定操作714,作出所分配的預算是否耗盡的 判定。如果預算耗盡,則終止操作。如果仍然存在可用預算,則在后續(xù)操作716執(zhí)行與該調(diào) 用相關(guān)聯(lián)的操作。盡管阻止退化循環(huán),但根據(jù)各實施例的系統(tǒng)還可便于看似無限循環(huán)的例外,這些 例外不應作為標準操作過程的一部分來終止。例如,設(shè)定在不確定時間內(nèi)的、對聯(lián)系人的生 日提醒操作就是一個例外。因此,系統(tǒng)可能感覺它是無限循環(huán)并嘗試終止它。跟在708之 后的可任選操作710旨在進行這一豁免。如果操作包括預定義延遲(如生日提醒之間的一 年延遲),則復位預算(深度)。另一示例例外是涉及有限樹結(jié)構(gòu)的操作。例如,CRM服務的銷售區(qū)域可能是非統(tǒng) 一地分布的。盡管可能向一個州分配了一個銷售區(qū)域,但可能向另一人口更多的州分配多 個銷售區(qū)域。如果在子操作之間采用固定深度或預算分配,則該系統(tǒng)同樣感覺這一動作是 無限的并嘗試終止它。在可任選操作712,如果調(diào)用涉及有限樹結(jié)構(gòu),則可以復位預算或深 度,從而阻止過早終止這些操作。包括在過程600和700內(nèi)的各操作僅出于說明目的。提供采用流水線體系結(jié)構(gòu)的 主存服務可以使用此處所述的各原理通過具有更少或更多步驟的相似過程、以及不同的操 作次序來實現(xiàn)。以上說明書、示例和數(shù)據(jù)提供了對各實施例組成的制造和使用的全面描述。盡管 用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定 義的主題不必限于上述具體特征或動作。相反,上述具體特征和動作是作為實現(xiàn)權(quán)利要求 和各實施例的示例形式而公開的。
      1權(quán)利要求
      一種至少部分地在計算設(shè)備(500)中執(zhí)行以用于在面向服務系統(tǒng)中實現(xiàn)流水線體系結(jié)構(gòu)的方法(600),所述方法包括自動地配置用戶構(gòu)造的方案(604)接收與所述方案相關(guān)聯(lián)的插件(231、232、234、235、236、331、332、335、336)(606)通過元數(shù)據(jù)注冊所述插件(231、232、234、235、236、331、332、335、336)(608),其中所述元數(shù)據(jù)包括以下至少一個所述插件的次序和階段;以及響應于從所述用戶接收到對動作的調(diào)用,在執(zhí)行流水線中根據(jù)接收到的次序連同一個或多個內(nèi)核平臺操作一起執(zhí)行所述插件(231、232、234、235、236、331、332、335、336)(610)。
      2.如權(quán)利要求1所述的方法(600),其特征在于,還包括在執(zhí)行期間向所述插件(231、232、234、235、236、331、332、335、336)傳遞請求對象,以 使得所述插件能夠操縱響應對象。
      3.如權(quán)利要求1所述的方法(600),其特征在于,還包括向所述插件(231、232、234、235、236、331、332、335、336)傳遞與所述執(zhí)行相關(guān)聯(lián)的任 意狀態(tài)。
      4.如權(quán)利要求1所述的方法(600),其特征在于,所述插件(231、232、234、235、236、`331、332、335、336)和所述內(nèi)核平臺操作按以下方式中的一種來執(zhí)行順序方式和并行方式。
      5.如權(quán)利要求1所述的方法(600),其特征在于,還包括 接收另一插件(231、232、234、235、236、331、332、335、336)通過注冊所述另一插件(231、232、234、235、236、331、332、335、336)在不編譯的情況 下配置所述方案。
      6.如權(quán)利要求5所述的方法(600),其特征在于,還包括分析所述元數(shù)據(jù)所提供的依賴性信息來確定所述插件(231、232、234、235、236、331、`332、335、336)和所述內(nèi)核平臺操作的次序。
      7.如權(quán)利要求1所述的方法(600),其特征在于,所述插件(231、232、234、235、236、 331、332、335、336)用于以下之一添加新功能和擴展所述面向服務系統(tǒng)的現(xiàn)有功能。
      8.如權(quán)利要求1所述的方法(600),其特征在于,所述插件配置和所述插件代碼集中式 的存儲在所述面向服務系統(tǒng)中。
      9.如權(quán)利要求1所述的方法(600),其特征在于,所述面向服務系統(tǒng)被配置成執(zhí)行以下 至少一個同步過程和異步過程。
      10.如權(quán)利要求9所述的方法(600),其特征在于,執(zhí)行所述異步過程還包括 保存所述流水線的狀態(tài);以及隨后恢復所述流水線的狀態(tài)以進行處理。
      11.一種實現(xiàn)流水線體系結(jié)構(gòu)的面向服務系統(tǒng)(200),包括 至少一個web服務器(112),其被配置成接收用戶構(gòu)造的方案(602); 自動地配置所述方案(604);接收用于以下之一的多個插件(231、232、234、235、236、331、332、335、336) (606)添 加與所述方案相關(guān)聯(lián)的新功能和擴展所述面向服務系統(tǒng)與所述方案相關(guān)聯(lián)的現(xiàn)有功能;通過元數(shù)據(jù)注冊所述插件(231、232、234、235、236、331、332、335、336) (608),其中所述 元數(shù)據(jù)包括以下至少一個所述插件的次序和階段;分析所述元數(shù)據(jù)所提供的依賴性信息來確定所述插件(231、232、234、235、236、331、 332、335、336)和內(nèi)核平臺操作的次序;以及 執(zhí)行流水線,其被配置成在從所述用戶接收到請求后,根據(jù)接收到的次序連同所述內(nèi)核平臺操作一起、通過將 請求對象傳遞到所述插件(231、232、234、235、236、331、332、335、336)以使所述插件(231、 232、234、235、236、331、332、335、336)能夠操縱響應對象、并通過向所述插件傳遞與所述執(zhí) 行相關(guān)聯(lián)的任意狀態(tài)來執(zhí)行所述插件(231、232、234、235、236、331、332、335、336) (610)。
      12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述面向服務系統(tǒng)(200)被實現(xiàn)為前端以 用于調(diào)用流水線體系結(jié)構(gòu)系統(tǒng)(230)。
      13.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述插件(231、232、234、235、236、331、 332、335、336)通過所述面向服務系統(tǒng)(200)的應用編程接口(API)來注冊,并且其中所述 流水線通過所述API來配置。
      14.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述執(zhí)行流水線還被配置成在調(diào)用插件(231、232、234、235、236、331、332、335、336)時,向所述插件(231、232、 234、235、236、331、332、335、336)傳遞具有所述流水線的當前狀態(tài)的上下文對象,以使所述 插件(231、232、234、235、236、331、332、335、336)能夠獲得用于執(zhí)行附加系統(tǒng)功能的接口。
      15.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述至少一個web服務器是可伸縮的,并 且其中所述系統(tǒng)能夠便于所述服務器的多個實例。
      16.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述至少一個web服務器還被配置成 向每一動作分配預算和深度參數(shù)之一,其中所述預算和所述深度參數(shù)中所分配的一個的一部分被分配給每一子動作;在調(diào)用插件(231、232、234、235、236、331、332、335、336)內(nèi)的系統(tǒng)方法時,傳遞所述預 算和所述深度參數(shù)之一的所述部分連同分配給每一子動作的互相關(guān)標識符;遞減要執(zhí)行的每一子動作的所述預算之一(708),其中所述預算基于與子動作相關(guān)聯(lián) 的每一操作的成本來遞減;以及基于與所請求的動作相關(guān)聯(lián)的子動作的計數(shù)來遞增要執(zhí)行的每一子動作的深度參數(shù);如果所述預算和所述深度參數(shù)之一達到對應的預定義閾值,則終止所述操作并提供出 錯消息。
      17.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述至少一個web服務器還被配置成 如果與一動作相關(guān)聯(lián)的操作序列中包括預定義延遲,則復位所述預算之一的遞減和所述深度參數(shù)的遞增(710);以及如果所述動作包括子動作的有限樹結(jié)構(gòu),則復位所述預算之一的遞減和所述深度參數(shù) 的遞增(712)。
      18.一種其上存儲有用于在面向服務系統(tǒng)(200)中實現(xiàn)流水線體系結(jié)構(gòu)的指令的計算 機可讀存儲介質(zhì),所述指令包括接收用戶構(gòu)造的方案(602);自動地配置所述方案(604);接收與所述方案相關(guān)聯(lián)的用于以下之一的插件(231、232、234、235、236、331、332、335、 336) (606);添加新功能和擴展所述面向服務系統(tǒng)的現(xiàn)有功能;通過元數(shù)據(jù)注冊所述插件(231、232、234、235、236、331、332、335、336) (608),其中所述 元數(shù)據(jù)包括以下至少一個所述插件(231、232、234、235、236、331、332、335、336)的依賴性 信息和階段;以及分析所述元數(shù)據(jù)所提供的依賴性信息來確定所注冊的插件(231、232、234、235、236、331、332、335、336)和內(nèi)核平臺操作的次序;在執(zhí)行流水線中根據(jù)接收到的次序連同所述內(nèi)核平臺操作來執(zhí)行所述插件(231、232、 234、235、236、331、332、335、336) (610),其中執(zhí)行所述插件(231、232、234、235、236、331、332、335、336)包括向所述插件(231、232、234、235、236、331、332、335、336)傳遞請求對象,以使得所述插 件(231、232、234、235、236、331、332、335、336)能夠操縱響應對象;以及向所述插件(231、232、234、235、236、331、332、335、336)傳遞與所述執(zhí)行相關(guān)聯(lián)的任 意狀態(tài)。
      19.如權(quán)利要求18所述的計算機可讀存儲介質(zhì),其特征在于,所述指令還包括 向每一動作分配預算,其中所分配的預算的一部分被分配給每一子動作;在調(diào)用插件(231、232、234、235、236、331、332、335、336)內(nèi)的系統(tǒng)方法時,傳遞所述預 算的所述部分連同分配給每一子動作的互相關(guān)標識符;基于與子動作相關(guān)聯(lián)的每一操作的預定成本來遞減要執(zhí)行的每一子動作的所述預算 (708);以及如果所述預算耗盡,則終止所述操作并提供出錯消息。
      20.如權(quán)利要求19所述的計算機可讀存儲介質(zhì),其特征在于,所述指令還包括 如果與動作相關(guān)聯(lián)的操作序列中包括預定義延遲,則復位所述預算的遞減(710);以及如果所述動作包括子動作的有限樹結(jié)構(gòu),則復位所述預算的遞減(712)。
      全文摘要
      提供了采用流水線體系結(jié)構(gòu)來適應用于擴展現(xiàn)有功能或提供附加功能的第三方擴展的面向服務系統(tǒng)。用戶或第三方提供的插件通過元數(shù)據(jù)來注冊并且在流水線中與平臺操作一起執(zhí)行。該流水線可用新上傳的插件來在進行中擴展。用于對同步或異步流水線操作進行排序的依賴性分析使得多方能夠擴展系統(tǒng)并可預測地操作。循環(huán)檢測機制阻止通過偶然或惡意創(chuàng)建無限循環(huán)而濫用系統(tǒng)資源,非退化無限循環(huán)除外。
      文檔編號G06F17/00GK101809562SQ200880109401
      公開日2010年8月18日 申請日期2008年9月29日 優(yōu)先權(quán)日2007年9月27日
      發(fā)明者A·塔卡奇, A·簡迪塔卡恩, G·阿拉什, M·J·奧特, N·古普塔 申請人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1