專利名稱:工作流上的對象模型的制作方法
工作流上的對象模型 背景
通常,現(xiàn)在企業(yè)所采用的所有軟件都支持業(yè)務(wù)流程。有些這樣的流程僅依 靠應(yīng)用程序之間的通信,是完全自動化的,而其它則依靠人們啟動該流程,批 準該流程所使用的文檔、解決出現(xiàn)的任何例外情形,等等。不管在哪種情況下, 指定被稱為工作流的一系列離散的步驟是常見的做法,該工作流描述了流程中 所涉及的人和軟件的活動。 一旦定義了這樣的工作流,則可圍繞該定義建立應(yīng) 用程序以支持業(yè)務(wù)流程。
換言之,工作流通常是在這種組織中的信息和控制流。為了有效地競爭, 企業(yè)不斷努力定義、記錄并精簡這樣的流程。在企業(yè)環(huán)境中,這些流程包括銷 售和訂單處理、采購任務(wù)、庫存控制和管理、制造和生產(chǎn)控制、發(fā)貨和驗貨、 應(yīng)付賬款等。
計算機系統(tǒng)和相關(guān)聯(lián)的軟件現(xiàn)在提供企業(yè)和其它組織可以用于改進他們 的工作流的工具。軟件工具可以用來對業(yè)務(wù)工作流流程或進度表建模并標識效 率不高的地方和可能的改進。另外,當一流程涉及在人員、部門、車間、或甚 至獨立的公司之間交換數(shù)據(jù)時,計算機系統(tǒng)和網(wǎng)絡(luò)可以用來實現(xiàn)這些交換。這 樣的系統(tǒng)和軟件工具還能夠?qū)崿F(xiàn)通常與業(yè)務(wù)相關(guān)信息相關(guān)聯(lián)的大規(guī)模計算和 其它數(shù)據(jù)或信息處理。
因此,工作流管理包括對一組織的業(yè)務(wù)流程中的信息流動和控制進行有效 管理,其中這種信息處理的自動化導致了現(xiàn)代商業(yè)界中的許多有效改進。而且, 工作流管理的這種自動化現(xiàn)在正允許企業(yè)和其他組織通過在包括諸如因特網(wǎng) 等全球計算機網(wǎng)絡(luò)的計算機系統(tǒng)中執(zhí)行工作流事務(wù)來進一步改進績效。
一個典型的基于工作流的應(yīng)用程序常常需要滿足多個條件。例如, 一個這 樣的條件是基于業(yè)務(wù)規(guī)則作出決策的能力。這可以包括簡單規(guī)則(例如,就像 基于信用檢查的結(jié)果做出的是或否的決定),以及更復(fù)雜的規(guī)則(例如,必須 對可能的大型標的進行評估以作出初步擔保決定)。另外的要求是與工作流外的其它軟件和其它系統(tǒng)進行通信。例如,初始請求可以從應(yīng)用程序的一部分接
收到,而其它方面(例如,聯(lián)系信用服務(wù))可以要求使用其它Web服務(wù)或技
術(shù)進行的通信。需要滿足的另一條件是工作流與用戶的適當交互。例如,工作 流應(yīng)該通常能夠顯示用戶界面本身或通過其它軟件與人們交互。此外,另一個 需要滿足的條件是維持整個工作流生命周期中的狀態(tài)的能力。因此,對在軟件 中創(chuàng)建和執(zhí)行工作流提出了獨特的挑戰(zhàn)。
例如,某些業(yè)務(wù)流程可能需要數(shù)小時、數(shù)天、或數(shù)星期來完成,并且在這 樣的時間長度內(nèi)維持關(guān)于工作流當前狀態(tài)的信息是高要求的。此外,這樣一種 長時間運行的工作流還通常將以非阻斷方式與其它軟件通信,并且異步通信會 有困難。與此同時,盡管對軟件中的固定交互的建模是相對直接的,但消費者 往往會不斷要求額外的靈活性,例如在進行中改變業(yè)務(wù)流程的能力。處理不同 的應(yīng)用程序還會進一步增加工作流創(chuàng)建和管理中所涉及的復(fù)雜度。
許多用于工作流工具的應(yīng)用程序是在企業(yè)或組織的內(nèi)部的。隨著具有調(diào)制 解調(diào)器或其它類型的通信鏈路的聯(lián)網(wǎng)計算機的到來,在遠程位置處的計算系統(tǒng) 現(xiàn)在可以彼此方便地通信。這種增強的通信允許在一個公司的遠程設(shè)備之間使 用計算系統(tǒng)工作流應(yīng)用程序。 一個示例可以包括向異地銷售辦公室轉(zhuǎn)發(fā)來自公 司總部的一個客戶訂單以供合適的銷售人員來驗證并將驗證返回給總部。工作 流應(yīng)用程序還可以具有處理不同公司之間的業(yè)務(wù)往來的特定用途。在一典型的 應(yīng)用中,具有買方一賣方關(guān)系的兩個公司可能希望自動化對采購訂單、產(chǎn)品運 輸、帳單和托收的生成和處理。
例如,針對一個專門問題的應(yīng)用程序(例如客戶關(guān)系管理(CRM)或一個 例如金融服務(wù)的特定垂直市場)可以圍繞工作流來構(gòu)建。這種類型的應(yīng)用程序 通常實現(xiàn)多個不同業(yè)務(wù)流程。在諸如Windows Workflow Foundation等常見的 工作流基礎(chǔ)上構(gòu)建驅(qū)動那些流程的邏輯可以使得應(yīng)用程序能更快地建立、更快 地改變、以及更容易定制。此外,這種流程的自動化可以帶來本來是不可能的 顯著的效率上的改進。然而,這種對工作流技術(shù)的公司間應(yīng)用需要公司之間的 合作以及單個公司的現(xiàn)有計算機系統(tǒng)和應(yīng)用程序的適當接口和適當?shù)某志梅?br>
務(wù)實現(xiàn)。
到目前為止,已開發(fā)的工作流應(yīng)用程序工具通過定義工作流進度表來提供自動化業(yè)務(wù)工作流的某些能力。然而,進一步建立在問題空間(企業(yè)/流程域) 內(nèi)找到的以及那些在解決方案中所采用的(實際工作流模型/定義)對象之間的
更高程度的同構(gòu)的能力是煩累的,并且仍然被認為是對高質(zhì)量軟件的重要要求。
因此,需要克服與常規(guī)系統(tǒng)和設(shè)備相關(guān)聯(lián)的上述示例性缺陷。
概述
以下展示了簡化的概述,以便提供對所請求保護的主題的某些方面的基本 理解。本概述并不是詳盡的概要。它并非意在確定所請求保護的主題的關(guān)鍵/ 重要特征,也并非意在對所請求保護的主題的范圍進行劃界。其唯一目的是以 簡化的形式作為接下來要被展示的更詳細的描述的前序來展示一些概念。
本發(fā)明提供通過提供對工作流實例的宿主訪問的訪問組件(例如,
GetWorkflow〈workflow〉方法)來對象化工作流和管理行為的意圖的系統(tǒng)和方 法,其中可定義自定義特征以用于運行時的交互。這種自定義特征(例如,強 類型工作流)可包括一個或多個特性、 一種或多種方法、 一個或多個事件、一 接口等。而且,本發(fā)明提供正從工作流定義中創(chuàng)建的工作流實例,并且通常不 是圍繞該實際工作流實例對象的代理、外表、包裝。由此,實際的工作流實例 可直接被訪問。所以,工作流可被展示為對象類型或類,其中新成員可被添加 并且該工作流可被擴展。這提供了靈活性并且允許用戶與自定義特性交互。
在一相關(guān)方面,自定義方法和特性可在宿主與工作流實例之間的數(shù)據(jù)交換 期間被調(diào)用。宿主可與工作流示例進行交互以將自定義行為與工作流類相關(guān) 聯(lián)。例如,宿主可訂閱自定義事件以訪問這種工作流實例,并且將工作流作為 對象來操控??赏ㄟ^編程和/或通過可視工具來定義各種類型的工作流。
根據(jù)本發(fā)明的方法,可從基本工作流定義中定義具有自定義特性、自定義 方法、自定義事件等的新的工作流定義。此外,宿主應(yīng)用程序能通過與工作流 實例相關(guān)聯(lián)的標識來向工作流提供者請求工作流實例。這種標識唯一地標識了 工作流的實例并且可通過編程來生成或者由宿主應(yīng)用程序分配/訪問。工作流提 供者可生成/返回工作流的一個實例,并且用戶可以通過調(diào)用諸如特性、方法、 事件等類成員來與該實例交互。隨后,當完成這種交互時,該工作流實例可被保存。
為了實現(xiàn)上述以及相關(guān)的目的,此處結(jié)合以下的描述以及附圖來描述所請 求保護的主題的某些說明性方面。這些方面指示了可實踐本主題的各種方式, 所有這些方面意在落入所請求保護的主題的范圍內(nèi)。當結(jié)合附圖考慮時,其它 優(yōu)點和新穎的特征將從以下的詳細描述中變得明顯。
附圖簡述
圖l示出用于為工作流定義自定義特征的通過訪問組件與工作流交互的宿 主應(yīng)用程序的示例性系統(tǒng)圖示。
圖2示出在基本工作流定義之上構(gòu)建的自定義特征。 圖3示出宿主應(yīng)用程序與工作流實例交互的框圖,其中可在基類之上構(gòu)建 自定義特征。
圖4示出采用具有自定義特性的工作流類型的示例性方法。 圖5示出根據(jù)本發(fā)明的一個特定方面的各進程之間的信息流動的示例性序 列圖示。
圖6示出保存工作流實例的示例性方法。 圖7示出加載工作流實例的示例性方法。
圖8示出根據(jù)本發(fā)明的一個示例性方面的宿主與工作流之間的數(shù)據(jù)交換的 又一個方法。
圖9示出用于實現(xiàn)本發(fā)明的各方面的示例性環(huán)境。
圖10是根據(jù)本發(fā)明的一個方面的可被用來豐富工作流的額外的計算環(huán)境 的示意性框圖。
詳細描述
現(xiàn)在參考附圖描述本發(fā)明主題的各方面,在所有附圖中,相同的標號表示 相同或?qū)?yīng)的元素。然而,應(yīng)該理解,附圖和與其有關(guān)的詳細描述并非意在將 所請求保護的主題限于所公開的具體形式。相反,意在涵蓋落入所請求保護的 主題的精神和范圍之內(nèi)的所有修改、等效技術(shù)方案以及替換技術(shù)方案。
如此處所使用的,術(shù)語"組件"、"系統(tǒng)"、"服務(wù)"等意在指的是計算機相關(guān)的實體,其或者是硬件、硬件和軟件的組合、軟件、或執(zhí)行中的軟件。 例如,組件可以是,但不限于,在處理器上運行的進程、處理器、對象、f5T執(zhí) 行l(wèi)碼、執(zhí)行的線程、程序、和/或計算機。作為說明,在計算機上運行的應(yīng)用程 序和計算機兩者可以是組件。 一個或多個組件可駐留在進程和/或執(zhí)行的線程 內(nèi),并且組件可位于一臺計算機上和/或分布在兩臺或更多的計算機之間。
術(shù)語"示例性"在此處用來表示作為示例、實例或說明。此處作為"示例 性"來描述的任何方面或設(shè)計并不必然被理解為相比其它方面或設(shè)計是優(yōu)選或 有利的。
此外,所公開的主題可被實現(xiàn)為采用標準編程和/或工程技術(shù)來生產(chǎn)軟件、 固件、或它們的任何組合來控制計算機或基于處理器的設(shè)備以實現(xiàn)此處所詳述 的各方面的系統(tǒng)、方法、裝置或制品。此處使用的術(shù)語"計算機程序"意在包 含可從任何計算機可讀設(shè)備、載體或介質(zhì)中訪問的計算機程序。例如,計算機 可讀介質(zhì)可包括但不限于磁存儲設(shè)備(例如,硬盤、軟盤、磁帶......)、光盤
(例如,壓縮盤(CD)、數(shù)字多功能盤(DVD)......)、智能卡和閃存設(shè)備
(例如,卡、棒)。另外,應(yīng)該意識到,可使用載波來承載諸如那些在發(fā)送和 接收電子郵件或在訪問諸如因特網(wǎng)或局域網(wǎng)(LAN)等網(wǎng)絡(luò)時所使用的計算機 可讀電子數(shù)據(jù)。當然,本領(lǐng)域的技術(shù)人員將認識到,在不背離所請求保護的主 題的范圍或精神的情況下可對該配置做出許多修改。
首先轉(zhuǎn)到圖l,示出了用于工作流系統(tǒng)130的框圖,該工作流系統(tǒng)向宿主 110提供對工作流實例的訪問,其中可定義自定義特征以用于運行時的交互。 這種自定義特征(例如,強類型工作流)可包括一個或多個方法、 一個或多個 事件、接口等。工作流可以對被定義為活動圖的人或系統(tǒng)流程建模。 一個活動 是工作流中的一個動作,并且是工作流的執(zhí)行、重復(fù)使用和組成的單元?;顒?圖表達規(guī)則、行動、狀態(tài)以及它們的關(guān)系。通常,工作流通過工作流引擎/運行 庫150來運行,并且根據(jù)如宿主IIO描述的幾個規(guī)則,工作流運行庫需要外部 的應(yīng)用程序來主宿它。
宿主110通過提供對工作流實例的訪問的訪問組件120來與工作流系統(tǒng) 130交互,其中可定義自定義特征以供運行時的交互。這種自定義特征(例如, 強類型工作流)可包括一種或多種方法、 一個或多個事件、 一個或多個特性、
9接口等。因此,工作流可被展示為對象類型或類,其中可添加新的成員并擴展 工作流。這提供了靈活性并且允許用戶與自定義特性交互。
此外,如以下詳細描述的,通過這種訪問組件120,宿主110可與工作流
系統(tǒng)130的工作流實例交換數(shù)據(jù)。宿主IIO可以負責多個另外的且重要的方面, 例如一個或多個工作流的創(chuàng)建,為適當執(zhí)行工作流所需要的各組件之間的調(diào)用 進行的調(diào)度;以及隔離機制的設(shè)置。此外,出于可縮放性的原因,宿主110可 以創(chuàng)建多個進程以便利用機器中的多個中央處理單元(CPU),或在機器農(nóng)場 (farm)上運行大量工作流實例。宿主110還可以控制在工作流經(jīng)歷長時間等 待時應(yīng)用的策略、監(jiān)聽特定的事件并將它們傳達給用戶或管理員、設(shè)置超時時 限和對每個工作流的重試、展示性能計數(shù)器、以及出于調(diào)試和診斷目的而寫日 志信息。
與工作流系統(tǒng)130相關(guān)聯(lián)的工作流可以通過為工作流與外界通信的目的而 專門建立的服務(wù)與外界通信,其中該服務(wù)可以引發(fā)事件,使得工作流內(nèi)的事件 驅(qū)動活動將被掛鉤(hookup)。同樣,該服務(wù)展示供工作流調(diào)用并向宿主110 發(fā)送數(shù)據(jù)的公共方法。工作流可被定義成用于在計算機系統(tǒng)內(nèi)執(zhí)行的進度表的 形式。進度表可包括具有指定的并發(fā)性、依賴性以及與其相關(guān)聯(lián)的事務(wù)屬性的 一組動作。每個進度表具有相關(guān)聯(lián)的進度表狀態(tài),其包括進度表的定義、在進 度表中的當前位置、以及與該進度表相關(guān)聯(lián)的活動或?qū)崨r數(shù)據(jù)和對象。在進度 表內(nèi),事務(wù)邊界可基于動作的分組而存在。在這個方面,事務(wù)可包含個人動作、 或事務(wù)、或動作或事務(wù)的組。如以下進一步討論的,動作可被分組成按串行方 式執(zhí)行的序列,以及其中能并發(fā)執(zhí)行動作的任務(wù)。從而,基于分組,并發(fā)屬性 可被分解,以用于進度表內(nèi)的動作和事務(wù)。
如圖1所示,訪問組件120可創(chuàng)建/檢索工作流實例并將其提供給宿主應(yīng)用 程序以供進一步交互。訪問組件120可提供到工作流實例的句柄以供宿主110 來訪問特性、方法和事件。這樣,訪問組件120可提供工作流的一個實例,其 中該工作流實例是一種工作流類型的。
以下提供了訪問組件120的示例性定義,其中方法 GetWorkflow〈WorkflowType〉提供對運行中的工作流定義及其自定義特性、方 法和事件的訪問(例如,當工作流被閑置時)。對〈WorkflowType〉的基于類屬的機制的這一使用可通常幫助按類型安全的方式獲得強類型工作流定義。
public class InteractiveWorkflow
public event EventHandlei:<SuspensionEventArgs> Suspended,, public event EventHandler<EventArgs〉 Completed,'
public InteractiveWorkflow() { }
public InteractiveWorkflow(Guid workflowlnstanceld〉 { }
public InteractiveWorkflow(Workflowlnstance workflowlnstance){}
public IRootActivity Workflow {get,' } public WorkflowSuspendType SuspendType { get} public string Interactionidentifier { get/ } public string UserName { get/ }
public WorkflowType GetWorkflow<WorkflowType>() where WorkflowType : Activity
public void StartWorkflow(){ }
public void ResumeWorkflow (string action){ }
public void Save() { }
現(xiàn)在參考圖2,示出根據(jù)本發(fā)明的一個方面的從基本工作流定義210中創(chuàng) 建的新工作流定義220和自定義特性的框圖。該類型可以通過添加類成員來擴 展。通常,在這種框架中的主要構(gòu)件塊是活動(Activity),該活動表示當關(guān)聯(lián) 的執(zhí)行(Execute)方法被該框架調(diào)用時所執(zhí)行的工作的一個或多個任務(wù)或單個 邏輯單元。每個活動可提供由特性、方法和事件組成的對象模型,其中該特性、 方法和事件可由開發(fā)者針對應(yīng)用程序代碼進行編程(例如,類似于針對UI控
件和組件的編程)。存在各種不同的活動,并且本發(fā)明允許獨立方構(gòu)建類似于 UI控件等的自定義活動。
例如,該框架可定義一核心的活動基類集,以及少許特定的活動。這可包括StartActivity (開始活動)和StopActivity (停止活動)(表示工作流中的 開始點和停止點);CodeActivity (代碼活動)(允許工作流開發(fā)者實現(xiàn)與工 作流類型中的事件處理程序中的活動相關(guān)聯(lián)的功能);ControlFlowActivity (控 制流活動)(允許工作流開發(fā)者根據(jù)條件和規(guī)則將分支邏輯引入工作流); SuspendableActivity (可掛起活動)(允許工作流開發(fā)者或者按照時間或者通 過切換當前用戶來對工作流的執(zhí)行中的掛起進行建模,例如,DelayActivity(延 遲活動)和SwitchUserActivity (切換用戶活動));InteractiveActivity (交互 式活動)(允許工作流開發(fā)者對用戶交互點進行建模,其中來自最終用戶的動 作決定工作流中的執(zhí)行什么時候以及如何進行下去),該InteractiveActivity可 被視為一種類型的SuspendableActivity,該活動將執(zhí)行掛起直至執(zhí)行了有效動 作;CompositeActivity (合成活動)(允許工作流開發(fā)者將活動合并在一起); LoopActivity (循環(huán)活動)(是CompositeActivity的一個示例,它重復(fù)其包含 的活動的執(zhí)行);IMultiActionActivity (多動作活動接口)(一種被活動實 現(xiàn)的接口,這些活動支持多個動作并且要求在執(zhí)行能繼續(xù)進行并且 InteractiveActivity能實現(xiàn)該接口之前選擇這些動作中的一個); IMuMResultActivity (多結(jié)果活動接口)(一種被活動實現(xiàn)的接口,這些活動 在它們的執(zhí)行期間生成 一 組可能的結(jié)果中的 一 個結(jié)果)并且 ControlFlowActivity (控制流活動)實現(xiàn)這個接口; ISuspendableActivity (可掛 起活動接口)(一種由活動實現(xiàn)的接口,這些活動能為一組特定的等待條件掛 起工作流的執(zhí)行)。
該工作流可通過執(zhí)行所包含的StartActivity來啟動執(zhí)行,并且當執(zhí)行 StopActivity時結(jié)束。在執(zhí)行過程中,可檢査每個活動以驗證它是否被執(zhí)行。 如果由于活動在等待來自宿主的一些信息(例如,消息、定時器等)而使得活 動不能繼續(xù)執(zhí)行,則工作流被(例如)掛起。如果活動可以被執(zhí)行,則調(diào)用關(guān) 聯(lián)的Execute (執(zhí)行)方法,并且如果該方法返回成功的結(jié)果,則使用適當?shù)?活動事務(wù)來確定下一個活動。此外,工作流可出于數(shù)個理由在它們的生命周期
內(nèi)被掛起,諸如取消活動的執(zhí)行,由于活動在等待來自宿主的諸如消息、定 時器等一些信息而使得活動不能夠繼續(xù)執(zhí)行,被引入來延長后續(xù)執(zhí)行的特定延 遲,以及要求由不同用戶執(zhí)行后續(xù)執(zhí)行而進行的用戶上下文的切換。 一旦被掛起,該工作流實例可被串行化至從中可隨后檢索、解串行化以及恢復(fù)它的數(shù)據(jù) 庫或等效的存儲中。如果活動執(zhí)行導致錯誤,且該錯誤沒有被處理,則工作流 還會進入錯誤狀態(tài)。
圖3示出宿主應(yīng)用程序310與工作流實例330交互的框圖,其中可在基類 之上構(gòu)建自定義特性320,其中數(shù)據(jù)傳入和傳出該工作流以形成交互式工作流。 在執(zhí)行過程中,可檢查每個活動以驗證它是否能被執(zhí)行。如果活動不能執(zhí)行, 則工作流被(例如)掛起。如果活動可以被執(zhí)行,則調(diào)用關(guān)聯(lián)的Execute方法, 并且如果該方法返回成功的結(jié)果,則使用適當?shù)幕顒邮聞?wù)來確定下一個活動。 如所示,宿主應(yīng)用程序310可與工作流實例330交換數(shù)據(jù)(例如,獲得數(shù)據(jù))。 這允許工作流實例和宿主應(yīng)用程序之間的受控/同步的數(shù)據(jù)交換,其中自定義方 法和特性可以被調(diào)用。由此,宿主應(yīng)用程序310可與工作流實例交互以便將自 定義行為與工作流類相關(guān)聯(lián)。例如,宿主可訂閱自定義事件來訪問該工作流實 例,以便將工作流作為對象來操控。此外,可通過編程和/或通過可視工具來定 義工作流的豐富類型。
圖4示出根據(jù)本發(fā)明的一個示例性方面的采用自定義特征和/或定義新的 工作流定義的相關(guān)方法。這種新的工作流定義可具有從基本工作流定義中定義 的自定義屬性、自定義方法、自定義事件等。盡管示例性方法在此處被示出并 描述為表示各種事件和/或動作的一系列框,但是本發(fā)明不受這種框所示出的順 序的限制。例如,除了此處所示出的順序之外,某些動作或事件可根據(jù)本發(fā)明 按不同順序發(fā)生和/或與其它動作或事件并發(fā)。另外,不是所有示出的框、事件 或動作都是實現(xiàn)根據(jù)本發(fā)明的方法所必需的。此外,將意識到,根據(jù)本發(fā)明的 示例性方法和其它方法可聯(lián)系此處所示出和描述的方法以及沒有示出或描述 的其它系統(tǒng)和裝置來實現(xiàn)。首先,在410處,獲得工作流提供者,并且然后在 420處,宿主應(yīng)用程序可通過與工作流實例相關(guān)聯(lián)的標識來向該工作流提供者 請求工作流實例。這種標識唯一地標識了工作流的實例并且可通過編程來生成 或由宿主應(yīng)用程序分配而得。在步驟430處,執(zhí)行驗證以檢查該工作流實例是 否存在。如果不存在,則在435處,該方法停止。
否則,該方法前進至動作440,其中該工作流提供者可生成該工作流的一 個實例。然后,宿主應(yīng)用程序通過調(diào)用諸如特性、方法、事件等類成員(460)與該實例交互(450)。當完成這種交互,如以下所詳述的,保存該工作流進程。
圖5示出根據(jù)本發(fā)明的一個特定方面的進程之間的信息流動的示例性序列 圖示。首先,宿主應(yīng)用程序可采用訪問組件(例如, GetWorkflow<WorkflowType>)來獲得工作流定義以及其自定義屬性、方法和 事件(例如,當工作流被閑置時)。對〈WorkflowType〉的基于類屬的機制的這 種使用可通常幫助按類型安全的方式獲得強類型工作流定義。自定義特征(例 如,強類型工作流)可包括一種或多種方法、 一個或多個事件、 一個或多個特 性、接口等。因此,工作流可被展示為對象類型或類,在其中可添加新成員并 擴展工作流。這提供了靈活性并且允許用戶與自定義屬性交互。
工作流提供者510可創(chuàng)建/檢索工作流的實例,并且宿主應(yīng)用程序可通過調(diào) 用諸如特性、方法、事件等類成員來與該實例交互。由此,基于工作流實例標 識(例如,ID號),工作流實例進而可被訪問(例如,通過宿主應(yīng)用程序)。 宿主可通過其與工作流類型/類相關(guān)聯(lián)的自定義行為來與工作流實例進行交互。 例如,宿主可訂閱自定義事件來訪問該工作流實例,以便將該工作流作為對象 來操控??赏ㄟ^編程和/或通過可視工具來定義工作流的豐富類型。
圖6示出與宿主應(yīng)用程序進行數(shù)據(jù)交換期間加載工作流的實例的相關(guān)方法 600。如圖6所示,在610處,提供對存儲工作流實例表示的持久存儲的訪問。 隨后,在步驟620處,從對應(yīng)的持久存儲中獲得該工作流實例狀態(tài)表示。在630 處,該表示可被轉(zhuǎn)換成工作流實例。接著,在640處,向宿主應(yīng)用程序提供工 作流實例,其中宿主可通過其與工作流類型/類相關(guān)聯(lián)的自定義行為來與工作流
實例交互。例如,宿主可訂閱自定義事件來訪問該工作流實例,以便將該工作 流作為對象來操控。通過編程和/或通過可視工具可定義工作流的豐富類型。
類似地,如圖7所示,為了保存工作流的實例,在710處,獲得工作流實 例。隨后,在720處,生成作為該工作流實例的表示的工作流狀態(tài)。然后,在 725處,宿主應(yīng)用程序可通過調(diào)用諸如特性、方法、事件等類成員來與該實例 交互。然后,在730處,與該交互/表示有關(guān)的數(shù)據(jù)可被保存到數(shù)據(jù)存儲和/或 持久服務(wù)實現(xiàn)中。由此,在740處,可引發(fā)工作流運行時保存事件,其中保存 和/或訪問該工作流實例。因此,本發(fā)明允許從基本工作流定義中定義具有自定義特性、自定義方法和自定義事件的新的工作流定義。
工作流提供者可創(chuàng)建/檢索工作流的實例,并且開發(fā)者可通過調(diào)用諸如特 性、方法、事件等類成員來與該實例交互。
圖8示出根據(jù)本發(fā)明的一個方面的訪問運行中的工作流的特定方法800。 首先,在810處,宿主應(yīng)用程序可通過獲取工作流實例標識來訪問運行中的工 作流。隨后,在820處,可通過調(diào)用加載方法訪問該工作流實例,其中表格式 排列將工作流實例與關(guān)聯(lián)標識(ID)相對應(yīng)。接著,在830處,宿主應(yīng)用程序 可與工作流交互。在這種交互期間,且在840處,宿主可與工作流的類型的自 定義行為交互。例如,宿主可訂閱自定義事件來訪問該工作流實例,以便將該 工作流作為對象來操控??赏ㄟ^編程和/或通過可視工具來定義工作流的豐富類 型。
為了為所公開的主題的各個方面提供上下文,圖9和圖10以及以下討論 意在提供對在其中實現(xiàn)所公開的主題的各個方面的合適環(huán)境的簡要、總體描 述。盡管以上主題是在運行于一個計算機和/或多個計算機上的計算機程序的計 算機可執(zhí)行指令的一般上下文中描述的,但本領(lǐng)域的技術(shù)人員將認識到,本發(fā) 明還可結(jié)合其它程序模塊來實現(xiàn)。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特 定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)等等。此外,本領(lǐng)域的技術(shù)人 員將意識到,本發(fā)明方法可用其它計算機系統(tǒng)配置來實現(xiàn),這些配置包括單處 理器或多處理器計算機系統(tǒng)、小型計算設(shè)備、大型計算機以及個人計算機、手 持式計算設(shè)備(例如,個人數(shù)字助理(PDA)、電話、手表......)、基于微處
理器或可編程消費類或工業(yè)電子產(chǎn)品等。所示出的方面還可在其中由通過通信 網(wǎng)絡(luò)鏈接的遠程處理器執(zhí)行任務(wù)的分布式計算環(huán)境中實踐。然而,本發(fā)明的一 些(如果不是所有的)方面可在獨立的計算機上實踐。在分布式計算環(huán)境中, 程序模塊可位于本地和遠程存儲器儲存設(shè)備兩者上。
參考圖9,描述了用于實現(xiàn)本發(fā)明的各個方面的包括計算機912的示例性 環(huán)境910。計算機912包括處理單元914、系統(tǒng)存儲器916和系統(tǒng)總線918。系 統(tǒng)總線918將包括但不限于系統(tǒng)存儲器916的系統(tǒng)組件耦合至處理單元914。 處理單元914可以是各種可用處理器中的任何一種。雙微處理器以及其它多處 理器體系結(jié)構(gòu)也可被用作處理單元914。系統(tǒng)總線918可以是幾種類型的總線結(jié)構(gòu)中的任一種,包括采用任何種類 的可用總線體系結(jié)構(gòu)的存儲器總線或存儲器控制器、外圍總線或外部總線、和 /或局部總線,該可用總線體系結(jié)構(gòu)包括,但不限于,11位總線、工業(yè)標準體
系結(jié)構(gòu)(ISA)、微通道體系結(jié)構(gòu)(MCA)、擴展型ISA (EISA)、智能驅(qū)動 器電子電路(IDE) 、 VESA局部總線(VLB)、外圍部件互聯(lián)(PCI)、通用 串行總線(USB)、高級圖形端口 (AGP)、個人計算機存儲器卡國際聯(lián)合會 總線(PCMCIA)以及小型計算機系統(tǒng)接口 (SCSI)。
系統(tǒng)存儲器916可包括易失性存儲器920和非易失性存儲器922。包含(例 如在啟動期間)在計算機912內(nèi)的元件之間傳輸信息的基本例程的基本輸入/ 輸出系統(tǒng)(BIOS)存儲于非易失性存儲器922中。作為說明,而不是限制,非 易失性存儲器922可包括只讀存儲器(ROM)、可編程ROM (PROM)、電 可編程ROM (EPROM)、電可擦除ROM (EEPROM)或閃存。易失性存儲 器920包括隨機存取存儲器(RAM),其作為外部高速緩沖存儲器。作為說明, 而不是限制,RAM以多種形式可得,諸如同步RAM (SRAM)、動態(tài)RAM (DRAM)、同步DRAM (SDRAM)、雙數(shù)據(jù)率SDRAM (DDR SDRAM)、 增強型SDRAM (ESDRAM)、同步鏈環(huán)(Synchlink) DRAM (SLDRAM)以 及直接存儲器總線(Rambus) RAM (DRRAM)。
計算機912還包括可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)。 例如,圖9示出了盤存儲924。盤存儲924包括,但不限于,如磁盤驅(qū)動器、 軟盤驅(qū)動器、磁帶驅(qū)動器、Jaz驅(qū)動器、Zip驅(qū)動器、LS-100驅(qū)動器、閃存卡、 或記憶棒等設(shè)備。另外,盤存儲924可以包括與其它存儲介質(zhì)分開或組合的存 儲介質(zhì),其包括,但不限于,諸如壓縮盤ROM設(shè)備(CD-ROM)、可記錄CD 驅(qū)動器(CD-R驅(qū)動器)、CD可重寫驅(qū)動器(CD-RW驅(qū)動器)或數(shù)字多功能 盤ROM驅(qū)動器(DVD-ROM)等光盤驅(qū)動器。為了方便盤存儲設(shè)備924與系 統(tǒng)總線918的連接,通常采用諸如接口 926等可移動或不可以動接口。
應(yīng)該意識到,圖9描述了作為用戶與合適的操作環(huán)境910中所描述的基本 計算機資源之間的中介的軟件。這樣的軟件包括操作系統(tǒng)928。能存儲于盤存 儲924上的操作系統(tǒng)928用來控制并分配計算機系統(tǒng)912的資源。系統(tǒng)應(yīng)用程 序930通過或是存儲于系統(tǒng)存儲器916或是存儲于盤存儲924上的程序模塊932和程序數(shù)據(jù)934利用操作系統(tǒng)928對資源的管理。應(yīng)該意識到,此處描述 的各種組件可以與各種操作系統(tǒng)或操作系統(tǒng)的組合一起實現(xiàn)。
用戶通過(諸)輸入設(shè)備936向計算機912輸入命令或信息。輸入設(shè)備936 包括,但不限于,諸如鼠標、跟蹤球、指示筆、觸摸墊等定點設(shè)備、鍵盤、話 筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀、TV調(diào)頻卡、數(shù)碼照相機、 數(shù)碼攝像機、web攝像頭等。這些或其它輸入設(shè)備經(jīng)由(諸)接口端口 938通 過系統(tǒng)總線918連接到處理單元914。(諸)接口端口 938包括,例如,串行 端口、并行端口、游戲端口以及通用串行總線(USB)。(諸)輸出設(shè)備940 使用與(諸)輸入設(shè)備936同樣類型的端口中的一些端口。因此,例如,可以 使用USB端口來向計算機912提供輸入并且將計算機912中的信息輸出至輸 出設(shè)備940。提供輸出適配器942用來說明存在諸如監(jiān)視器、揚聲器、以及打 印機等一些輸出設(shè)備940,以及需要專用適配器的其它輸出設(shè)備940。作為說 明而非限制,輸出適配器942包括提供輸出設(shè)備940與系統(tǒng)總線918之間的連 接手段的顯卡和聲卡。應(yīng)該注意,其它設(shè)備和/或設(shè)備的系統(tǒng)(例如(諸)遠程 計算機944)提供輸入和輸出能力兩者。
計算機912可以采用與(諸)遠程計算機944等一個或多個遠程計算機的 邏輯連接而在聯(lián)網(wǎng)環(huán)境中操作。(諸)遠程計算機944可以是個人計算機、服 務(wù)器、路由器、網(wǎng)絡(luò)PC、工作站、基于微處理器的電器、對等設(shè)備或其它常 見的網(wǎng)絡(luò)節(jié)點等等,并且通常包括與關(guān)于計算機912所描述的元件中的許多或 所有元件。為了簡明起見,對于(諸)遠程計算機944只描述了存儲器存儲設(shè) 備946。(諸)遠程計算機944通過網(wǎng)絡(luò)接口 948與計算機912邏輯連接,并 且然后通過通信連接950被物理連接。網(wǎng)絡(luò)接口 948包括諸如局域網(wǎng)(LAN) 和廣域網(wǎng)(WAN)等通信網(wǎng)絡(luò)。LAN技術(shù)包括光纖分布式數(shù)據(jù)接口 (FDDI)、 銅分布式數(shù)據(jù)接口 (CDDI)、以太網(wǎng)/IEEE802.3、令牌環(huán)/IEEE 802.5等。WAN 技術(shù)包括,但不限于,點對點鏈路、諸如綜合業(yè)務(wù)數(shù)字網(wǎng)絡(luò)(ISDN)及其變 型等電路交換網(wǎng)絡(luò)、分組交換網(wǎng)絡(luò)、以及數(shù)字用戶線(DSL)。
(諸)通信連接950指的是用來將網(wǎng)絡(luò)接口 948與總線918相連接的硬件 /軟件。盡管通信連接950為了清楚說明起見被示于計算機912內(nèi),但它還可以 在計算機912外部。連接到網(wǎng)絡(luò)接口 948所必需的硬件/軟件包括(僅出于示例性目的)內(nèi)部和外部技術(shù),例如,包括常規(guī)電話級調(diào)制解調(diào)器、電纜調(diào)制解調(diào)
器和DSL調(diào)制解調(diào)器等的調(diào)制解調(diào)器、ISDN適配器、和以太網(wǎng)卡。
圖IO是可用來實現(xiàn)本發(fā)明的工作流實現(xiàn)的示例計算環(huán)境1000的示意性框 圖。系統(tǒng)1000包括一個或多個客戶機1010。(諸)客戶機1010可以是硬件和 /或軟件(例如,線程、進程、計算設(shè)備)。系統(tǒng)1000還包括一個或多個服務(wù) 器1030。(諸)服務(wù)器1030可以是硬件和/或軟件(例如,線程、進程、計算 設(shè)備)。服務(wù)器1030可以容納線程以便通過采用例如此處描述的組件來執(zhí)行 轉(zhuǎn)換??蛻魴C1010與服務(wù)器1030之間的一個可能的通信可以采用適用于在兩 個或更多計算機進程之間傳輸?shù)臄?shù)據(jù)分組的形式。系統(tǒng)1000包括能用來幫助 (諸)客戶機1010與(諸)服務(wù)器1030之間進行通信的通信框架1050。(諸) 客戶機IOIO可操作地連接到能被用來存儲對(諸)客戶機IOIO本地的信息的 一個或多個客戶機數(shù)據(jù)存儲1060。類似地,(諸)服務(wù)器1130可操作地連接 到能被用來存儲對服務(wù)器1030本地的信息的一個或多個服務(wù)器數(shù)據(jù)存儲 1040。
以上已描述的包括各種示例性方面。當然,不可能為了描述這些方面而描 述每個可以想到的元件或方法的組合,但是本領(lǐng)域的普通技術(shù)人員可以認識到 可能會有許多進一步的組合與排列。因此,此處所描述的方面意在包括落入所 附權(quán)利要求的精神和范圍內(nèi)的所有這些更改、修改以及變型。此外,就在詳細 描述或者權(quán)利要求中使用的術(shù)語"包括"的意思來說,這個術(shù)語意在以當術(shù)語 "包括"作為權(quán)利要求中的過渡詞使用時所解釋的那種方式表示為"包括在 內(nèi),,。
權(quán)利要求
1.一種包括以下計算機可執(zhí)行組件的計算機實現(xiàn)的系統(tǒng),所述組件包括向宿主(110)提供對工作流實例的訪問的訪問組件(120);以及在與所述工作流實例的數(shù)據(jù)交換期間調(diào)用自定義特征的所述宿主(110)。
2. 如權(quán)利要求1所述的計算機實現(xiàn)的系統(tǒng),其特征在于,所述自定義特征是用于強類型工作流的方法、特性和事件中的至少一個。
3. 如權(quán)利要求1所述的計算機實現(xiàn)的系統(tǒng),其特征在于,與所述工作流實 例相關(guān)聯(lián)的工作流可被展示為對象類型或類。
4. 如權(quán)利要求3所述的計算機實現(xiàn)的系統(tǒng),其特征在于,所述工作流的定 義可通過添加新成員來擴展。
5. 如權(quán)利要求1所述的計算機實現(xiàn)的系統(tǒng),其特征在于,與所述工作流實 例相關(guān)聯(lián)的自定義工作流定義在與所述宿主交換數(shù)據(jù)期間可被掛起。
6. 如權(quán)利要求5所述的計算機實現(xiàn)的系統(tǒng),其特征在于,所述系統(tǒng)還包括 檢索所述工作流實例的工作流提供者。
7. 如權(quán)利要求5所述的計算機實現(xiàn)的系統(tǒng),其特征在于,所述工作流實例 可通過所述宿主的動作而繼續(xù)。
8. 如權(quán)利要求5所述的計算機實現(xiàn)的方法,其特征在于,具有基類的工作 流定義從所述基類中導出新的工作流定義。
9. 一種包括以下計算機可執(zhí)行動作的計算機實現(xiàn)的方法,所述動作包括: 通過一工作流系統(tǒng)的訪問組件訪問工作流實例;以及在宿主與所述工作流實例進行數(shù)據(jù)交換期間調(diào)用自定義特征。
10. 如權(quán)利要求9所述的計算機實現(xiàn)的方法,其特征在于,所述動作還包 括基于與所述工作流實例相關(guān)聯(lián)的標識來請求所述工作流實例。
11. 如權(quán)利要求IO所述的計算機實現(xiàn)的方法,其特征在于,所述動作還包 括驗證所述工作流實例的存在。
12. 如權(quán)利要求9所述的計算機實現(xiàn)的方法,其特征在于,所述動作還包 括在所述宿主與所述工作流實例進行數(shù)據(jù)交換期間使用類成員。
13. 如權(quán)利要求9所述的計算機實現(xiàn)的方法,其特征在于,所述動作還包括為所述工作流實例生成工作流狀態(tài)表示。
14. 如權(quán)利要求13所述的計算機實現(xiàn)的方法,其特征在于,所述動作還包 括在所述宿主與所述工作流實例進行數(shù)據(jù)交換期間定義自定義特征。
15. 如權(quán)利要求14所述的計算機實現(xiàn)的方法,其特征在于,所述動作還包 括將自定義行為與同所述工作流實例相關(guān)聯(lián)的工作流定義或類型相關(guān)聯(lián)。
16. 如權(quán)利要求15所述的計算機實現(xiàn)的方法,其特征在于,所述動作還包 括由所述宿主訂閱自定義事件。
17. 如權(quán)利要求16所述的計算機實現(xiàn)的方法,其特征在于,所述動作還包 括通過編程為所述工作流實例定義豐富的類型。
18. 如權(quán)利要求17所述的計算機實現(xiàn)的方法,其特征在于,所述動作還包 括通過添加新成員來擴展所述工作流定義。
19. 如權(quán)利要求18所述的計算機實現(xiàn)的方法,其特征在于,所述動作還包 括調(diào)用保存方法以存儲所述工作流實例。
20. —種包括以下計算機可執(zhí)行組件的計算機實現(xiàn)的系統(tǒng),所述組件包括: 用于基于與工作流實例相關(guān)聯(lián)的自定義工作流定義來訪問所述工作流實例的裝置(120);以及用于從基本工作流定義中創(chuàng)建新的工作流的裝置(110)。
全文摘要
通過提供對實際工作流實例的訪問的訪問組件來對象化工作流和管理行為的意圖的系統(tǒng)和方法。本發(fā)明允許定義自定義特征以用于運行時的交互。例如,自定義特征(例如,強類型工作流)可包括一種或多種方法、一個或多個事件、一個或多個特性、一接口等等。因此,工作流可被展示為對象類型或類,其中新成員可被添加并且工作流可被擴展。
文檔編號G06F9/44GK101317153SQ200680044769
公開日2008年12月3日 申請日期2006年12月7日 優(yōu)先權(quán)日2005年12月29日
發(fā)明者A·薩納布里阿, C·米哈, I·西勒羅, M·哈德, N·科塔里, P·E·梅比 申請人:微軟公司