亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

通過工作流事務(wù)的批處理來同步運(yùn)行庫和應(yīng)用狀態(tài)的制作方法

文檔序號(hào):6651114閱讀:213來源:國知局

專利名稱::通過工作流事務(wù)的批處理來同步運(yùn)行庫和應(yīng)用狀態(tài)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明的實(shí)施例一般涉及工作流建模的領(lǐng)域,尤其涉及通過批處理未提交工作來跨通信組件維護(hù)持久狀態(tài)的一致性。
背景技術(shù)
:現(xiàn)有的軟件系統(tǒng)試圖通過對(duì)商業(yè)問題建模將商業(yè)問題映射到高級(jí)工作流。一般而言,工作流處理涉及一系列任務(wù)或動(dòng)作、必須執(zhí)行它們的順序、定義誰能夠執(zhí)行它們的許可、以及對(duì)每一動(dòng)作執(zhí)行的腳本。工作流也可按照狀態(tài)和事件來描述。工作流引擎可以是啟用工作流的軟件系統(tǒng)的組件,它實(shí)施工作流定義并執(zhí)行工作流動(dòng)作。工作流引擎具有三個(gè)主要功能。首先,它驗(yàn)證改變對(duì)當(dāng)前工作流狀態(tài)是否有效。其次,它檢查當(dāng)前用戶是否具有執(zhí)行工作流事件的許可。第三,如果事件是有效的,且用戶具有執(zhí)行該事件的許可,則工作流引擎準(zhǔn)許執(zhí)行。例如,在管理諸如發(fā)布新聞文章所涉及的一系列任務(wù)時(shí),必須執(zhí)行一系列工作項(xiàng)。在本示例中,任務(wù)包括寫文章、編輯所寫的文章、審閱所編輯的文章、以及發(fā)布所編輯的文章。典型的工作流引擎可請(qǐng)求不同的服務(wù)提供者組件(例如,寫組件、編輯組件、審閱組件和發(fā)布組件)執(zhí)行這些工作項(xiàng)或任務(wù)。軟件系統(tǒng)的工作流引擎/組件有規(guī)律地與其它組件(例如,寫組件、編輯組件等)進(jìn)行通信,以監(jiān)視各工作項(xiàng)的狀態(tài)。同時(shí),這些組件也可監(jiān)視這些工作項(xiàng)的狀態(tài)或?qū)ζ湓O(shè)檢查點(diǎn)。遺憾的是,這些組件沒有用于保持其持久狀態(tài)一致的機(jī)制。例如,工作流引擎在執(zhí)行工作流期間可調(diào)用不同的組件來執(zhí)行多個(gè)工作項(xiàng)。工作流引擎可向這些組件發(fā)送若干消息,以確定工作項(xiàng)的狀態(tài)。所發(fā)送的每一消息調(diào)用消息通信服務(wù)提供者組件。由于要求消息通信組件維護(hù)關(guān)于工作流的一致且持久的狀態(tài),因此除非可成功地持久保存工作流狀態(tài),否則不應(yīng)當(dāng)發(fā)送消息。遺憾的是,這一類型的垂直集成的軟件系統(tǒng)設(shè)計(jì)方法(即,實(shí)際上在數(shù)據(jù)到達(dá)之后執(zhí)行工作流)具有許多缺點(diǎn)。例如,當(dāng)一個(gè)組件正在執(zhí)行特定的任務(wù)或工作項(xiàng)時(shí),其它組件可能不知道該特定工作項(xiàng)的狀態(tài)(例如,已完成、正在執(zhí)行或已放棄)。另外,當(dāng)在執(zhí)行要執(zhí)行的工作流中的一個(gè)或多個(gè)工作項(xiàng)時(shí)存在故障時(shí),由于缺少狀態(tài)知識(shí),可能要求工作流引擎重新執(zhí)行整個(gè)工作流。因此,需要工作流管理中的改進(jìn)來解決這些和其它缺點(diǎn)中的一個(gè)或多個(gè),該改進(jìn)通過一種機(jī)制來同步工作項(xiàng)的運(yùn)行庫和應(yīng)用狀態(tài),該機(jī)制用于批處理工作流事務(wù),以及用于通過批處理事務(wù)來使工作流引擎能夠延遲工作項(xiàng)的執(zhí)行并跨通信組件維護(hù)工作項(xiàng)的持久狀態(tài)的一致性。
發(fā)明內(nèi)容本發(fā)明的實(shí)施例便于組件在持久事務(wù)中共享。換言之,這些實(shí)施例準(zhǔn)許在單個(gè)事務(wù)中向持久存儲(chǔ)提交工作流狀態(tài)和未決的消息通信狀態(tài),這確保“設(shè)了檢查點(diǎn)的”狀態(tài)跨所有的組件是一致的。本發(fā)明的實(shí)施例包括一工作流組件,它在其對(duì)服務(wù)提供者組件的所有調(diào)用或分配的線程調(diào)用上下文中浮動(dòng)批量工作對(duì)象。服務(wù)提供者組件可選擇向該批量工作添加工作,該批量工作將在提交時(shí)將所有的動(dòng)作作為單個(gè)事務(wù)來處理。依照一方面,一種方法管理工作流中的狀態(tài)。定義要執(zhí)行的一個(gè)或多個(gè)工作項(xiàng)。該一個(gè)或多個(gè)定義的工作項(xiàng)被分配給一個(gè)或多個(gè)服務(wù)提供者組件用于執(zhí)行。該一個(gè)或多個(gè)分配的工作項(xiàng)在稍后的時(shí)候由一個(gè)或多個(gè)服務(wù)提供者組件批處理。持久保存一個(gè)或多個(gè)批處理的工作項(xiàng)的狀態(tài)。當(dāng)一個(gè)或多個(gè)服務(wù)提供者組件執(zhí)行這一個(gè)或多個(gè)提交的工作項(xiàng)時(shí),一個(gè)或多個(gè)服務(wù)提供者組件提交執(zhí)行一個(gè)或多個(gè)批處理的工作項(xiàng)。依照另一方面,一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)具有用于管理工作流中的狀態(tài)的計(jì)算機(jī)可執(zhí)行指令。工作流組件分配要執(zhí)行的一個(gè)或多個(gè)工作項(xiàng)。工作流組件定義一個(gè)或多個(gè)工作項(xiàng),并且工作流組件在稍后的時(shí)候批處理一個(gè)或多個(gè)分配的工作項(xiàng)。一個(gè)或多個(gè)服務(wù)提供者組件提交執(zhí)行一個(gè)或多個(gè)批處理的工作項(xiàng)。依照又一方面,一種系統(tǒng)維護(hù)服務(wù)的持久狀態(tài)。工作流引擎分配要執(zhí)行的一個(gè)或多個(gè)工作項(xiàng)。工作流引擎定義一個(gè)或多個(gè)工作項(xiàng),并且工作流在稍后的時(shí)間批處理一個(gè)或多個(gè)分配的工作項(xiàng)。服務(wù)提供者提交執(zhí)行一個(gè)或多個(gè)分配的工作項(xiàng)。在再一方面,一種方法管理可由第一宿主環(huán)境執(zhí)行的一個(gè)或多個(gè)工作項(xiàng)的工作流。在第一宿主環(huán)境處接收到執(zhí)行一個(gè)或多個(gè)工作項(xiàng)的分配。一個(gè)或多個(gè)分配的工作項(xiàng)被追加到第一宿主環(huán)境處的批量工作,指示該一個(gè)或多個(gè)分配的工作項(xiàng)要由第一宿主環(huán)境在稍后的時(shí)間執(zhí)行。在第一宿主環(huán)境處接收?qǐng)?zhí)行一個(gè)或多個(gè)分配的工作項(xiàng)的請(qǐng)求。第一宿主環(huán)境執(zhí)行該一個(gè)或多個(gè)請(qǐng)求的工作項(xiàng)。或者,本發(fā)明可包括各種其它方法和裝置。其它特征部分將變得顯而易見,部分將在后文中指出。圖1是依照本發(fā)明的一個(gè)實(shí)施例示出用于通過批處理未提交的工作來跨通信組件維護(hù)持久狀態(tài)的一致性的系統(tǒng)的框圖的一個(gè)示例性實(shí)施例。圖2是依照本發(fā)明的一個(gè)實(shí)施例示出通過服務(wù)提供者組件批處理工作項(xiàng)的示例性流程圖。圖3是依照本發(fā)明的一個(gè)實(shí)施例示出對(duì)一個(gè)或多個(gè)追加的工作項(xiàng)的事務(wù)的示例性框圖。圖4是依照本發(fā)明的一個(gè)實(shí)施例示出通過批處理未提交的工作來跨通信組件維護(hù)持久狀態(tài)的一致性的操作的示例性流程圖。圖5是示出其中可實(shí)現(xiàn)本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境的一個(gè)示例的框圖。貫穿附圖,對(duì)應(yīng)的參考標(biāo)號(hào)表示對(duì)應(yīng)的部分。具體實(shí)施例方式首先參考圖1,框圖依照本發(fā)明的一個(gè)實(shí)施例示出了用于通過批處理未提交的工作來跨通信組件維護(hù)持久狀態(tài)的一致性的系統(tǒng)100。系統(tǒng)100包括但不限于,工作流組件102、一個(gè)或多個(gè)服務(wù)提供者組件104以及持久存儲(chǔ)106。在一個(gè)實(shí)施例中,系統(tǒng)100是由一個(gè)或多個(gè)組件(例如,工作流組件102、服務(wù)提供者組件104等)構(gòu)成的軟件系統(tǒng)。在另一實(shí)施例中,系統(tǒng)100是由包括本發(fā)明的實(shí)施例的一個(gè)或多個(gè)應(yīng)用和/或軟件系統(tǒng)構(gòu)成的集成軟件應(yīng)用系統(tǒng),如企業(yè)應(yīng)用集成系統(tǒng)。工作流組件102以由服務(wù)提供者組件104(例如,104-1到104-N)執(zhí)行的任務(wù)的形式來管理工作。圖1中的服務(wù)提供者組件104-1到104-N是提供各種服務(wù)或工作項(xiàng)的組件。例如,服務(wù)提供者組件104-1可以是提供諸如接收用戶搜索查詢、接收在線產(chǎn)品定單等的Web服務(wù)的組件。在一個(gè)實(shí)施例中,服務(wù)提供者組件104是系統(tǒng)100(也稱為宿主環(huán)境)的一部分,且服務(wù)提供者組件104是宿主。在另一環(huán)境中,服務(wù)提供者組件104的某些或全部在系統(tǒng)100之外。例如,服務(wù)提供者組件104-1可以在與服務(wù)提供者組件104-2分離的軟件應(yīng)用程序或系統(tǒng)中。在又一實(shí)施例中,由服務(wù)提供者組件104執(zhí)行的工作項(xiàng)的示例可包括,但不限于,消息通信、實(shí)例、事務(wù)、持久性、線程化、定時(shí)器、角色、跟蹤等。盡管圖1所示的工作流組件102和服務(wù)提供者組件104是系統(tǒng)100的一部分,然而可以理解,這些組件(即,工作流組件102、服務(wù)提供者組件104和/或持久存儲(chǔ)106)可以是單獨(dú)的系統(tǒng)(例如,單獨(dú)的宿主環(huán)境)的一部分。例如,工作流組件102可以在獨(dú)立的軟件應(yīng)用程序中,而服務(wù)提供者組件104-1和/或服務(wù)提供者組件104-2可以在諸如文字處理軟件、電子表格軟件等單獨(dú)的軟件中。最初,工作流組件102具有要執(zhí)行的一系列工作項(xiàng)。例如,在提供Web服務(wù)的系統(tǒng)中,可能需要一系列工作項(xiàng)來組成用于銷售新產(chǎn)品的新網(wǎng)頁。工作項(xiàng)或任務(wù)包括,但不限于,提供產(chǎn)品的圖片、提供產(chǎn)品的描述、搜索產(chǎn)品可供性等等。在本實(shí)例中,服務(wù)提供者組件104-1到104-N提供了實(shí)現(xiàn)或執(zhí)行這些工作項(xiàng)的全部或部分的服務(wù)。如圖1所示,服務(wù)提供者組件104也可與持久存儲(chǔ)106交互,而非僅與工作流組件102直接交互。給定這一系列工作項(xiàng),工作流組件102首先定義這些工作項(xiàng)的執(zhí)行。在上述組成新網(wǎng)頁的示例中,工作流組件102定義了工作項(xiàng)的執(zhí)行順序,諸如在提供產(chǎn)品描述之前提供產(chǎn)品圖片等等。另外,工作流組件102定義了其它規(guī)則,諸如最終期限和/或其它業(yè)務(wù)規(guī)則。例如,工作流組件102可施加組成新網(wǎng)頁的完成最終期限,和/或當(dāng)新產(chǎn)品對(duì)在線顧客可用時(shí)施加頭兩天的折扣,等等。可以理解,可以向工作流組件102提供用于執(zhí)行工作項(xiàng)的其它規(guī)則和/或定義。一旦定義了這些工作項(xiàng)系列,工作流組件102將這些工作項(xiàng)分配給一個(gè)或多個(gè)服務(wù)提供者組件104。現(xiàn)在參考圖2,流程圖依照本發(fā)明的一個(gè)實(shí)施例示出了通過服務(wù)提供者組件104對(duì)工作項(xiàng)的批處理。例如,在調(diào)用服務(wù)提供者組件之前,工作流組件102在208對(duì)一系列工作項(xiàng)創(chuàng)建批量工作。在210-1,工作流組件102通過向服務(wù)提供者組件A(例如,服務(wù)提供者組件104-1)發(fā)送消息來分配工作項(xiàng)(例如,提供新產(chǎn)品的圖片)。換言之,工作流組件102將批量工作附加到對(duì)服務(wù)提供者組件A的操作的調(diào)用上。服務(wù)提供者組件A進(jìn)而創(chuàng)建第一工作項(xiàng),并將其追加到批量工作。類似地,工作流組件102通過212-1向服務(wù)提供者組件B(例如,服務(wù)提供者組件104-2)分配另一工作(例如,提供新產(chǎn)品的描述)。在一個(gè)實(shí)施例中,工作流組件102通過請(qǐng)求服務(wù)提供者組件A延遲對(duì)工作項(xiàng)的執(zhí)行來向服務(wù)提供者組件A分配工作項(xiàng)。例如,工作流組件102請(qǐng)求服務(wù)提供者組件A直到工作流組件102指令服務(wù)提供者組件A執(zhí)行之后才執(zhí)行工作項(xiàng)。在另一實(shí)施例中,工作流組件102可創(chuàng)建一個(gè)或多個(gè)批量工作,其每一個(gè)包含要由各服務(wù)提供者組件104執(zhí)行的一系列工作項(xiàng)??梢岳斫?,工作流組件102可請(qǐng)求服務(wù)提供者組件A執(zhí)行工作項(xiàng),并且服務(wù)提供者組件A將所分配的工作項(xiàng)的一方面追加到批量工作,而非追加整個(gè)工作項(xiàng)。例如,由服務(wù)提供者組件A追加到批量工作的工作項(xiàng)可以是來自工作流組件102的請(qǐng)求的數(shù)據(jù)庫元素。在另一示例中,由服務(wù)提供者組件B追加到批量工作的工作項(xiàng)可以是來自工作流組件102的同一請(qǐng)求的不同方面。也可以理解,可以發(fā)生工作流組件102和每一服務(wù)提供者組件(例如,服務(wù)提供者組件A)之間的多個(gè)交互。例如,工作流組件102可通過210-2向服務(wù)提供者組件A(或通過212-2向服務(wù)提供者組件B)分配一個(gè)以上工作項(xiàng),并且服務(wù)提供者組件A通過214-2將一個(gè)或多個(gè)分配的工作項(xiàng)追加到批量工作(或者服務(wù)提供者組件B通過216-2將一個(gè)或多個(gè)分配的工作項(xiàng)追加到批量工作)。在另一示例中,工作流組件102創(chuàng)建與分配給特定服務(wù)提供者組件的工作項(xiàng)相關(guān)聯(lián)的批量工作。例如,工作流組件102可對(duì)來自服務(wù)提供者組件A的工作項(xiàng)創(chuàng)建批量工作,并對(duì)來自服務(wù)提供者組件B的工作項(xiàng)創(chuàng)建另一批量工作。由此,工作流組件102按需對(duì)每一服務(wù)提供者組件創(chuàng)建批量工作。服務(wù)提供者組件A經(jīng)由214-1,通過向批量工作追加或添加所分配的工作項(xiàng)來響應(yīng)于工作流組件102。類似地,服務(wù)提供者組件B通過216-1向批量工作追加工作項(xiàng)。例如,使用上述示例,服務(wù)提供者組件104-1向工作流102發(fā)送它能夠提供用于組成新網(wǎng)絡(luò)的新產(chǎn)品圖片的消息。類似地,服務(wù)提供者組件104-2向工作流組件102發(fā)送它能夠提供新產(chǎn)品描述的消息??梢詷?gòu)想,工作流組件102可能不知道特定服務(wù)提供者組件104如何執(zhí)行特定工作項(xiàng)的細(xì)節(jié)。使用上述為新產(chǎn)品組成新網(wǎng)頁的示例,可要求服務(wù)提供者組件104-1訪問包含大量產(chǎn)品圖片的數(shù)據(jù)庫,以定位該新產(chǎn)品的圖片。類似地,可要求服務(wù)提供者組件104-2訪問包含產(chǎn)品描述的數(shù)據(jù)庫,和/或如果數(shù)據(jù)庫中沒有產(chǎn)品描述可用,可要求服務(wù)提供者組件104-2讓人工干預(yù)來提供新描述。盡管圖2中僅示出了兩個(gè)服務(wù)提供者組件A和B,然而可以理解,可向這些和其它服務(wù)提供者組件分配額外的工作項(xiàng)。也可以理解,服務(wù)提供者組件104可拒絕執(zhí)行從工作流組件102分配的工作項(xiàng)。在從服務(wù)提供者組件104接收到消息之后,工作流組件102在226創(chuàng)建用于持久保存工作項(xiàng)狀態(tài)的包含批處理的工作項(xiàng)的事務(wù)。例如,工作流組件102可在預(yù)定點(diǎn)或時(shí)間創(chuàng)建事務(wù)。在218-1,工作流組件102請(qǐng)求服務(wù)提供者組件A持久保存批處理的工作項(xiàng)(例如,提供新產(chǎn)品的圖片)。換言之,工作流組件102向服務(wù)提供者組件A請(qǐng)求批處理的工作項(xiàng)的執(zhí)行狀態(tài)。服務(wù)提供者組件A在222-1通過指示批處理的工作項(xiàng)的狀態(tài),諸如“未執(zhí)行”、“已完成”、“正在執(zhí)行”、“已放棄”等來響應(yīng)工作流組件102??梢岳斫?,可向工作流組件102提供對(duì)應(yīng)于特定工作項(xiàng)的一個(gè)或多個(gè)其它狀態(tài)。類似地,工作流組件102在220-1請(qǐng)求服務(wù)提供者組件B(例如,服務(wù)提供者組件104-2)持久保存批處理的工作項(xiàng)(例如,提供新產(chǎn)品的描述)的執(zhí)行狀態(tài),并且服務(wù)提供者組件B在224-1響應(yīng)該請(qǐng)求。也可以理解,工作流組件102可向服務(wù)提供者組件A發(fā)送關(guān)于另一批處理的工作項(xiàng)的執(zhí)行狀態(tài)的多個(gè)請(qǐng)求(例如,218-2)。同樣,服務(wù)提供者組件A可響應(yīng)工作流組件102(例如,在222-2),以指示另一所請(qǐng)求的批處理的工作項(xiàng)的狀態(tài)。依照本發(fā)明的一個(gè)實(shí)施例,工作流組件102創(chuàng)建事務(wù)來持久保存狀態(tài)。工作流組件102在批量工作上迭代,并收集用于服務(wù)提供者組件A的所有工作項(xiàng)。在這一情況下,工作流組件102維護(hù)工作項(xiàng)之間的順序,以創(chuàng)建特定的批量工作。在提交點(diǎn),工作流組件102在調(diào)用服務(wù)提供者組件A的操作時(shí)傳遞事務(wù)和批量工作。服務(wù)組件A將批量工作中的工作項(xiàng)添加到事務(wù)。換言之,工作項(xiàng)被持久保存。可對(duì)具有批量工作中的項(xiàng)的所有組件重復(fù)這些過程。在提交通知或消息成功之后,工作流102提交該事務(wù)。然后,在成功地提交事務(wù)之后,工作流組件102在該批量工作上迭代,并收集每一組件(如上所述,對(duì)服務(wù)提供者組件A)的所有工作項(xiàng)。工作流組件102下一步將工作項(xiàng)的狀態(tài)儲(chǔ)存在由服務(wù)提供者組件104提供的持久存儲(chǔ)106中。例如,服務(wù)提供者組件104提供其整個(gè)資源環(huán)境,諸如持久存儲(chǔ)106,以供工作流組件102儲(chǔ)存工作項(xiàng)的狀態(tài)。類似地,交互(例如,圖1中服務(wù)提供者組件104-N和持久存儲(chǔ)106之間的箭頭)是示出服務(wù)提供者組件104-N訪問工作流102的持久存儲(chǔ)106來存儲(chǔ)工作項(xiàng)的狀態(tài)的示例。也可以理解,盡管在圖1中僅示出了一個(gè)持久存儲(chǔ)106,多個(gè)持久存儲(chǔ)可以對(duì)工作流組件102可用,以儲(chǔ)存工作項(xiàng)的狀態(tài)。持久存儲(chǔ)106可以是用于儲(chǔ)存諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)(例如,圖5中的系統(tǒng)存儲(chǔ)器134)。有了儲(chǔ)存的工作項(xiàng)的持久狀態(tài),工作流組件102能夠維護(hù)工作項(xiàng)的一致性。換言之,工作流組件102規(guī)則地對(duì)工作項(xiàng)設(shè)檢查點(diǎn),并在檢查點(diǎn)處儲(chǔ)存工作項(xiàng)的狀態(tài),以維護(hù)所有工作項(xiàng)的持久狀態(tài)。在228,工作流組件102提交事務(wù)。換言之,工作流組件102請(qǐng)求服務(wù)提供者組件104提交批處理的工作項(xiàng)的執(zhí)行。再次參考上文組成新產(chǎn)品的新網(wǎng)頁的示例,在工作流組件102分配了完成任務(wù)所需的所有工作之后,工作流組件102請(qǐng)求服務(wù)提供者組件提供新產(chǎn)品的圖片、提供新產(chǎn)品的描述等等。可以理解,通過工作流的這一分配、批處理和提交,工作流組件102有助于解決在分配之后執(zhí)行/實(shí)現(xiàn)工作項(xiàng)的垂直集成模型的劣勢和缺點(diǎn)。通過提供這一延遲的執(zhí)行,工作流組件102在要求工作項(xiàng)用于執(zhí)行/實(shí)現(xiàn)時(shí)進(jìn)行管理,同時(shí)維護(hù)了工作項(xiàng)的一致狀態(tài)。同時(shí),每一服務(wù)提供者組件104也具有其它服務(wù)提供者組件104在特定的批量工作或事務(wù)中所具有的工作項(xiàng)的一致視圖。作為示例而非局限,消息通信服務(wù)提供者組件中的“Send(發(fā)送)”消息可導(dǎo)致對(duì)包含特別SQL(結(jié)構(gòu)化查詢語言)的對(duì)象的構(gòu)造。在這一示例中,消息通信服務(wù)提供者組件向批量工作添加對(duì)象,即Work(工作)項(xiàng)。在由工作流組件確定的預(yù)定提交點(diǎn),創(chuàng)建事務(wù)。此外,將所有未決的已分配工作項(xiàng)給予該事務(wù),并且指令服務(wù)提供者組件提交執(zhí)行/實(shí)現(xiàn)這些工作項(xiàng)。此時(shí),例如,消息通信服務(wù)提供者組件執(zhí)行適用于執(zhí)行SQL的任何動(dòng)作作為事務(wù)的一部分。然后提交該事務(wù)?,F(xiàn)在參考圖3,框圖依照本發(fā)明的一個(gè)實(shí)施例示出了具有一個(gè)或多個(gè)追加的工作項(xiàng)的事務(wù)304。如所討論的,工作流組件102創(chuàng)建包含批處理的工作項(xiàng)的一個(gè)或多個(gè)批量工作的事務(wù)。在一個(gè)實(shí)施例中,事務(wù)304是包含一個(gè)或多個(gè)事務(wù)302(例如,302-1到302-N)且實(shí)際上花費(fèi)長時(shí)間來完成(例如,幾個(gè)月)的長期運(yùn)行事務(wù)。換言之,事務(wù)302可被批處理成另一長期運(yùn)行的事務(wù),諸如事務(wù)304。每一事務(wù)302可依照事務(wù)邊界來組織,如在單獨(dú)的框中示出每一事務(wù)302的圖3所描述的。例如,事務(wù)302-1(例如,原子事務(wù)1)具有與事務(wù)302-2(例如,原子事務(wù)2)分離的邊界。通過用其單獨(dú)的邊界來定義事務(wù)302,工作流組件102可對(duì)事務(wù)302設(shè)檢查點(diǎn),以確定事務(wù)302的狀況/狀態(tài)。例如,工作流組件102在308檢查或監(jiān)視事務(wù)302-1的狀態(tài)。類似地,工作流組件102在306檢查事務(wù)302-2的狀態(tài)。通過對(duì)事務(wù)302的狀態(tài)設(shè)檢查點(diǎn),工作流組件102維護(hù)事務(wù)302中的工作項(xiàng)的持久狀態(tài)。在另一示例中,每一事務(wù)302包括包含一個(gè)或多個(gè)工作項(xiàng)的一個(gè)或多個(gè)批量工作。例如,原子事務(wù)302-1包括批量工作(或作用域批量工作)310,它包含一個(gè)或多個(gè)工作項(xiàng)(未示出)。類似地,原子事務(wù)302-2包括批量工作(或作用域批量工作)312,它包含一個(gè)或多個(gè)工作項(xiàng)??梢岳斫?,盡管在圖3中的原子事務(wù)302-1中僅示出了一個(gè)批301,然而每一事務(wù)302可包含一個(gè)或多個(gè)批量工作或內(nèi)部作用域批量工作。在另一實(shí)施例中,在一個(gè)或多個(gè)工作項(xiàng)或整個(gè)事務(wù)由于錯(cuò)誤而未執(zhí)行的情況下,工作流組件102只需放棄錯(cuò)誤的事務(wù)中的工作項(xiàng),而由于定義的事務(wù)邊界,其它事務(wù)不受影響。工作流組件102首先標(biāo)識(shí)與錯(cuò)誤作用域(例如,原子事務(wù)302-1中的作用域批量工作310)有關(guān)的所有工作項(xiàng),并構(gòu)造錯(cuò)誤批量工作。工作流組件102然后調(diào)用每一唯一的待決工作項(xiàng)的“完成”狀態(tài),并對(duì)錯(cuò)誤批量工作中的所有工作將已完成狀態(tài)設(shè)為“錯(cuò)誤”。此外,工作流組件102放棄該批量工作中的所有工作。本實(shí)施例中的運(yùn)行庫在從錯(cuò)誤中恢復(fù)之后維護(hù)對(duì)所有剩余批量工作項(xiàng)的引用。工作然后可在未來的持久保存點(diǎn)被提交。在上述組成新網(wǎng)頁的示例中,假定服務(wù)提供者組件104-1在提交執(zhí)行事務(wù)中的工作項(xiàng)之后無法提供新產(chǎn)品的圖片。在維護(hù)事務(wù)的持久狀態(tài)時(shí),工作流組件102確定特定的工作項(xiàng)(例如,提供新產(chǎn)品的圖片)被放棄或未完成。工作流組件102接下來放棄該事務(wù)(即,組成新網(wǎng)頁)中的部分或所有工作項(xiàng),而其它事務(wù)(例如,對(duì)其它物品下定單等)不受這一錯(cuò)誤事務(wù)的影響。在一個(gè)實(shí)施例中,在完成了其它事務(wù)中的其它工作項(xiàng)之后或從錯(cuò)誤中恢復(fù)之后,工作流組件102可維護(hù)錯(cuò)誤事務(wù)的引用(例如,批處理的工作項(xiàng)、工作項(xiàng)定義等),使得工作流組件102可請(qǐng)求服務(wù)提供者組件104在稍后的時(shí)間再次提交工作項(xiàng)。在又一實(shí)施例中,服務(wù)提供者組件104-1可向工作流組件102通知或發(fā)送消息,指示它無法完成所提交的工作項(xiàng)的執(zhí)行。結(jié)果,工作流組件102可響應(yīng)于接收到的消息放棄該工作項(xiàng)。圖4是依照本發(fā)明的一個(gè)實(shí)施例示出通過批處理未提交的工作來跨通信組件維護(hù)持久保存的狀態(tài)的一致性的操作的示例性流程圖。最初,工作流組件102定義包含一組要實(shí)現(xiàn)/執(zhí)行的工作項(xiàng)的工作流。在402,工作流組件102創(chuàng)建批量工作。工作流組件102在404向服務(wù)提供者組件(例如,服務(wù)提供者組件104-1)分配工作項(xiàng)。例如,工作流組件102向服務(wù)提供者組件104分配工作項(xiàng)(例如,提供新產(chǎn)品的圖片)。在406,服務(wù)提供者組件104創(chuàng)建所分配的工作項(xiàng),并將其追加到批量工作。工作流組件102在408確定是否還有更多的工作項(xiàng)要被追加到批量工作以完成工作流。如果確定是肯定的,則工作流組件102繼續(xù)到404,以收集要追加到批量工作的其它工作項(xiàng)。如果確定是否定的,則工作流組件102在410創(chuàng)建事務(wù)?;蛘撸ぷ髁鹘M件102可在預(yù)定時(shí)間或點(diǎn)創(chuàng)建事務(wù)。在412,工作流組件102收集由事務(wù)批處理的工作項(xiàng)。在414,工作流組件102持久保存工作項(xiàng)的狀態(tài)。工作流組件102下一步在416提交事務(wù)的執(zhí)行。即,工作流102請(qǐng)求服務(wù)提供者組件104執(zhí)行/實(shí)現(xiàn)所分配的工作??梢岳斫?,在服務(wù)提供者組件104提交工作項(xiàng)的執(zhí)行之后,工作流組件102通過在圖1的持久存儲(chǔ)106中儲(chǔ)存工作項(xiàng)的狀態(tài)繼續(xù)持久保存工作項(xiàng)的狀態(tài)。在418,工作流組件102通過周期性地對(duì)工作項(xiàng)/事務(wù)的狀態(tài)設(shè)檢查點(diǎn)來確定在提交的工作項(xiàng)的執(zhí)行期間是否發(fā)生任何錯(cuò)誤。在另一實(shí)施例中,服務(wù)提供者組件104向工作流組件102發(fā)送消息或通知工作流組件102,指示發(fā)生了錯(cuò)誤。如果工作流組件102確定沒有執(zhí)行錯(cuò)誤,則工作流組件102在420繼續(xù)完成事務(wù)的執(zhí)行?;蛘撸绻ぷ髁鹘M件102確定存在執(zhí)行錯(cuò)誤,或者在另一實(shí)施例中,服務(wù)提供者組件指示存在執(zhí)行錯(cuò)誤,則工作流組件102在422放棄與錯(cuò)誤工作項(xiàng)/事務(wù)相關(guān)聯(lián)的批量工作。換言之,工作流組件102放棄(錯(cuò)誤作用域的)內(nèi)部批量工作中的所有項(xiàng),且工作流組件102維護(hù)周圍作用域中的工作項(xiàng),用于本實(shí)施例中的稍后的提交點(diǎn)。在424,工作流組件102完成非錯(cuò)誤工作項(xiàng)的執(zhí)行。工作流組件102在426維護(hù)與錯(cuò)誤工作項(xiàng)相關(guān)聯(lián)的工作的引用,并可繼續(xù)令服務(wù)提供者組件104在稍后的時(shí)間提交錯(cuò)誤的工作項(xiàng)(如由虛線所示的)。附錄A提供了用于工作流事務(wù)批處理的示例性協(xié)議。本發(fā)明通過實(shí)現(xiàn)包含具體化本發(fā)明的至少某些特征的工作項(xiàng)的批量工作,提供了優(yōu)于常規(guī)工作流系統(tǒng)設(shè)計(jì)和建模的優(yōu)點(diǎn)。在操作中,包含一個(gè)或多個(gè)組件或軟件系統(tǒng)的軟件系統(tǒng)包括管理工作流的工作流組件。工作流組件最初定義要由一個(gè)或多個(gè)服務(wù)提供者組件執(zhí)行的工作流(例如,組成新產(chǎn)品的新網(wǎng)頁)。例如,用于組成新網(wǎng)頁的工作流可包括諸如提供新產(chǎn)品的圖片、提供新產(chǎn)品的描述、確定新產(chǎn)品的可供性等工作項(xiàng)??梢岳斫?,服務(wù)提供者組件可以在與工作流組件分離的軟件系統(tǒng)、應(yīng)用程序或包中。工作流組件創(chuàng)建批量工作,并發(fā)送向服務(wù)提供者組件分配工作項(xiàng)的消息。服務(wù)提供者組件確定所分配的工作項(xiàng)是否可被執(zhí)行/實(shí)現(xiàn)。如果確定是肯定的,則服務(wù)提供者組件將工作項(xiàng)追加到批量工作中??梢岳斫?,通過這一批處理過程,工作流組件延遲了分配的工作項(xiàng)的實(shí)際上同時(shí)的執(zhí)行。工作流組件接下來創(chuàng)建包含批處理的工作項(xiàng)的事務(wù)。工作流組件通過對(duì)事務(wù)/工作項(xiàng)設(shè)檢查點(diǎn)并將工作項(xiàng)的狀態(tài)儲(chǔ)存在持久存儲(chǔ)中,來周期性地持久保存工作項(xiàng)的狀態(tài)。通過這樣做,工作流組件維護(hù)了工作項(xiàng)在各事務(wù)中的持久狀態(tài)的一致性。工作流組件通過請(qǐng)求服務(wù)提供者組件執(zhí)行/實(shí)現(xiàn)工作項(xiàng)來提交事務(wù)。在發(fā)生執(zhí)行錯(cuò)誤的情況下,工作流組件放棄錯(cuò)誤的工作項(xiàng)。工作流組件繼續(xù)完成非錯(cuò)誤工作項(xiàng)的執(zhí)行。在一個(gè)實(shí)施例中,服務(wù)提供者組件向工作流組件發(fā)送指示發(fā)生執(zhí)行錯(cuò)誤的消息。在從錯(cuò)誤執(zhí)行中恢復(fù)或完成了非錯(cuò)誤工作項(xiàng)的執(zhí)行之后,工作流組件可在稍后的時(shí)間提交錯(cuò)誤的工作項(xiàng)。圖5示出了計(jì)算機(jī)130形式的通用計(jì)算設(shè)備的一個(gè)示例。在本發(fā)明的一個(gè)實(shí)施例中,諸如計(jì)算機(jī)130等計(jì)算機(jī)適用于此處所示和描述的其它附圖。計(jì)算機(jī)130具有一個(gè)或多個(gè)處理器或處理單元132以及系統(tǒng)存儲(chǔ)器134。在所示的實(shí)施例中,系統(tǒng)總線136將包括系統(tǒng)存儲(chǔ)器134的各種系統(tǒng)組件耦合至處理器132??偩€136表示若干種總線結(jié)構(gòu)類型的一種或多種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線、加速圖形端口、以及使用各類總線體系結(jié)構(gòu)的處理器或局部總線。作為示例而非局限,這類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線以及外圍部件互連(PCI)總線,也稱為Mezzanine總線。計(jì)算機(jī)130通常包括至少某一形式的計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì),可以是可由計(jì)算機(jī)130訪問的任一可用介質(zhì)。作為示例而非局限,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于儲(chǔ)存諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任一方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性,可移動(dòng)和不可移動(dòng)介質(zhì)。例如,計(jì)算機(jī)存儲(chǔ)介質(zhì)包括RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ)、盒式磁帶、磁帶、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可以用來儲(chǔ)存所期望的信息并可由計(jì)算機(jī)130訪問的任一其它介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。本領(lǐng)域的技術(shù)人員熟悉已調(diào)制數(shù)據(jù)信號(hào),它以對(duì)信號(hào)中的信息進(jìn)行編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征。如有線網(wǎng)絡(luò)或直接連線連接等有線介質(zhì),以及如聲學(xué)、RF、紅外和其它無線介質(zhì)等無線介質(zhì)是通信介質(zhì)的示例。上述任一的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。系統(tǒng)存儲(chǔ)器134包括可移動(dòng)和/或不可移動(dòng)、易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì)。在所示的實(shí)施例中,系統(tǒng)存儲(chǔ)器134包括只讀存儲(chǔ)器(ROM)138和隨機(jī)存取存儲(chǔ)器(RAM)140。基本輸入/輸出系統(tǒng)142(BIOS)包括如在啟動(dòng)時(shí)幫助在計(jì)算機(jī)130內(nèi)的元件之間傳輸信息的基本例程,通常儲(chǔ)存在ROM138中。RAM140通常包含處理單元132立即可訪問和/或當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖5示出了操作系統(tǒng)144、應(yīng)用程序146、其它程序模塊148和程序數(shù)據(jù)150。計(jì)算機(jī)130也可包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。例如,圖5示出了對(duì)不可移動(dòng)、非易失性磁介質(zhì)進(jìn)行讀寫的硬盤驅(qū)動(dòng)器154。圖5還示出了對(duì)可移動(dòng)、非易失性磁盤158進(jìn)行讀寫的磁盤驅(qū)動(dòng)器156以及對(duì)可移動(dòng)、非易失性光盤162,如CD-ROM或其它光學(xué)介質(zhì)進(jìn)行讀寫的光盤驅(qū)動(dòng)器160??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,盒式磁帶、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器154、磁盤驅(qū)動(dòng)器156和光盤驅(qū)動(dòng)器160通常通過非易失性存儲(chǔ)器接口,如接口166連接到系統(tǒng)總線136。上文討論并在圖5示出的驅(qū)動(dòng)器及其關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)130提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,在圖5中,示出硬盤驅(qū)動(dòng)器154儲(chǔ)存操作系統(tǒng)170、應(yīng)用程序172、其它程序模塊174和程序數(shù)據(jù)176。注意,這些組件可以與操作系統(tǒng)144、應(yīng)用程序146、其它程序模塊148和程序數(shù)據(jù)150相同,也可以與它們不同。這里對(duì)操作系統(tǒng)170、應(yīng)用程序172、其它程序模塊174和程序數(shù)據(jù)176給予不同的標(biāo)號(hào)來說明至少它們是不同的副本。用戶可以通過輸入設(shè)備,如鍵盤180和定位設(shè)備182(例如鼠標(biāo)、跟蹤球或觸摸板)向計(jì)算機(jī)130輸入命令和信息。其它輸入設(shè)備(未示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過耦合至系統(tǒng)總線136的用戶輸入接口184連接至處理單元132,但是也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器188或其它類型的顯示設(shè)備也通過接口,如視頻接口190連接至系統(tǒng)總線136。除監(jiān)視器188之外,計(jì)算機(jī)通??砂ㄆ渌鈬敵鲈O(shè)備(未示出),如揚(yáng)聲器和打印機(jī),它們通過輸出外圍接口(未示出)連接。計(jì)算機(jī)130可以使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)194的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)194可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有相對(duì)于計(jì)算機(jī)130所描述的元件。圖5描述的邏輯連接包括局域網(wǎng)(LAN)196和廣域網(wǎng)(WAN)198,但也可包括其它網(wǎng)絡(luò)。LAN196和/或WAN198可以是有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)、其組合等等。這類網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及全球計(jì)算機(jī)網(wǎng)絡(luò)(例如,因特網(wǎng))。當(dāng)在局域網(wǎng)網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)130通過網(wǎng)絡(luò)接口或適配器186連接至LAN196。當(dāng)在廣域網(wǎng)網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)130通常包括調(diào)制解調(diào)器178或用于通過WAN198,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器178可以是內(nèi)置或外置的,通過用戶輸入接口184或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線136。在網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算機(jī)130所描述的程序模塊或其部分可儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備(未示出)中。作為示例而非局限,圖5示出了遠(yuǎn)程應(yīng)用程序192駐留在存儲(chǔ)器設(shè)備上。示出的網(wǎng)絡(luò)連接是示例性的,也可以使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。一般而言,計(jì)算機(jī)130的數(shù)據(jù)處理器通過在不同的時(shí)刻儲(chǔ)存在計(jì)算機(jī)的各種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的指令來編程。程序和操作系統(tǒng)通常分布在例如軟盤或CD-ROM上。從那里,它們被安裝或加載到計(jì)算機(jī)的次級(jí)存儲(chǔ)器中。在執(zhí)行時(shí),它們被至少部分地加載到計(jì)算機(jī)的主電子存儲(chǔ)器中。當(dāng)這些和其它各種類型的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包含下文結(jié)合微處理器或其它數(shù)據(jù)處理器描述的步驟的指令或程序時(shí),此處所描述的本發(fā)明包括這類介質(zhì)。當(dāng)依照此處所描述的方法和技術(shù)來編程時(shí),本發(fā)明也包括計(jì)算機(jī)本身。為說明起見,諸如操作系統(tǒng)等程序和其它可執(zhí)行程序組件此處被示為離散的框。然而,可以認(rèn)識(shí)到,這些程序和組件在不同的時(shí)刻駐留在計(jì)算機(jī)的不同存儲(chǔ)組件中,并由計(jì)算機(jī)的數(shù)據(jù)處理器來執(zhí)行。盡管結(jié)合了包括計(jì)算機(jī)130的示例性計(jì)算系統(tǒng)環(huán)境來描述,然而本發(fā)明可用眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來操作。該計(jì)算系統(tǒng)環(huán)境并不旨在對(duì)本發(fā)明的使用范圍或功能提出任何局限。此外,該計(jì)算系統(tǒng)環(huán)境不應(yīng)當(dāng)被解釋為對(duì)示例性操作環(huán)境中所示的組件的任一個(gè)或其組合具有任何依賴性或要求。適用于本發(fā)明的公知的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)者電子設(shè)備、移動(dòng)電話、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包括任一上述系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。本發(fā)明可在諸如由一個(gè)或多個(gè)計(jì)算機(jī)或其它設(shè)備執(zhí)行的程序模塊等計(jì)算機(jī)可執(zhí)行指令的一般上下文環(huán)境中描述。一般而言,程序模塊包括但不限于,例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)踐,其中,任務(wù)由通過通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備來執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。軟件體系結(jié)構(gòu)環(huán)境中的接口包括軟件模塊、組件、代碼部分、或其它計(jì)算機(jī)可執(zhí)行指令序列。接口包括,例如訪問第二模塊來代表第一模塊執(zhí)行計(jì)算任務(wù)的第一模塊。在一個(gè)示例中,第一和第二模塊諸如由操作系統(tǒng)提供的應(yīng)用程序編程接口(API)、組件對(duì)象模型(COM)接口(例如,用于對(duì)等應(yīng)用程序通信)、以及可擴(kuò)展標(biāo)記語言元數(shù)據(jù)交換格式(XMI)接口(例如,用于Web服務(wù)之間的通信)。接口可以是諸如Java2平臺(tái)企業(yè)版(J2EE)、COM或分布式COM(DCOM)示例中的緊耦合的同步實(shí)現(xiàn)?;蛘呋虺酥猓涌诳梢允侵T如Web服務(wù)(例如,使用簡單對(duì)象訪問協(xié)議)中的松耦合的異步實(shí)現(xiàn)。一般而言,接口包括以下特征的任一組合緊耦合的、松耦合的、同步和異步。此外,接口可符合標(biāo)準(zhǔn)協(xié)議、專有協(xié)議、或標(biāo)準(zhǔn)和專有協(xié)議的任何組合。此處所描述的接口可以都是單個(gè)接口的一部分,或者可以被實(shí)現(xiàn)為單獨(dú)的接口或其中的任何組合。接口可以本地或遠(yuǎn)程地執(zhí)行以提供功能。此外,接口可包括比此處所示或所描述的更多或更少的功能。此處所示且描述的方法的執(zhí)行或?qū)崿F(xiàn)順序不是必要的,除非另外指定。即,方法的元素可以用任何順序來執(zhí)行,除非另外指定,且方法可包括比此處所揭示的更多或更少的元素。例如,可以構(gòu)想,在另一元素之前、與其同時(shí)或之后執(zhí)行或?qū)崿F(xiàn)特定元素是在本發(fā)明的范圍之內(nèi)。當(dāng)介紹本發(fā)明或其實(shí)施例的元素時(shí),冠詞“一”、“一個(gè)”、“該”和“所述”意指存在一個(gè)或多個(gè)元素。術(shù)語“包括”、“包含”和“具有”旨在包含性的,且意味著除所列出的元素之外還可以有其它元素。鑒于以上內(nèi)容,可以看到,實(shí)現(xiàn)了本發(fā)明的若干目標(biāo)并獲得了其它有利結(jié)果。由于可在不脫離本發(fā)明的范圍的情況下在上述產(chǎn)品和方法中做出各種改變,因此包含在上述說明書并在附圖中示出的所有內(nèi)容都應(yīng)當(dāng)被解釋為說明性而非限制性的。附錄A工作流事務(wù)批處理在示例性工作流的執(zhí)行期間,運(yùn)行庫調(diào)用其服務(wù)來完成工作。例如,發(fā)送工作流活動(dòng)是對(duì)消息通信服務(wù)的調(diào)用。消息通信服務(wù)處理發(fā)送請(qǐng)求,并維護(hù)與發(fā)送相關(guān)聯(lián)的特定狀態(tài)。事務(wù)/持久模型的要求之一是維護(hù)由不同服務(wù)維護(hù)的狀態(tài)和工作流運(yùn)行庫之間的一致性。當(dāng)工作流到達(dá)提交點(diǎn)時(shí),運(yùn)行庫調(diào)用持久服務(wù)并分發(fā)其工作流實(shí)例狀態(tài)。該實(shí)例狀態(tài)和其它服務(wù)工作可以被批處理,并被提交給參與單個(gè)事務(wù)的持久資源管理器(RM)。如果B0和B1是單獨(dú)的批量工作(例如,見圖3中的事務(wù)304和原子事務(wù)302-N),在提交點(diǎn),整個(gè)工作集合{B0,B1}需要在事務(wù)中提交。在事務(wù)失敗時(shí),要求是與B0相關(guān)聯(lián)的工作被丟棄。與B1相關(guān)聯(lián)的工作應(yīng)當(dāng)對(duì)隨后的點(diǎn)繼續(xù)存在。依照本發(fā)明的一個(gè)實(shí)施例,為便于提供者在同一事務(wù)中共享,運(yùn)行庫在對(duì)其服務(wù)的所有調(diào)用的線程調(diào)用環(huán)境中浮動(dòng)WorkBatch(批量工作)對(duì)象。服務(wù)可選擇向該批量工作添加工作。例如,消息通信服務(wù)中的Send(發(fā)送)方法可導(dǎo)致構(gòu)造包含特別SQL的對(duì)象。消息通信服務(wù)然后可將對(duì)象添加到WorkBatch。在預(yù)定提交點(diǎn),調(diào)用消息通信服務(wù)IPendingWork.Complete方法,并且其所有待決的工作被退還給它。服務(wù)然后可執(zhí)行適用于執(zhí)行SQL的任何動(dòng)作作為事務(wù)的一部分。例如,名字空間Microsoft.Workflow.RuntimepublicsealedclassWorkBatch{publicvoidAdd(IPendingWorkwork,objectworkItem);}Add方法可用于向批量工作添加待決的工作項(xiàng)。提供者用對(duì)實(shí)現(xiàn)IPendingWork接口的對(duì)象的引用來對(duì)添加到批量工作的工作加標(biāo)簽。該對(duì)象將處理工作的最終提交。在以下示例中,持久提供者本身實(shí)現(xiàn)IPendingWork接口。接口IPendingWork被定義為interfaceIPendingWork{voidCommit(ITransactiontransaction,IList<o(jì)bject>items);voidComplete(boolsucceeded,IList<o(jì)bject>items);}在Commit方法中,使用事務(wù)對(duì)象將工作項(xiàng)列表提交給數(shù)據(jù)庫。Complete方法執(zhí)行必要的清除。該方法由運(yùn)行庫在完成了項(xiàng)列表中的工作的處理時(shí)調(diào)用。如果工作被成功地完成,則succeeded=true,否則succeeded=false。作為對(duì)該示例的補(bǔ)充,提交點(diǎn)的動(dòng)作序列包括a.運(yùn)行庫調(diào)用PersistenceService∷Save方法。b.運(yùn)行庫調(diào)用TransactionService∷Create方法,并獲取System.ICommitableTransactionc.運(yùn)行庫在其工作集合上迭代,并收集引用同一IPendingWork對(duì)象的所有項(xiàng)。它然后每次調(diào)用每一唯一IPendingWork對(duì)象的Commit方法,傳遞Transaction和所有其未決工作的列表。d.在Commit通知成功之后,運(yùn)行庫調(diào)用ICommittableTransaction∷Commite.在事務(wù)成功之后,運(yùn)行庫每次調(diào)用每一唯一IPendingWork對(duì)象的Complete方法,傳遞succeeded=true以及其所有未決工作的列表。在工作流錯(cuò)誤時(shí)的示例性動(dòng)作序列包括a.運(yùn)行庫基于工作流模型語義(原子作用域)決定放棄與錯(cuò)誤作用域有關(guān)的IPendingWork對(duì)象。b.運(yùn)行庫對(duì)所有放棄的工作調(diào)用每一唯一IPendingWork的Complete方法,其中完成狀態(tài)=false。c.運(yùn)行庫維護(hù)對(duì)其語義告知它在從錯(cuò)誤中恢復(fù)之后仍然有效的任何工作的引用。該工作然后可在未來的持久保存點(diǎn)提交。權(quán)利要求1.一種用于管理工作流中的狀態(tài)的方法,所述方法包括定義要執(zhí)行的一個(gè)或多個(gè)工作項(xiàng);將所述一個(gè)或多個(gè)定義的工作項(xiàng)分配給一個(gè)或多個(gè)服務(wù)提供者組件用于執(zhí)行;在稍后的時(shí)間使所述一個(gè)或多個(gè)分配的工作項(xiàng)由所述一個(gè)或多個(gè)服務(wù)提供者組件批處理;持久保存所述一個(gè)或多個(gè)批處理的工作項(xiàng)的狀態(tài);以及提交所述一個(gè)或多個(gè)服務(wù)提供者組件以執(zhí)行所述一個(gè)或多個(gè)批處理的工作項(xiàng),其中,所述一個(gè)或多個(gè)服務(wù)提供者組件執(zhí)行所述一個(gè)或多個(gè)提交的工作項(xiàng)。2.如權(quán)利要求1所述的方法,其特征在于,所述提交過程包括以下的至少一個(gè)創(chuàng)建事務(wù);以及將所述一個(gè)或多個(gè)批處理的工作項(xiàng)追加到事務(wù)。3.如權(quán)利要求2所述的方法,其特征在于,追加包括根據(jù)所述一個(gè)或多個(gè)定義的工作項(xiàng)對(duì)所述事務(wù)中一個(gè)或多個(gè)追加的工作項(xiàng)進(jìn)行分段。4.如權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)服務(wù)提供者組件是以下的一個(gè)或多個(gè)的一部分一個(gè)或多個(gè)宿主環(huán)境以及遠(yuǎn)離所述一個(gè)或多個(gè)定義的工作項(xiàng)的一個(gè)或多個(gè)宿主環(huán)境,以及所述一個(gè)或多個(gè)工作項(xiàng)包括以下的至少一個(gè)或多個(gè)消息通信、實(shí)例、事務(wù)、持久性、線程化、定時(shí)、角色和跟蹤。5.如權(quán)利要求1所述的方法,其特征在于,還包括由所述一個(gè)或多個(gè)服務(wù)提供者組件在執(zhí)行所述一個(gè)或多個(gè)提交的工作項(xiàng)失敗之后發(fā)送消息。6.如權(quán)利要求1所述的方法,其特征在于,持久保存包括將所述一個(gè)或多個(gè)批處理的工作項(xiàng)的狀態(tài)保存在計(jì)算機(jī)可讀介質(zhì)中,其中,所述一個(gè)或多個(gè)分配的工作項(xiàng)的狀態(tài)包括以下的至少一個(gè)已完成、正在執(zhí)行和已放棄。7.如權(quán)利要求1所述的方法,其特征在于,一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)具有用于執(zhí)行如權(quán)利要求1所述的方法的計(jì)算機(jī)可執(zhí)行指令。8.一個(gè)或多個(gè)具有用于管理工作流中的狀態(tài)的計(jì)算機(jī)可執(zhí)行組件的計(jì)算機(jī)可讀介質(zhì),所述組件包括工作流組件,用于分配要執(zhí)行的一個(gè)或多個(gè)工作項(xiàng),其中,所述工作流組件定義所述一個(gè)或多個(gè)工作項(xiàng),其中,所述工作流組件在稍后的時(shí)間批處理所述一個(gè)或多個(gè)分配的工作項(xiàng);以及一個(gè)或多個(gè)服務(wù)提供者組件,用于提交執(zhí)行所述一個(gè)或多個(gè)批處理的工作項(xiàng)。9.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括用于儲(chǔ)存所述一個(gè)或多個(gè)批處理的工作項(xiàng)的持久狀態(tài)的存儲(chǔ)器,其中,所述一個(gè)或多個(gè)批處理的工作項(xiàng)的持久狀態(tài)包括以下的至少一個(gè)已完成、正在執(zhí)行以及已放棄。10.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述工作流組件創(chuàng)建事務(wù),所述事務(wù)包括所述一個(gè)或多個(gè)批處理的工作項(xiàng)。11.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述工作流組件還包括根據(jù)所述一個(gè)或多個(gè)定義的工作項(xiàng)對(duì)所述事務(wù)中的一個(gè)或多個(gè)分配的工作項(xiàng)分段。12.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述一個(gè)或多個(gè)服務(wù)提供者組件是一個(gè)或多個(gè)宿主環(huán)境的一部分。13.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述工作流組件將所述一個(gè)或多個(gè)定義的工作項(xiàng)分配給一個(gè)或多個(gè)服務(wù)提供者組件用于執(zhí)行,所述一個(gè)或多個(gè)服務(wù)提供者組件是遠(yuǎn)離所述一個(gè)或多個(gè)定義的工作項(xiàng)的一個(gè)或多個(gè)宿主環(huán)境的一部分。14.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述一個(gè)或多個(gè)服務(wù)提供者組件在執(zhí)行所述一個(gè)或多個(gè)提交的工作項(xiàng)失敗之后通知所述工作流組件。15.一種用于管理可由第一宿主環(huán)境執(zhí)行的一個(gè)或多個(gè)工作項(xiàng)的工作流的方法,所述方法包括在所述第一宿主環(huán)境處接收?qǐng)?zhí)行一個(gè)或多個(gè)工作項(xiàng)的分配;將所述一個(gè)或多個(gè)分配的工作項(xiàng)追加到批量工作,其中,追加指示所述一個(gè)或多個(gè)分配的工作項(xiàng)要由所述第一宿主環(huán)境在稍后的時(shí)間執(zhí)行;在所述第一宿主環(huán)境處接收?qǐng)?zhí)行所述一個(gè)或多個(gè)分配的工作項(xiàng)的請(qǐng)求;以及在所述第一宿主環(huán)境處執(zhí)行所述一個(gè)或多個(gè)請(qǐng)求的工作項(xiàng)。16.如權(quán)利要求15所述的方法,其特征在于,所述分配包括一個(gè)或多個(gè)定義的工作項(xiàng),所述事務(wù)包括根據(jù)所述一個(gè)或多個(gè)定義的工作項(xiàng)為所述事務(wù)中的一個(gè)或多個(gè)工作項(xiàng)定義原子事務(wù)邊界,以及所述一個(gè)或多個(gè)工作項(xiàng)可在第二宿主環(huán)境中執(zhí)行。17.如權(quán)利要求15所述的方法,其特征在于,還包括依照所定義的一個(gè)或多個(gè)工作項(xiàng)的原子事務(wù)邊界,將所述一個(gè)或多個(gè)批處理的工作項(xiàng)的狀態(tài)保存在所述事務(wù)中。18.如權(quán)利要求15所述的方法,其特征在于,還包括將所述一個(gè)或多個(gè)批處理的工作項(xiàng)的狀態(tài)保存在計(jì)算機(jī)可讀介質(zhì)中,其中,所述一個(gè)或多個(gè)批處理的工作項(xiàng)的狀態(tài)包括以下的至少一個(gè)已完成、正在執(zhí)行以及已放棄。19.如權(quán)利要求15所述的方法,其特征在于,還包括將所述批量工作追加到事務(wù)。20.如權(quán)利要求15所述的方法,其特征在于,還包括由所述第一宿主環(huán)境在執(zhí)行所述一個(gè)或多個(gè)提交的工作項(xiàng)失敗后發(fā)送消息。全文摘要用于通過批處理未提交的工作來跨通信組件維護(hù)持久狀態(tài)的一致性的工作流管理。工作流組件定義包含要由服務(wù)提供者組件執(zhí)行的工作項(xiàng)的工作流。工作流組件將工作項(xiàng)分配給服務(wù)提供者組件,且服務(wù)提供者組件確認(rèn)所分配的工作項(xiàng)。工作流組件將所分配的工作項(xiàng)追加到批量工作。工作流組件創(chuàng)建包含批處理的工作項(xiàng)的事務(wù)。工作流組件通過請(qǐng)求服務(wù)提供者組件執(zhí)行工作項(xiàng)來提交工作流。工作流組件檢查工作項(xiàng)的執(zhí)行狀態(tài),并在持久存儲(chǔ)中儲(chǔ)存該狀態(tài)。文檔編號(hào)G06Q10/00GK1783132SQ200510127140公開日2006年6月7日申請(qǐng)日期2005年11月22日優(yōu)先權(quán)日2004年12月22日發(fā)明者A·索瑪瑟卡蘭,P·E·梅比,S·R·塔特申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1