專利名稱:工作流服務(wù)體系結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及自動(dòng)化工作流技術(shù)。
背景技術(shù):
自動(dòng)化工作流技術(shù)已被奉為用于提高工作生產(chǎn)力的萬(wàn)能藥。通過(guò)將計(jì)算機(jī)自動(dòng)化科學(xué)引入商業(yè)過(guò)程,工作流技術(shù)有希望將軟件的威力應(yīng)用到公司運(yùn)作的方法中去。
自動(dòng)化工作流技術(shù)可在軟件中將商業(yè)過(guò)程呈現(xiàn)為一工作流。通常工作流設(shè)計(jì)者將商業(yè)過(guò)程分成要執(zhí)行和監(jiān)視的不同部分直到達(dá)到某些完成準(zhǔn)則。
工作流技術(shù)的一個(gè)持續(xù)問(wèn)題是通常它們對(duì)于一般商業(yè)工作者而言是難以理解的。例如,構(gòu)建工作流通常需要編程技術(shù)和工作流系統(tǒng)的廣泛知識(shí)。甚至復(fù)雜信息工作者也不具備所需編程技術(shù),并且不能或不愿意為了利用工作流技術(shù)而去學(xué)習(xí)另一種信息系統(tǒng)。
此外,信息工作者趨向?qū)ぷ髁飨到y(tǒng)失去興趣是因?yàn)樗鼪](méi)有反映他們真正進(jìn)行運(yùn)作的方法。例如,通常過(guò)程中的小例外不會(huì)被工作流系統(tǒng)考慮在內(nèi),因此它常常會(huì)抑制而不是便于商業(yè)過(guò)程的完成。
自動(dòng)化工作流的常規(guī)方法通常相對(duì)于工作者真正所需的都太復(fù)雜和嚴(yán)格。因而,仍然需要一種自動(dòng)化工作流的改進(jìn)技術(shù)。
發(fā)明內(nèi)容
在此所述的技術(shù)可用于各種各樣的自動(dòng)化工作流情形中。例如,工作流服務(wù)可提供可合成動(dòng)作的執(zhí)行。這些動(dòng)作可發(fā)送并接收一個(gè)標(biāo)準(zhǔn)的消息集,其格式可由標(biāo)準(zhǔn)界面指定。
工作流服務(wù)可包括合成服務(wù)、約束服務(wù)以及跟蹤服務(wù)。合成服務(wù)可支持先驗(yàn)基礎(chǔ)、特設(shè)基礎(chǔ)、或兩者組合上的動(dòng)作合成。先驗(yàn)合成可基于活動(dòng)模型。
約束服務(wù)可支持大范圍的限制,包括基于行動(dòng)者身份的限制。約束可限制動(dòng)作或目標(biāo)行動(dòng)者。約束可以是相關(guān)的或否定的。此外,可支持用于轉(zhuǎn)移動(dòng)作的約束。
服務(wù)可通過(guò)基于SOAP協(xié)議與客戶機(jī)通信,且服務(wù)可以是客戶不可知的。用于訪問(wèn)服務(wù)的用戶界面可被結(jié)合到已顯現(xiàn)在用戶桌面上的常用應(yīng)用程序。例如,工作流操作可被簡(jiǎn)便地結(jié)合到熟悉的電子郵件或字處理界面中。
可跟蹤來(lái)自動(dòng)作或發(fā)往動(dòng)作的消息。結(jié)果,可提供工作流處理的狀態(tài)。
提供非預(yù)期情形的彈性工作流可通過(guò)在此實(shí)現(xiàn)的各種技術(shù)實(shí)現(xiàn)。
提供各種各樣動(dòng)作功能和動(dòng)作協(xié)作的可合成動(dòng)作可通過(guò)在此所述的技術(shù)來(lái)實(shí)現(xiàn)。
從參閱附圖進(jìn)行的以下被揭示實(shí)施例的詳細(xì)描述,前述和其它特征和優(yōu)點(diǎn)將變得顯然。
圖1是示出支持自動(dòng)化工作流的示例性系統(tǒng)的框圖。
圖2是用于處理如圖1的自動(dòng)化系統(tǒng)中工作流的示例性方法的流程圖。
圖3是示出可合成動(dòng)作的示例性模式的框圖。
圖4是處理可合成動(dòng)作中消息的示例性方法的流程圖。
圖5是示出通過(guò)消息進(jìn)行的示例性動(dòng)作-到-動(dòng)作通信的框圖。
圖6是用于通過(guò)動(dòng)作-到-動(dòng)作通信完成同步的示例性方法的流程圖。
圖7是示出任務(wù)的示例性實(shí)現(xiàn)的框圖。
圖8是用于處理任務(wù)的示例性方法的流程圖。
圖9是示出約束的示例性實(shí)現(xiàn)的框圖。
圖10是用于實(shí)現(xiàn)可合成動(dòng)作的約束的示例性方法的流程圖。
圖11是示出通過(guò)基于知識(shí)庫(kù)適配器的事實(shí)收集的框圖。
圖12是用于在應(yīng)用約束時(shí)使用事實(shí)的示例性方法的流程圖。
圖13是示出示例性活動(dòng)模型的框圖。
圖14是用于通過(guò)可合成動(dòng)作實(shí)現(xiàn)活動(dòng)模型的示例性方法的流程圖。
圖15是示出通過(guò)特設(shè)動(dòng)作合成而構(gòu)建的示例性活動(dòng)流的框圖。
圖16是用于通過(guò)可合成動(dòng)作建立一特設(shè)活動(dòng)流的示例性方法的流程圖。
圖17是示出基于活動(dòng)模型添加到活動(dòng)流的示例性特設(shè)動(dòng)作的框圖。
圖18是基于活動(dòng)模型將特設(shè)動(dòng)作添加到活動(dòng)流中的示例性方法的流程圖。
圖19是基于用戶身份示出一示例性約束的框圖。
圖20是用于基于行動(dòng)者約束呈現(xiàn)動(dòng)作和目標(biāo)選項(xiàng)的示例性方法的流程圖。
圖21是示出轉(zhuǎn)移動(dòng)作的示例性約束的框圖。
圖22是按照約束基于動(dòng)作中行動(dòng)者而呈現(xiàn)選項(xiàng)的示例性方法的流程圖。
圖23是示出示例性跟蹤排列的框圖。
圖24是用于跟蹤可合成動(dòng)作的活動(dòng)流狀態(tài)的示例性方法的流程圖。
圖25是示出基于跟蹤的工作流狀態(tài)的示例性圖形呈現(xiàn)的屏幕截圖。
圖26是用于圖示地呈現(xiàn)活動(dòng)流狀態(tài)的示例性方法的流程圖。
圖27是示出電子郵件用戶界面中一普及工作流用戶界面的示例性實(shí)現(xiàn)的屏幕截圖。
圖28是示出用于接受任務(wù)的普及工作流用戶界面的示例性實(shí)現(xiàn)的屏幕截圖。
圖29是用于通過(guò)普及工作流用戶界面呈現(xiàn)和接受選擇的示例性方法的流程圖。
圖30是示出字處理用戶界面中用于許可或否定條目的一普及工作流用戶界面的示例性實(shí)現(xiàn)的屏幕截圖。
圖31是示出對(duì)用于激活動(dòng)作的參數(shù)指定的可發(fā)現(xiàn)性的示例性安排的屏幕截圖。
圖32是用于發(fā)現(xiàn)一動(dòng)作的激活參數(shù)指定的示例性方法的流程圖。
圖33是示出用于支持可合成動(dòng)作的模式的示例性模板的框圖。
圖34、35、36和37示出工作流技術(shù)的示例性執(zhí)行。
圖38示出帶有超鏈接的任務(wù)的示例性通知。
圖39是示出用于實(shí)現(xiàn)工作流系統(tǒng)的示例性體系結(jié)構(gòu)的框圖。
圖40是示出用于顯示工作流狀態(tài)并接受對(duì)隨后動(dòng)作的選擇的用戶界面的示例性實(shí)現(xiàn)的屏幕截圖。
圖41是示出用于可合成動(dòng)作的示例性模板的屏幕截圖。
圖42是示出用于可合成動(dòng)作的示例性模板一部分的屏幕截圖。
具體實(shí)施例方式
示例1-示例性工作流系統(tǒng)圖1示出了用于通過(guò)可合成動(dòng)作實(shí)現(xiàn)自動(dòng)化工作流的示例性系統(tǒng)100。在該示例中,多個(gè)客戶機(jī)程序122A-122N通過(guò)網(wǎng)絡(luò)132(例如經(jīng)網(wǎng)絡(luò)連接)訪問(wèn)工作流服務(wù)140。實(shí)際上,客戶機(jī)程序122A-122N可分別由人類行動(dòng)者操作。人類行動(dòng)者是在工作流服務(wù)140中執(zhí)行的工作流處理的人類參與者,且可由身份信息(例如信息125)在系統(tǒng)中呈現(xiàn)。
工作流服務(wù)140可與用戶界面和客戶機(jī)程序122A-122N的其它細(xì)節(jié)無(wú)關(guān)地進(jìn)行操作。因而,客戶機(jī)程序122A-122N可取各種形式或者按需統(tǒng)一。由于服務(wù)140可由各種客戶機(jī)(例如不同類型的客戶機(jī)軟件)訪問(wèn),它們有時(shí)稱為“客戶機(jī)不可知的”。
工作流服務(wù)140可通過(guò)合成服務(wù)141執(zhí)行工作流處理,該服務(wù)將可合成動(dòng)作(例如動(dòng)作142)組裝到活動(dòng)流中??珊铣蓜?dòng)作可根據(jù)標(biāo)準(zhǔn)界面發(fā)送和接收消息(例如消息143)。
消息的指示可由跟蹤服務(wù)存儲(chǔ)(例如在跟蹤數(shù)據(jù)庫(kù)162中)用于后來(lái)的檢索,諸如跟蹤活動(dòng)流的狀態(tài)。約束服務(wù)152可實(shí)現(xiàn)約束來(lái)添加大范圍的約束以在工作流處理期間引導(dǎo)用戶。約束服務(wù)可查閱事實(shí)存儲(chǔ)器以按需應(yīng)用約束。這樣的事實(shí)存儲(chǔ)器可包含機(jī)構(gòu)的大范圍信息,并可包括新的事實(shí)類型。
實(shí)際上,系統(tǒng)100可具有任意數(shù)量的客戶機(jī)程序,在多個(gè)網(wǎng)絡(luò)上執(zhí)行,并支持各種各樣的并發(fā)執(zhí)行動(dòng)作和活動(dòng)流。
示例2-用于處理工作流的示例性方法圖2示出用于在諸如圖1的自動(dòng)化工作流系統(tǒng)中處理工作流的示例性方法200。該方法200可由軟件執(zhí)行。
在212,可合成動(dòng)作按照約束被合成到活動(dòng)流中。例如,約束服務(wù)可基于一事實(shí)存儲(chǔ)而指示可能的動(dòng)作和目標(biāo)行動(dòng)者。在222,由工作流服務(wù)執(zhí)行動(dòng)作。執(zhí)行可取各種各樣的形式并包括各種各樣的處理,包括從人類行動(dòng)者處接收信息或指示。在執(zhí)行期間,可分配任務(wù)并收集有關(guān)各任務(wù)的信息。
在232,跟蹤活動(dòng)流的進(jìn)展。例如,可記錄發(fā)送給和來(lái)自可合成動(dòng)作的消息用于后來(lái)的檢查。也可跟蹤有關(guān)與該活動(dòng)流相關(guān)聯(lián)的任務(wù)的信息。
實(shí)際上,工作流系統(tǒng)可提供各種各樣的其它功能,包括建立指定一個(gè)用于在工作流服務(wù)中執(zhí)行的動(dòng)作集的活動(dòng)模型的能力。
示例3-示例性動(dòng)作在任一在此所述的示例中,可合成動(dòng)作可取如圖3所示的示例性可合成動(dòng)作300的形式。動(dòng)作300可從可合成動(dòng)作定義中例示,該可合成動(dòng)作定義通常包括動(dòng)作的動(dòng)作特定工作流處理(例如商業(yè)邏輯)308的定義。
動(dòng)作可通過(guò)一組通信接口312、322、332、342、352、362來(lái)發(fā)送和接收消息以支持各種各樣的可合成性情形。例如,當(dāng)由用戶引導(dǎo)或在工作流中適當(dāng)位置時(shí),工作流服務(wù)可例示該動(dòng)作并向其發(fā)送一激活消息。圖3所示的排列可用作動(dòng)作的模式從而可在自動(dòng)化工作流服務(wù)上支持可合成性。
接口312、322、332、342、352、362可取標(biāo)準(zhǔn)接口的形式。例如,接口312、322、332、342、352、362可接受在工作流系統(tǒng)中使用的遵從XML模式(例如XSD規(guī)范)的消息。這樣,開(kāi)發(fā)者可開(kāi)發(fā)新的動(dòng)作;如果動(dòng)作遵從XML模式,它們可與工作流服務(wù)中的其它動(dòng)作合成并獲益于工作流服務(wù)特征??蓪?duì)接口312、322、332、342、352、362的每一個(gè)使用不同的模式。例如,與任務(wù)接口322相關(guān)的模式可包括如何指定與該任務(wù)相關(guān)聯(lián)的行動(dòng)者。
消息(例如消息362)可由動(dòng)作因各種原因而封裝的邏輯所接收,包括要激活動(dòng)作、中斷動(dòng)作、完成動(dòng)作、或使動(dòng)作與其它可合成動(dòng)作同步(例如解開(kāi))。類似地,消息可由動(dòng)作因各種原因而封裝的邏輯所發(fā)送,包括指示已激活動(dòng)作、已完成動(dòng)作、或要分配(例如給動(dòng)作者)的任務(wù)。
各接口的可替換的排列是可能的,諸如較少、較多、或不同的接口。然而,如果需要一致性,則可全部實(shí)用某些相同的接口(例如用于接收激活和中斷消息的接口)。由于各接口便于可合成動(dòng)作的彼此連接,工作流服務(wù)和客戶機(jī)系統(tǒng)有時(shí)被稱為“插針”(pin)。具有插針的動(dòng)作定義可被安裝在工作流服務(wù)中由工作流參與者使用。有關(guān)被安裝動(dòng)作的可訪問(wèn)性約束可由管理員指定。然后工作流系統(tǒng)可將該動(dòng)作呈現(xiàn)為僅對(duì)適當(dāng)行動(dòng)者的選項(xiàng)。
示例4-通過(guò)接口處理消息的示例性方法圖4示出了以可合成動(dòng)作處理消息的示例性方法,諸如圖3所示可合成動(dòng)作300。在412,通過(guò)由動(dòng)作封裝的邏輯由動(dòng)作經(jīng)標(biāo)準(zhǔn)接口之一接收消息。在422,處理該消息。在432通過(guò)由動(dòng)作封裝的邏輯由動(dòng)作從標(biāo)準(zhǔn)接口之一發(fā)送消息。
實(shí)際上,發(fā)送和接收消息可以復(fù)雜得多,包括消息之間的同步以及由動(dòng)作進(jìn)行的各種處理。然而,可向開(kāi)發(fā)者提供一模板,通過(guò)它動(dòng)作的所需商業(yè)邏輯可被簡(jiǎn)便地結(jié)合到該模板中以便于開(kāi)發(fā)者不熟悉工作流服務(wù)的詳細(xì)工作方式也能創(chuàng)建動(dòng)作。
示例5-示例性活動(dòng)流一個(gè)或多個(gè)可合成動(dòng)作的可執(zhí)行集可取活動(dòng)流的形式。工作流服務(wù)可協(xié)調(diào)激活、例示、以及動(dòng)作之間的執(zhí)行流。在執(zhí)行期間,動(dòng)作可向工作流服務(wù)收發(fā)消息,并在各工作流服務(wù)之間收發(fā)消息。此外,動(dòng)作可從客戶機(jī)程序收發(fā)消息(例如通過(guò)工作流服務(wù))。
示例6-示例性消息各種各樣的消息可由工作流服務(wù)支持。然而,通過(guò)選擇可能的消息集,可獲取動(dòng)作、工作流服務(wù)、以及工作流服務(wù)的客戶機(jī)之間通信的標(biāo)準(zhǔn)模式。表格1示出工作流系統(tǒng)的一示例性消息集。
每個(gè)協(xié)議消息可遵從XSD模式。因而,可用XML發(fā)送消息。
示例7-示例性同步情景在某些情形中,需要?jiǎng)幼鞅舜送綀?zhí)行。例如,第一動(dòng)作可執(zhí)行而第二動(dòng)作等待第一動(dòng)作指示繼續(xù)第二動(dòng)作是恰當(dāng)?shù)?。可使用這樣一種方法來(lái)實(shí)現(xiàn)活動(dòng)流中的超時(shí)設(shè)定。
圖5示出通過(guò)消息進(jìn)行的示例性動(dòng)作-對(duì)-動(dòng)作通信。這樣的排列500可用作相關(guān)動(dòng)作的可合成性和同步功能。
在該示例中,由于行動(dòng)者A的活動(dòng),活動(dòng)流的執(zhí)行已到達(dá)將任務(wù)分配給行動(dòng)者B的動(dòng)作512。然后行動(dòng)者B激活動(dòng)作514和516,使動(dòng)作516依賴于動(dòng)作514。例如,動(dòng)作514可以是“委派”動(dòng)作,而動(dòng)作516可以是“升級(jí)”動(dòng)作。行動(dòng)者B可選擇行動(dòng)者C作為委派的目標(biāo),也可指定如果C未在某時(shí)間限制內(nèi)響應(yīng)則向C的管理人員發(fā)送升級(jí)。動(dòng)作516可在這樣的情形框中直到動(dòng)作514超時(shí)并發(fā)送同步消息572。
同步消息572在接口562和564之間發(fā)送。在接收同步消息572之后,動(dòng)作516變得不受障礙并執(zhí)行其功能而向C的管理人員發(fā)送一消息。然后C的管理人員可將流延伸到下一動(dòng)作518。
圖6示出由于通過(guò)動(dòng)作-對(duì)-動(dòng)作通信完成同步的示例性方法600。在612,阻擋動(dòng)作的執(zhí)行。在622被阻動(dòng)作接收一同步消息。在632,被阻動(dòng)作恢復(fù)執(zhí)行。
排列500或600對(duì)于沿平行執(zhí)行路徑協(xié)調(diào)執(zhí)行是有用的,并可被用以實(shí)現(xiàn)超時(shí)條件(諸如當(dāng)行動(dòng)者被分配一任務(wù)時(shí)),但如果行動(dòng)者未在超時(shí)時(shí)段內(nèi)響應(yīng)則任務(wù)升級(jí)。在其它各種各樣通信情形的任一情形中,可使用同步消息(例如監(jiān)視另一動(dòng)作的進(jìn)程)。
示例8-示例性任務(wù)在工作流處理中,常需要對(duì)人類參與者分配工作。這樣的分配可通過(guò)向行動(dòng)者分配任務(wù)來(lái)完成。任務(wù)功能一般可由工作流服務(wù)實(shí)現(xiàn)以由工作流服務(wù)客戶機(jī)支持各種各樣的實(shí)現(xiàn)。有關(guān)任務(wù)的細(xì)節(jié)可由客戶機(jī)軟件處理。例如,工作流服務(wù)可跟蹤有一分配給特定行動(dòng)者的任務(wù),但如何完成該任務(wù)無(wú)需由工作流服務(wù)理解或?qū)崿F(xiàn)。
例如,客戶機(jī)軟件可向人類行動(dòng)者呈現(xiàn)任務(wù),行動(dòng)者作出響應(yīng)并采取其它步驟來(lái)完成該任務(wù)。在許多實(shí)例中,在完成該任務(wù)中涉及人-對(duì)-人的交互,因此實(shí)現(xiàn)工作流服務(wù)中的任務(wù)一般使工作流服務(wù)能夠在更廣泛的情形中有用。
圖7示出通過(guò)它工作流服務(wù)712可支持任務(wù)的示例性排列700。在該示例中,動(dòng)作714可通過(guò)標(biāo)準(zhǔn)接口722發(fā)送任務(wù)消息724。任務(wù)消息724可被導(dǎo)向客戶機(jī)軟件732,732包括任務(wù)獲取功能、任務(wù)完成功能、或兩者734。
工作流服務(wù)724可攔截消息724用于跟蹤目的,并將該消息的指示724存儲(chǔ)在數(shù)據(jù)庫(kù)732中。例如,表格734可指示所分配的任務(wù)和相關(guān)聯(lián)行動(dòng)者。實(shí)際上,可存儲(chǔ)附加信息(例如何時(shí)分配該任務(wù),任務(wù)結(jié)果等)。該信息可取由動(dòng)作收發(fā)的消息的形式,或可由其表示。
圖8示出了用于處理任務(wù)的示例性方法800。在812,任務(wù)消息被發(fā)送給任務(wù)支持軟件。在822,任務(wù)的結(jié)果由工作流服務(wù)從任務(wù)支持軟件接收。
在832,更新工作流服務(wù)的跟蹤系統(tǒng)。這樣,可回答有關(guān)工作流進(jìn)程(例如任務(wù)的進(jìn)程)的查詢,并向用戶呈現(xiàn)誰(shuí)想要監(jiān)視工作流進(jìn)程。
示例9-動(dòng)作的示例性可合成性在此所述的任一示例中,可合成(例如接合在一起)各動(dòng)作以形成活動(dòng)流。由于工作流服務(wù)的設(shè)計(jì),可在活動(dòng)流的執(zhí)行時(shí)間(例如運(yùn)行時(shí)間)合成各動(dòng)作。在與一活動(dòng)流有關(guān)的工作流處理進(jìn)行時(shí),可向活動(dòng)流添加其它動(dòng)作。因而,系統(tǒng)可支持以先驗(yàn)方式(例如在活動(dòng)模型的設(shè)計(jì)期間)、特設(shè)方式(例如在活動(dòng)模型的執(zhí)行期間)、或其某些組合(在特設(shè)基礎(chǔ)上將動(dòng)作添加到以先驗(yàn)方式創(chuàng)建的活動(dòng)流中)。
開(kāi)發(fā)者可設(shè)計(jì)新的動(dòng)作,只要它們符合工作流服務(wù)所支持的模式就可被安裝到系統(tǒng)中。
示例10-示例性約束在此所述的任一示例中,工作流服務(wù)可通過(guò)約束服務(wù)容納各約束。一般約束可被定義為支持各種各樣的形式。例如,約束可估算當(dāng)前情形的各個(gè)方面,并將其與指示哪個(gè)動(dòng)作或目標(biāo)可用于當(dāng)前情形的存儲(chǔ)相比較??上蚩蛻魴C(jī)軟件提供可用動(dòng)作和目標(biāo),該客戶機(jī)軟件可由參與行動(dòng)者考慮在活動(dòng)流的執(zhí)行或構(gòu)建期間呈現(xiàn)它們。
除了在執(zhí)行任一動(dòng)作之前應(yīng)用,約束還可在相關(guān)聯(lián)活動(dòng)流的執(zhí)行時(shí)間應(yīng)用。盡管約束可用以限制行動(dòng)者接下去做什么,它們還可具有在工作流執(zhí)行期間可用動(dòng)作上的引導(dǎo)行動(dòng)者的必然效果。這樣,系統(tǒng)可避免用許多無(wú)意義的選項(xiàng)來(lái)控制用戶,且可呈現(xiàn)簡(jiǎn)單但有效的用戶界面。
一示例性約束限制哪些行動(dòng)者可執(zhí)行哪些動(dòng)作,或基于特定的活動(dòng)模型起動(dòng)活動(dòng)流。例如,對(duì)特定動(dòng)作或活動(dòng)模型的訪問(wèn)可被限制于特定角色、小組或行動(dòng)者。約束服務(wù)一般可參照事實(shí)施加約束。
類似地,成為目標(biāo)的行動(dòng)者(例如可向其分配任務(wù)的)可受到類似的限制。例如,行動(dòng)者僅被允許將一會(huì)計(jì)任務(wù)分配給會(huì)計(jì)部門的人們等。
各種各樣的事實(shí)可被包括以由約束服務(wù)考慮。例如,機(jī)構(gòu)可存儲(chǔ)信息,指示行動(dòng)者名字、相關(guān)聯(lián)部門、行動(dòng)者是否是管理人員、行動(dòng)者的直接報(bào)告等。這樣的事實(shí)可從各個(gè)源中提取,如在此其它地方所述。約束可被定義為通過(guò)知識(shí)庫(kù)可得到的任一事實(shí)。
另外,工作流服務(wù)可支持相關(guān)約束。例如,任務(wù)僅對(duì)升級(jí)行動(dòng)者的管理人員是可升級(jí)的。或者,行動(dòng)者僅被允許將任務(wù)分配給她部門內(nèi)的目標(biāo)行動(dòng)者。因而,可考慮行動(dòng)者和目標(biāo)之間的關(guān)系。
此外,約束可以否定方式定義。例如,不指定可開(kāi)始活動(dòng)流的行動(dòng)者,而可指定不開(kāi)始活動(dòng)流的行動(dòng)者。
還有,工作流動(dòng)作可支持用于轉(zhuǎn)移動(dòng)作的約束。例如,在任務(wù)已被分配給會(huì)計(jì)部門某人的情形中,約束可指定允許哪些行動(dòng)者在該任務(wù)上動(dòng)作(例如升級(jí))并限制轉(zhuǎn)移目標(biāo)(例如要分配給任務(wù)的新人)。約束也可考慮執(zhí)行行動(dòng)者(已將任務(wù)分配給他的目標(biāo)行動(dòng)者)??上鄬?duì)地指定轉(zhuǎn)移動(dòng)作的約束(例如源行動(dòng)者和執(zhí)行行動(dòng)者之間的關(guān)系)。
其它約束可基于文檔類型。例如,如果任務(wù)具有特定文檔類型(例如提議),則約束可控制哪些動(dòng)作和什么目標(biāo)可用。在一活動(dòng)模型中,確定要執(zhí)行的下一動(dòng)作可被實(shí)現(xiàn)為約束的形式。
還有其它約束可基于活動(dòng)流進(jìn)程狀態(tài)(例如,其中活動(dòng)流已在活動(dòng)模型內(nèi)進(jìn)行)。例如,如果活動(dòng)模型與一文檔相關(guān)聯(lián),且該活動(dòng)模型并未被例示(例如進(jìn)程狀態(tài)是“未起動(dòng)”),約束可影響可得到的動(dòng)作。當(dāng)活動(dòng)的活動(dòng)流已起動(dòng)時(shí)(例如進(jìn)程狀態(tài)是“已起動(dòng)”),不同的約束可呈現(xiàn)不同的動(dòng)作。類似地,當(dāng)活動(dòng)流已結(jié)束(例如進(jìn)程狀態(tài)是“已結(jié)束”)時(shí),約束可這樣反映(例如,以不將結(jié)束活動(dòng)流呈現(xiàn)為一選項(xiàng))。可支持其它狀態(tài)(例如結(jié)束特定動(dòng)作等)。
圖9示出涉及用于決定下一可得到動(dòng)作的約束的示例性排列900。在該示例中,工作流服務(wù)正在確定動(dòng)作912的可能的下一動(dòng)作。在該示例中,動(dòng)作922A-922N的任一個(gè)是可能的。取決于圍繞該情形的各個(gè)情況(例如選擇下一動(dòng)作的行動(dòng)者的身份、組合或角色等),下一動(dòng)作集922A-922N受限于由工作流服務(wù)存儲(chǔ)的約束所指示的動(dòng)作子集。確定下一動(dòng)作可由將約束應(yīng)用于當(dāng)前情況的約束引擎來(lái)執(zhí)行。
圖10示出用于實(shí)現(xiàn)活動(dòng)流中約束的示例性方法1000。在1012,例示用于活動(dòng)流的動(dòng)作。然后開(kāi)始執(zhí)行。在活動(dòng)流的執(zhí)行時(shí)間,可用于合成為下一動(dòng)作的各動(dòng)作在1022基于事實(shí)而受限。
以一般方法采用約束啟用了各種各樣的機(jī)制,通過(guò)它們工作流參與者可在工作流執(zhí)行期間受到引導(dǎo)。通常約束通過(guò)管理員進(jìn)行管理,但參與行動(dòng)者可致力于各約束(例如當(dāng)組合成活動(dòng)流時(shí))。
示例11-用于約束的事實(shí)的示例性獲取圖11示出一示例性排列1100,其中工作流服務(wù)為了應(yīng)用約束1132而與一個(gè)或多個(gè)知識(shí)庫(kù)1162A-1162N交互。在該示例中,一個(gè)或多個(gè)相應(yīng)適配器1122A-1122N被用以與知識(shí)庫(kù)1162A-1162N通過(guò)接口相連以獲取事實(shí)。
各事實(shí)在知識(shí)庫(kù)(例如知識(shí)庫(kù)1162A)中的可用性可通過(guò)在工作流服務(wù)中安裝相應(yīng)的知識(shí)庫(kù)適配器(例如適配器1122A)來(lái)完成。適配器1122A包括一映射,通過(guò)它可檢索知識(shí)庫(kù)1162A中的信息用于由工作流服務(wù)1112使用。例如,在應(yīng)用約束1132時(shí),工作流服務(wù)1112可能想要咨詢有關(guān)行動(dòng)者、其位置、安全級(jí)別等的事實(shí)。這樣,對(duì)工作流服務(wù)1112可用的事實(shí)可來(lái)自各種各樣的源。
圖12示出在應(yīng)用約束時(shí)用于使用各事實(shí)的示例性方法1200。在1212,在約束處理期間接收對(duì)事實(shí)的請(qǐng)求。例如,可請(qǐng)求行動(dòng)者的安全級(jí)別或部門。在1222,檢索事實(shí)。然后在1232,檢索到的事實(shí)被用于應(yīng)用約束。
實(shí)際上,可在周期性基礎(chǔ)上或一次性基礎(chǔ)上檢索各事實(shí)(例如從一個(gè)或多個(gè)知識(shí)庫(kù)),并存儲(chǔ)于工作流服務(wù)控制下的從中可完成請(qǐng)求的中央事實(shí)存儲(chǔ)裝置中。
此外,事實(shí)可包括活動(dòng)流的現(xiàn)有進(jìn)程狀態(tài)、與一活動(dòng)流相關(guān)聯(lián)的文檔類型、或其中的某些組合。
實(shí)例12-用于構(gòu)建活動(dòng)模型的示例性可合成性在所述任一示例中,一個(gè)或多個(gè)動(dòng)作可被合成到可例示用以創(chuàng)建活動(dòng)流的動(dòng)作和相關(guān)聯(lián)約束的集合中。這樣的動(dòng)作集有時(shí)被稱為“活動(dòng)模型”。
執(zhí)行活動(dòng)模型有時(shí)被稱為執(zhí)行先驗(yàn)活動(dòng)流,因?yàn)閯?dòng)作已由活動(dòng)模型設(shè)計(jì)者選定。如果需要,活動(dòng)模型設(shè)計(jì)者可將活動(dòng)模型定義為不可變的,從而在相關(guān)聯(lián)活動(dòng)流的執(zhí)行期間不可作改變。
圖13示出示例性活動(dòng)模型1300。在該示例中,對(duì)動(dòng)作定義1322、1324、1326、1328和1330的各個(gè)引用已被組裝成一可調(diào)用單元,該單元可被選擇用于由用戶執(zhí)行(例如當(dāng)受約束允許時(shí))。為了方便用戶,可給予活動(dòng)模型1300一友好名字,通過(guò)該名字可選擇這個(gè)模型。
圖14示出通過(guò)可合成動(dòng)作用于實(shí)現(xiàn)活動(dòng)模型的示例性方法1400。在1412,接收(例如來(lái)自人類行動(dòng)者的)運(yùn)行活動(dòng)模型的請(qǐng)求(例如通過(guò)工作流服務(wù)的客戶機(jī)軟件)。在1422,活動(dòng)流的可合成動(dòng)作基于活動(dòng)模型定義而例示。在1432,動(dòng)作基于活動(dòng)流定義被合成為一活動(dòng)流。例如,動(dòng)作的順序可由活動(dòng)模型定義,從而在完成動(dòng)作之后執(zhí)行活動(dòng)流中的下一動(dòng)作。
示例13-特設(shè)選擇動(dòng)作的示例性可合成性在所述任一示例中,一個(gè)或多個(gè)動(dòng)作可由人類行動(dòng)者合成為一動(dòng)作集以在特設(shè)基礎(chǔ)上形成活動(dòng)流。例如,人類行動(dòng)者可選擇一用于例示的動(dòng)作。如果需要,可由人類行動(dòng)者(例如通過(guò)電子形式)向被例示動(dòng)作提供適于特定環(huán)境的各個(gè)參數(shù)。
圖15示出一示例性活動(dòng)流1500,其中活動(dòng)集1522和1552已在特設(shè)基礎(chǔ)上合成。在該示例中,用戶已選定例示查看動(dòng)作1522,該動(dòng)作導(dǎo)致產(chǎn)生對(duì)目標(biāo)行動(dòng)者的任務(wù)。在該示例中,任務(wù)以用戶界面1532的形式向目標(biāo)行動(dòng)者展示自己,指示目標(biāo)行動(dòng)者查看一項(xiàng)(例如附加文檔)。目標(biāo)行動(dòng)者可選擇認(rèn)可(Approve)(1534)或拒絕(Reject)(1536)該項(xiàng)??商峁┳⒔?Notes)1538。實(shí)際上,可提供更綜合的或其它用戶界面。
然而,在該示例中,目標(biāo)行動(dòng)者并未在所需時(shí)間查看該項(xiàng)。相應(yīng)地,行動(dòng)者(例如選擇例示查看動(dòng)作1522的同一行動(dòng)者或另一行動(dòng)者)已選擇在活動(dòng)流的執(zhí)行時(shí)間(例如在活動(dòng)流已完成之前)添加一升級(jí)動(dòng)作1552。相應(yīng)地,新動(dòng)作1552被例示并被置入活動(dòng)流1500中。結(jié)果,任務(wù)被重新分配給另一目標(biāo)用戶。如果需要,可向查看動(dòng)作1522發(fā)送中斷消息,該動(dòng)作可采取適當(dāng)步驟(例如取消第一目標(biāo)行動(dòng)者的任務(wù))。
作為新任務(wù)的結(jié)果,新的用戶界面1562向目標(biāo)行動(dòng)者顯示。再一次,該用戶界面可包括元素1564、1566和1568。
所示動(dòng)作僅是示例性的。實(shí)際上,按照約束可提供各種各樣的特設(shè)動(dòng)作。
圖16示出用于實(shí)現(xiàn)特設(shè)活動(dòng)流的示例性方法1600。在1612,接收在活動(dòng)流執(zhí)行時(shí)間將動(dòng)作添加到活動(dòng)流的請(qǐng)求。在1622,動(dòng)作在活動(dòng)流的執(zhí)行時(shí)間被合成為一活動(dòng)流。
示例14-將特設(shè)動(dòng)作添加到活動(dòng)模型的示例性可合成性除了支持用于執(zhí)行先驗(yàn)活動(dòng)流和活動(dòng)流的特設(shè)合成的活動(dòng)模型之外,工作流服務(wù)可支持基于特設(shè)基礎(chǔ)上的活動(dòng)模型將活動(dòng)添加到活動(dòng)流中。
圖17示出基于活動(dòng)模型在特設(shè)基礎(chǔ)上將動(dòng)作添加其中的示例性活動(dòng)流700。在該示例中,活動(dòng)流是活動(dòng)模型的一個(gè)實(shí)例,且包括動(dòng)作1722、1724、1726、1728和1730?;趧?dòng)作1788的添加,可改變執(zhí)行流。盡管未示出行動(dòng)者,可將動(dòng)作導(dǎo)向行動(dòng)者(例如分配任務(wù))。
圖18示出用于在特設(shè)基礎(chǔ)上基于活動(dòng)模型將動(dòng)作添加到活動(dòng)流的示例性方法1800。在1812,確定可得到的特設(shè)動(dòng)作(例如基于約束)。例如,然后可將可得到的動(dòng)作發(fā)送給客戶機(jī)軟件用于向人類行動(dòng)者呈現(xiàn)以便選擇。
在1822,接收所需特設(shè)動(dòng)作的指示。例如,客戶機(jī)軟件可指示用戶已選擇的選項(xiàng)。
在1832,特設(shè)動(dòng)作被合成為該活動(dòng)流。工作流服務(wù)的跟蹤服務(wù)可被更新以指示已添加的新動(dòng)作和添加其的行動(dòng)者。
示例15-任務(wù)的示例性特設(shè)動(dòng)作一個(gè)特定的任務(wù)專用的特設(shè)動(dòng)作集可被作成以對(duì)任務(wù)可用。這樣的特設(shè)動(dòng)作在包括任務(wù)的任何時(shí)候可顯示用于由行動(dòng)者選擇(即使它們并未顯現(xiàn)在相關(guān)聯(lián)的活動(dòng)模型中)。這樣的特設(shè)動(dòng)作可基于約束來(lái)有選擇地呈現(xiàn)。
任務(wù)的示例性特設(shè)動(dòng)作包括升級(jí)、委托等等。例如,當(dāng)呈現(xiàn)任務(wù)時(shí),可向行動(dòng)者呈現(xiàn)升級(jí)或委托任務(wù)的選項(xiàng)。這樣的選項(xiàng)是否可用以及可能的目標(biāo)都由各約束來(lái)控制。這樣的選項(xiàng)也可呈現(xiàn)在活動(dòng)流進(jìn)程的特性表示中。這樣,監(jiān)視進(jìn)程的行動(dòng)者可按升級(jí)或委托來(lái)簡(jiǎn)便地繼續(xù)執(zhí)行。
指定這樣的有關(guān)任務(wù)的特設(shè)動(dòng)作的能力可使工作流服務(wù)更為有用,因?yàn)楣ぷ髁魈幚砀心芰憫?yīng)于未曾料到的情況。
示例16-基于用戶身份的示例性約束圖19示出工作流服務(wù)1912基于行動(dòng)者身份支持約束的示例性排列1900。在該示例中,人類行動(dòng)者由工作流服務(wù)1912中的行動(dòng)者1922表示。
已定義約束1914將確定行動(dòng)者1922(即源行動(dòng)者)是否可選擇動(dòng)作1931用于例示以及可選擇哪個(gè)目標(biāo)1934。該確定可基于行動(dòng)者1922的身份。這種身份考慮可包括行動(dòng)者的用戶名、行動(dòng)者是其成員的組合、以及行動(dòng)者1922是其成員的角色。此外,關(guān)系約束可指定行動(dòng)者1922與另一行動(dòng)者具有一關(guān)系。
此外,約束1914將確定可對(duì)動(dòng)作1931指定哪個(gè)目標(biāo)行動(dòng)者1934。目標(biāo)行動(dòng)者1934可以是單個(gè)行動(dòng)者、組合或某些其它名稱。各種約束可使該動(dòng)作(例如通過(guò)與動(dòng)作定義相關(guān)聯(lián)的動(dòng)作id)與所允許的例示行動(dòng)者和目標(biāo)行動(dòng)者相關(guān)聯(lián)(例如對(duì)于特定例示行動(dòng)者)。
實(shí)際上,可實(shí)現(xiàn)約束從而與行動(dòng)者1922相關(guān)聯(lián)的人類行動(dòng)者僅看到如約束1914所示的適當(dāng)選項(xiàng)。這樣,人類行動(dòng)者不會(huì)淹沒(méi)在太多的選擇之中并在工作流處理中受到引導(dǎo)。
圖20示出用于基于行動(dòng)者約束呈現(xiàn)動(dòng)作和目標(biāo)選項(xiàng)的示例性方法2000。在2012,可能的動(dòng)作基于行動(dòng)者身份呈現(xiàn)。在2033,可能的目標(biāo)行動(dòng)者基于行動(dòng)者身份呈現(xiàn)。實(shí)際上,工作流服務(wù)可通過(guò)呈現(xiàn)用于由可接收選擇(例如從選擇列表、單選按鈕、組合框等)的客戶機(jī)軟件呈現(xiàn)的選項(xiàng)來(lái)控制這樣的呈現(xiàn)。
示例17-示例性轉(zhuǎn)移動(dòng)作工作流還可支持對(duì)轉(zhuǎn)移動(dòng)作的約束。轉(zhuǎn)移動(dòng)作包括可應(yīng)用于其它動(dòng)作的通常已具有相關(guān)聯(lián)目標(biāo)行動(dòng)者的那些動(dòng)作。轉(zhuǎn)移動(dòng)作的示例包括委派和升級(jí)。
圖21示出一示例性排列2100,其中工作流系統(tǒng)2112將約束應(yīng)用于轉(zhuǎn)移動(dòng)作。在該示例中,動(dòng)作2131已被應(yīng)用于目標(biāo)行動(dòng)者2134或“行動(dòng)中”行動(dòng)者。行動(dòng)者2122(即源行動(dòng)者)正在把轉(zhuǎn)移動(dòng)作2144應(yīng)用于動(dòng)作2131。
轉(zhuǎn)移動(dòng)作2144是否將顯現(xiàn)為行動(dòng)者2122的選項(xiàng)將取決于約束2114。這樣的確定可基于行動(dòng)者2122的身份、轉(zhuǎn)移動(dòng)作2144的類型、動(dòng)作2131的類型、行動(dòng)中行動(dòng)者2134或其中的某些組合。最后,可通過(guò)約束2114來(lái)控制允許目標(biāo)2148(例如基于同樣的考慮或像選項(xiàng)是否將顯現(xiàn)的其它考慮組合)。
圖22示出用來(lái)基于行動(dòng)中用戶而呈現(xiàn)可能動(dòng)作和可能目標(biāo)的示例性方法。在2212,至少基于行動(dòng)中行動(dòng)者呈現(xiàn)可能動(dòng)作。在2233,至少基于行動(dòng)中行動(dòng)者呈現(xiàn)可能目標(biāo)。
可在任意情形中使用相關(guān)約束。例如,行動(dòng)者可受限于僅在該行動(dòng)者管理的那些行動(dòng)者上執(zhí)行特定的轉(zhuǎn)移動(dòng)作等等。
示例18-示例性跟蹤圖23示出工作流服務(wù)2312支持跟蹤的示例性排列2300。在該示例中,工作流服務(wù)2312支持一個(gè)或多個(gè)活動(dòng)流2322A-2322N的執(zhí)行。有關(guān)執(zhí)行流的信息可被存儲(chǔ)于跟蹤數(shù)據(jù)塊2332用于后來(lái)的檢索。例如,來(lái)自和送往動(dòng)作的消息指示可通過(guò)使用定制攔截器來(lái)存儲(chǔ)以攔截并存儲(chǔ)指示消息的信息。此外,其它信息可被存儲(chǔ)用于構(gòu)建指示工作流處理進(jìn)程的狀態(tài)報(bào)告。
圖24示出用于跟蹤可合成動(dòng)作的活動(dòng)流的跟蹤狀態(tài)的示例性方法2400。在2412,攔截來(lái)自和送往可合成動(dòng)作的消息。在2422,將該信息指示存儲(chǔ)于跟蹤數(shù)據(jù)庫(kù)中。
示例19-工作流狀態(tài)的示例性描繪圖25示出呈現(xiàn)基于跟蹤(例如采集消息)的工作流狀態(tài)的圖形表示的示例性用戶界面2500。在該示例中,各個(gè)框2521、2522、2523、2524、2525和2526表示參與工作流處理(例如活動(dòng)流)的已分配或被分配任務(wù)的行動(dòng)者。此外,用戶界面2500可呈現(xiàn)行動(dòng)者之間的通信。例如,箭頭可包括Julian已認(rèn)可一文檔的指示2534。這樣的指示可以是文本、圖標(biāo)等。另一箭頭包括任務(wù)已被升級(jí)的指示2532。
圖26示出用于呈現(xiàn)活動(dòng)流狀態(tài)的示例性方法2600。在2612,查詢跟蹤庫(kù)。在2622,基于查詢結(jié)果可視化地示出活動(dòng)流。
實(shí)際上,可呈現(xiàn)各種各樣的用戶界面。此外,用戶界面可呈現(xiàn)更多對(duì)人類行動(dòng)者的選項(xiàng),從而他們可在監(jiān)視時(shí)參與工作流。例如,可呈現(xiàn)升級(jí)或中斷選項(xiàng)的選項(xiàng)。
示例20-示例性實(shí)現(xiàn)為Web服務(wù)在所述任一示例中,工作流服務(wù)可作為Web服務(wù)呈現(xiàn)給客戶機(jī)。例如,用戶界面可以由客戶機(jī)提供的HTML窗體來(lái)提供。
示例21-示例性普及界面技術(shù)在所述任一示例中,工作流服務(wù)可通過(guò)一普及用戶界面而被利用。例如,工作流服務(wù)的用戶界面可被組合到通用軟件程序中,諸如電子郵件程序或字處理程序。這樣,通用熟悉的條件可被用作工作流服務(wù)的客戶機(jī)??赏ㄟ^(guò)發(fā)送XML消息(例如根據(jù)SOAP協(xié)議)來(lái)完成通信,而用戶界面可通過(guò)HTML示出。
圖27示出其中工作流服務(wù)呈現(xiàn)為電子郵件程序的用戶界面一部分的示例用戶界面2700。在該示例中,電子郵件程序包括熟悉的文件夾列表2712和收件箱2722。作為收件箱的一部分,任務(wù)顯現(xiàn)。當(dāng)被選中時(shí),電子郵件的預(yù)覽顯現(xiàn)于預(yù)覽窗格2762。
該用戶界面表示目標(biāo)行動(dòng)者的任務(wù)(例如用戶預(yù)覽電子郵件)是要預(yù)覽預(yù)算文檔。該用戶界面元素2764、2766和2768可被用于傳送回工作流服務(wù)。例如,在激活按鈕2764之后,已向目標(biāo)行動(dòng)者起動(dòng)任務(wù)的消息被發(fā)送回動(dòng)作。然后由相關(guān)聯(lián)活動(dòng)流采取適當(dāng)步驟。
與窗格2762相反,可示出圖28的窗格2800。在該示例中,除了子窗格2862的標(biāo)準(zhǔn)任務(wù)選項(xiàng)(例如用戶界面元素2864、2866和2868),用于特設(shè)動(dòng)作的選項(xiàng)顯現(xiàn)于子窗格2872中(例如用戶界面元素2876)。
圖29示出用于通過(guò)普及工作流用戶界面呈現(xiàn)和接受選擇的示例性方法2900。在2912,工作流相關(guān)的用戶界面被呈現(xiàn)于普及應(yīng)用程序中。在2922,用戶(即人類行動(dòng)者)選擇可通過(guò)用戶界面接收。
圖30示出其中用于訪問(wèn)工作流服務(wù)的用戶界面元素被呈現(xiàn)為結(jié)合到文檔編輯(例如字處理或電子制表)程序的用戶界面3000。在該示例中,文檔呈現(xiàn)于文檔窗格3062中。在文檔窗格3062旁邊呈現(xiàn)工作流選項(xiàng)3072。在該示例中,行動(dòng)者可選擇動(dòng)作和目標(biāo)行動(dòng)者的特設(shè)選項(xiàng)顯現(xiàn)。動(dòng)作的起動(dòng)可通過(guò)用戶界面元素3076完成。實(shí)際上,可呈現(xiàn)其它或不同的選項(xiàng)(例如用于認(rèn)可正在編輯的文檔)。
示例22-示例性可發(fā)現(xiàn)性圖31示出可獲取用于激活動(dòng)作3136的激活參數(shù)的指定的示例性排列3100。在該示例中,客戶機(jī)軟件3134(例如動(dòng)作、工作流服務(wù)或某些其它軟件)將一個(gè)查詢發(fā)送給動(dòng)作3136,該動(dòng)作響應(yīng)于用來(lái)激活動(dòng)作的參數(shù)的指定(例如由動(dòng)作3136開(kāi)發(fā)者指定的參數(shù)列表)。實(shí)際上,由于動(dòng)作3136尚未例示,查詢(例如指定動(dòng)作類型)可由工作流服務(wù)發(fā)動(dòng),該工作流服務(wù)可逐個(gè)查閱動(dòng)作類型和參數(shù)列表以確定激活參數(shù)指定。
可以可收集參數(shù)的HTML窗體或轉(zhuǎn)換成這種窗體來(lái)提供指定。例如,查看動(dòng)作可指定要提供的目標(biāo)從而產(chǎn)生適當(dāng)?shù)腍TML窗體由行動(dòng)者來(lái)完成。可使用約束來(lái)填寫適當(dāng)?shù)哪繕?biāo)行動(dòng)者。
圖32示出用于發(fā)現(xiàn)動(dòng)作的激活參數(shù)指定的示例性方法3200。在3212,接收對(duì)激活參數(shù)指定的查詢。在3222,響應(yīng)于查詢提供該指定。
可使用類似方法用于活動(dòng)模型參數(shù)指定的可發(fā)現(xiàn)性??砂l(fā)現(xiàn)性可在動(dòng)作或活動(dòng)流的執(zhí)行時(shí)間執(zhí)行。
示例23-示例性動(dòng)作模板為便于開(kāi)發(fā)動(dòng)作,可向開(kāi)發(fā)者提供模板。圖33示出包括模板動(dòng)作定義3314的示例性排列3300??捎秒S后產(chǎn)生動(dòng)作的適當(dāng)可執(zhí)行代碼的可視化編程語(yǔ)言來(lái)編輯模板。
在該示例中,動(dòng)作的接口可由引腳3322、324、3326和3328表示。模板容許激活消息通過(guò)激活接口3322接收。由該動(dòng)作封裝的激活邏輯3332接收激活消息,并將激活響應(yīng)消息返回到其本身,以便初始化與由動(dòng)作模板接收的其它消息相關(guān)聯(lián)的值。
模板3314還容許依賴合成(例如同步情形)。例如,同步邏輯3342和收聽(tīng)邏輯3344可并行地執(zhí)行。如果動(dòng)作已用依賴方式(例如其進(jìn)一步執(zhí)行依賴于接收來(lái)自另一動(dòng)作的消息)合成,則同步邏輯3342可阻擋執(zhí)行直到從同步接口3324接收消息。
并行地,收聽(tīng)邏輯3344可收聽(tīng)中斷或完成消息。如果接收來(lái)自中斷接口3326的中斷消息,則可執(zhí)行中斷邏輯(例如返回狀態(tài))。
如果未受阻或開(kāi)通,則可執(zhí)行動(dòng)作特定處理(例如商業(yè)邏輯)3352。最后,可執(zhí)行完成邏輯3362,并且一完成消息被送往完成接口3328。該消息由動(dòng)作在收聽(tīng)邏輯3344中接收并導(dǎo)致并行分支也完成。
實(shí)際上,可包括附加或其它邏輯。在完成開(kāi)發(fā)之后,可將動(dòng)作定義安裝到工作流服務(wù)和被定義為與該動(dòng)作相關(guān)聯(lián)的適當(dāng)約束中。
示例24-工作流技術(shù)的示例性執(zhí)行圖34、35、36和37示出了工作流技術(shù)的示例性執(zhí)行。在該示例中,客戶向涉及協(xié)調(diào)對(duì)RFP響應(yīng)的專家組的帳戶管理人發(fā)送對(duì)提議(RFP)的請(qǐng)求。
圖34示出所涉及的行動(dòng)者。客戶3410向帳戶管理人3420發(fā)送RFP文檔(例如通過(guò)電子郵件)例如,文檔可以是字處理文檔。帳戶管理人可向?qū)<?430A-3430D發(fā)送任務(wù)以完成響應(yīng)RFP所需的處理。
圖35-37示出示例性屏幕截圖。圖35示出其中帳戶管理人已接收來(lái)自客戶的電子郵件3520的示例性電子郵件程序3510。包括在該電子郵件中的是電子郵件附件3530形式的RFP文檔。在該示例中,帳戶管理人可通過(guò)將電子郵件3520轉(zhuǎn)發(fā)給電子郵件別名來(lái)基于活動(dòng)模型開(kāi)始一活動(dòng)流(例如“RFP許可”)。該電子郵件可基于電子郵件處理規(guī)則來(lái)進(jìn)行處理以基于活動(dòng)模型開(kāi)始活動(dòng)流,該活動(dòng)模型產(chǎn)生專家3430A-3430D的適當(dāng)任務(wù)并可包括附件3350(或其鏈接)作為任務(wù)的一部分。
圖36示出當(dāng)打開(kāi)與任務(wù)相關(guān)聯(lián)的文檔時(shí)呈現(xiàn)給專家3430A-3430D之一的示例性用戶界面。該用戶界面可以是一熟悉的呈現(xiàn)文檔3620(例如基于附件3530)的文檔編輯(例如字處理)程序3610。
該用戶界面還可包括允許專家3430A-3430D之一升級(jí)任務(wù)或?qū)⑷蝿?wù)委托給另一行動(dòng)者的窗格3630。在該示例中,查看行動(dòng)者將任務(wù)委托給行動(dòng)者“Kerri”并激活用戶界面元素3635。
由于工作流技術(shù)的跟蹤特征,示圖3700可示出上述工作流的狀態(tài)??蛻鬚eter3721通過(guò)發(fā)送電子郵件起動(dòng)工作流。例如,替代手動(dòng)轉(zhuǎn)發(fā)電子郵件,行動(dòng)者Jenny 3722可在其電子郵件收件箱中設(shè)置一規(guī)則以基于檢測(cè)消息主體中的“新RFP”來(lái)自動(dòng)起動(dòng)活動(dòng)模型。專家3723-3725已接收RFP用于查看。Julian 3723已許可RFP,而Michael 3725已將其任務(wù)委托給Kerry 3726,如指示符3732所示。
示例25-任務(wù)的示例性通知圖38示出了當(dāng)任務(wù)被分配給接收行動(dòng)者時(shí)所發(fā)送(例如通過(guò)電子郵件)的示例性通知3800的屏幕截圖。該通知可給出有關(guān)如何響應(yīng)于任務(wù)的指令。該通知可包括與文檔的超鏈接和與任務(wù)的超鏈接。
示例26-消息類型的示例性模式各種消息類型的示例性模式如下所示。消息類型可包括激活、激活響應(yīng)、同步、任務(wù)、完成、以及中斷。盡管某些示例指出為了遵從模式不應(yīng)更改該模式,但可選實(shí)現(xiàn)了使用不同的模式集來(lái)完成相似功能。例如,盡管GUID在示例中被指定,也可使用其它標(biāo)識(shí)符(例如另一唯一標(biāo)識(shí)符)。在各示例中,該工作流系統(tǒng)有時(shí)被稱為人類工作流(“HWS”)。
示例27-激活消息類型的示例性模式Hws_Activate消息是在激活期間用以向動(dòng)作提供參數(shù)的示例性激活消息。一動(dòng)作最多具有與其相關(guān)聯(lián)的一個(gè)激活消息。在該示例中,Hws_Activate消息有三個(gè)HwsMessage節(jié)點(diǎn)下的子元素。它們是HwsSection、ActionSection和Payload(有效載荷),解釋如下HwsSectionHwsSection持有被保留由Hws系統(tǒng)使用的XML元素和屬性的定義。不應(yīng)更改在本部分中定義的元素或?qū)傩?。表?示出在HwsSection節(jié)點(diǎn)下定義的元素/屬性的示例性列表。
表格2-HwsSection節(jié)點(diǎn)下的示例性元素/屬性
這些屬性缺省地創(chuàng)建用于在動(dòng)作模板中引用和使用。
ActionSectionActionSection可由動(dòng)作開(kāi)發(fā)者定制并可包含任何動(dòng)作特定參數(shù)和值以在例示期間被傳遞到動(dòng)作中。本部分可包含對(duì)應(yīng)于動(dòng)作的人類目標(biāo)的元素。ActionSection中元素/屬性的值不由Hws攔截器跟蹤。如果需要應(yīng)跟蹤的屬性,則在預(yù)定義的HwsSection\ActionProperties集合下的實(shí)例文檔中指定它們。
有效載荷模式中的有效載荷節(jié)點(diǎn)是應(yīng)用程序用以指定需要包括在由動(dòng)作發(fā)出的其它消息中的其它信息的占位符。
ο注解激活消息模式攜有由Hws系統(tǒng)使用的注解。有在模式根節(jié)點(diǎn)層次上定義的某些屬性,還有在元素節(jié)點(diǎn)層次上定義的某些屬性。
·模式節(jié)點(diǎn)屬性以下屬性在模式節(jié)點(diǎn)層次上定義。
·描述該屬性中的值被用以描述激活消息與之相關(guān)聯(lián)的動(dòng)作。
·輸入同步消息該屬性指定由與激活消息相關(guān)聯(lián)的控制所接收的同步消息的目標(biāo)名字空間。
·輸出同步消息該屬性指定由與激活消息相關(guān)聯(lián)的控制所發(fā)送的同步消息的目標(biāo)名字空間。
·元素節(jié)點(diǎn)屬性對(duì)于在模式文檔Hws的ActionSection元素下定義的元素節(jié)點(diǎn)定義以下屬性·目標(biāo)這是一布爾值屬性。該值“真”標(biāo)識(shí)該元素節(jié)點(diǎn)是作為由與激活消息相關(guān)聯(lián)的動(dòng)作發(fā)送的一個(gè)或多個(gè)任務(wù)消息的接收者的人類目標(biāo)?!凹佟钡闹祷蛉绻滴粗付ǎ该髟摴?jié)點(diǎn)不是人類目標(biāo)。
每個(gè)激活消息模式可具有在使用模式集中唯一地標(biāo)識(shí)它的目標(biāo)名字空間。
示例28-激活響應(yīng)消息類型的示例性模式Hws_ActivateResponse消息是由動(dòng)作模板內(nèi)部使用以初始化用于接收模板中其它消息的相關(guān)聯(lián)變量集的示例性激活響應(yīng)消息。
Hws_ActivateResponse消息僅有一個(gè)HwsMessage節(jié)點(diǎn)下的子元素。它是HwsSection,解釋如下HwsSectionHwsSection持有被保留由Hws系統(tǒng)使用的XML元素和屬性的定義。不應(yīng)更改在本部分中定義的元素或?qū)傩?。表?示出在HwsSection節(jié)點(diǎn)下定義的元素/屬性的示例性列表。
表格3-HwsSection節(jié)點(diǎn)下的示例性元素/屬性
這些屬性缺省地創(chuàng)建用于初始化由動(dòng)作模板使用的相關(guān)集。
ο注解激活消息模式攜有由Hws系統(tǒng)使用的注解。該注解的值不可用于編輯。
該模式的TargetNamespace通過(guò)URL(例如http//[base]/Hws_ActivateResponse)定義。該模式可被編譯成匯編(例如DLL)并由動(dòng)作模板引用。該消息在動(dòng)作中構(gòu)建并在直接相鄰的端口上收發(fā)。
示例29-同步消息類型的示例性模式Hws_Synchronize消息是從一個(gè)動(dòng)作發(fā)送到另一動(dòng)作以開(kāi)啟接收動(dòng)作的執(zhí)行的示例性同步消息。該接收動(dòng)作實(shí)例應(yīng)已用其激活消息集中的IsDependentOnParent屬性激活為真,以能夠等待同步消息。
在該示例中,Hws_Synchronize消息有三個(gè)在HwsMessage節(jié)點(diǎn)下的子元素。它們是HwsSection、ActionSection和Payload(有效載荷),解釋如下HwsSectionHwsSection持有被保留由Hws系統(tǒng)使用的XML元素和屬性的定義。不應(yīng)更改在本節(jié)中定義的元素或?qū)傩浴1砀?示出在HwsSection節(jié)點(diǎn)下定義的元素/屬性的示例性列表。
表格4-HwsSection節(jié)點(diǎn)下的示例性元素/屬性
這些屬性缺省地創(chuàng)建用于在動(dòng)作模板中引用和使用。
ActionSectionActionSection可由動(dòng)作開(kāi)發(fā)者定制并可包含任何動(dòng)作特定參數(shù)和值以被傳遞到接收動(dòng)作中。
有效載荷模式中的有效載荷節(jié)點(diǎn)是應(yīng)用程序用以指定需要包括在由動(dòng)作發(fā)出的其它消息中的其它信息的占位符。
ο注解同步消息模式具有用于消息描述的注解。該屬性在模式根節(jié)點(diǎn)層次上定義。
·模式節(jié)點(diǎn)屬性以下屬性在模式節(jié)點(diǎn)層次上定義。
·描述該屬性中的值被用以描述同步消息。
每個(gè)同步消息模式都應(yīng)具有在使用模式集中唯一標(biāo)識(shí)它的TargetNamespace(目標(biāo)名字空間)。如果同步消息的目標(biāo)名字空間改變,或者如果新的同步消息模式被添加到動(dòng)作中,則(發(fā)送同步消息或接收它的動(dòng)作的)激活消息上的輸入同步消息和輸出同步消息屬性也需要更新。同步消息可在直接相鄰的端口上收發(fā)。
示例30-任務(wù)消息類型的示例性模式
Hws_Task消息是用于發(fā)送給動(dòng)作參與目標(biāo)的消息的示例性模式。一動(dòng)作可發(fā)送一類或多類任務(wù)消息。它也可發(fā)送給定任務(wù)消息類型的一個(gè)或多個(gè)實(shí)例。Hws_Task消息也可用于將響應(yīng)發(fā)送回動(dòng)作。
Hws_Task消息有三個(gè)在HwsMessage節(jié)點(diǎn)下的子元素。它們是HwsSection、ActionSection和Payload(有效載荷),解釋如下HwsSectionHwsSection持有被保留由Hws系統(tǒng)使用的XML元素和屬性的定義。不應(yīng)更改在本部分中定義的元素或?qū)傩?。表?示出在HwsSection節(jié)點(diǎn)下定義的元素/屬性的示例性列表。
表格5-HwsSection節(jié)點(diǎn)下的示例性元素/屬性
這些屬性缺省地創(chuàng)建用于在動(dòng)作模板中引用和使用。
ActionSectionActionSection可由動(dòng)作開(kāi)發(fā)者定制并可包含任何動(dòng)作特定參數(shù)和值以在例示期間被傳遞到參與目標(biāo)中。也可用于定義目標(biāo)可在其響應(yīng)中提供的任意參數(shù)。
有效載荷模式中的有效載荷節(jié)點(diǎn)是應(yīng)用程序用以指定需要包括在由動(dòng)作發(fā)出的其它消息中的其它信息的占位符。
ο注解任務(wù)消息模式攜有由Hws系統(tǒng)使用的注解。這些屬性在模式根節(jié)點(diǎn)層次上定義。
·模式節(jié)點(diǎn)屬性以下屬性在模式節(jié)點(diǎn)層次上定義。
·描述該屬性中的值被用以描述任務(wù)消息模式。
·目標(biāo)XPath該屬性指定該任務(wù)消息促成的激活消息中目標(biāo)節(jié)點(diǎn)的XPath。
每個(gè)任務(wù)消息模式可具有在使用模式集中唯一地標(biāo)識(shí)它的目標(biāo)名字空間。
示例31-完成消息類型的示例性模式Hws_Finish消息是由動(dòng)作模板內(nèi)部使用并在動(dòng)作完成執(zhí)行時(shí)發(fā)出的示例性完成消息。Hws_Finish消息僅有一個(gè)HwsMessage節(jié)點(diǎn)下的子元素。它是HwsSection,解釋如下HwsSectionHwsSection持有被保留由Hws系統(tǒng)使用的XML元素和屬性的定義。不應(yīng)更改在本節(jié)中定義的元素或?qū)傩?。表?示出在HwsSection節(jié)點(diǎn)下定義的元素/屬性的示例性列表。
表格6-HwsSection節(jié)點(diǎn)下的示例性元素/列表
這些屬性缺省地創(chuàng)建用于初始化由動(dòng)作模板使用的相關(guān)聯(lián)集。
ο注解該完成消息模式具有注解用于描述該消息。該注解的值不可用于編輯。
該模式的TargetNamespace通過(guò)URL(例如http//[base]/Hws_Finish)定義。該模式可被編譯成匯編(例如DLL)并由動(dòng)作模板引用。該消息在動(dòng)作中構(gòu)建并在直接相鄰的端口上收發(fā)。
示例32-中斷消息類型的示例性模式Hws_Interrupt消息是用以中斷動(dòng)作的一個(gè)運(yùn)行實(shí)例的示例性中斷消息。中斷消息可被發(fā)送給單個(gè)動(dòng)作實(shí)例、整個(gè)活動(dòng)流、或整個(gè)活動(dòng)模型實(shí)例。有兩類中斷-中止和退回。
Hws_Interrupt消息僅有一個(gè)在HwsMessage節(jié)點(diǎn)下的子元素。它是HwsSection,解釋如下HwsSectionHwsSection持有被保留由Hws系統(tǒng)使用的XML元素和屬性的定義。不應(yīng)更改在本節(jié)中定義的元素或?qū)傩浴1砀?示出在HwsSection節(jié)點(diǎn)下定義的元素/屬性的示例性列表。
表格7-HwsSection節(jié)點(diǎn)下的示例性元素/屬性
這些屬性缺省地創(chuàng)建用于在動(dòng)作模板中引用和使用。
ο注解中斷消息模式具有用于描述該消息的注解。該注解的值不可用于編輯。
該模式的TargetNamespace可通過(guò)URL(例如http//[base]/Hws_Interrupt)定義。該模式可被編譯成匯編(例如DLL)并由動(dòng)作模板引用。該中斷消息的實(shí)例在模板中通過(guò)ActionInterruptPort上被接收。活動(dòng)流層次或活動(dòng)模型實(shí)例層次上的中斷消息被發(fā)送給當(dāng)前在活動(dòng)流或活動(dòng)模型實(shí)例中活動(dòng)的每個(gè)動(dòng)作。中斷類型Abort(中止)使被中斷動(dòng)作結(jié)束而沒(méi)有補(bǔ)償動(dòng)作已做的工作。Rollback(退回)中斷類型使動(dòng)作能補(bǔ)償已由動(dòng)作完成的工作。
示例33-體系結(jié)構(gòu)的示例性完成圖39示出包括工作流服務(wù)3902的系統(tǒng)3900的體系結(jié)構(gòu)的示例性實(shí)現(xiàn)。在該示例中,客戶機(jī)應(yīng)用程序3904可發(fā)揮工作流服務(wù)3902以使行動(dòng)者能創(chuàng)建并參與工作流。工作流服務(wù)3902可向客戶機(jī)應(yīng)用程序提供三個(gè)主要服務(wù)工作流合成3908、工作流約束3906、以及工作流跟蹤和查看3910。
工作流可由活動(dòng)流中的合成動(dòng)作3912創(chuàng)建。動(dòng)作3912的合成通過(guò)由工作流服務(wù)3902實(shí)施的約束3914來(lái)管理。約束3914可用任意數(shù)眾所周知的方法來(lái)定義,包括通過(guò)工作流經(jīng)營(yíng)和管理(例如MMC)或通過(guò)編程方法的管理API。
這些約束3914的定義可利用事實(shí)檢索器展現(xiàn)的事實(shí)。事實(shí)檢索器可實(shí)現(xiàn)一標(biāo)準(zhǔn)接口從而約束服務(wù)3906可查詢這些事實(shí)并將其應(yīng)用于工作流中。事實(shí)檢索器可展現(xiàn)來(lái)自任意下層數(shù)據(jù)源3916的事實(shí),諸如活動(dòng)目錄或SQL數(shù)據(jù)庫(kù)。
客戶機(jī)應(yīng)用程序3904可在需要參與活動(dòng)流時(shí)向工作流服務(wù)3902登記。合成服務(wù)3908可使唯一ID與客戶機(jī)請(qǐng)求相關(guān)聯(lián),并使用該ID跟蹤行動(dòng)者將其作為活動(dòng)流一部分的動(dòng)作3912。
跟蹤服務(wù)3910可被用以跟蹤活動(dòng)流的狀態(tài)并按客戶機(jī)所要求的重建該活動(dòng)流。當(dāng)客戶機(jī)嘗試將動(dòng)作3912附于活動(dòng)流時(shí),約束服務(wù)3906可檢查約束(例如基于事實(shí)存儲(chǔ)3916或流的狀態(tài))以查看哪個(gè)動(dòng)作3912可附在活動(dòng)流上。例如,示出選項(xiàng)可限于在約束下可用的選項(xiàng)。在用戶從受約束集合中選擇一動(dòng)作之后,合成服務(wù)3908可將選中動(dòng)作與那些已在使用的進(jìn)行合成。
可提供動(dòng)作以發(fā)出由跟蹤服務(wù)3910消費(fèi)的跟蹤事件。然后可由客戶機(jī)訪問(wèn)這些事件以向行動(dòng)者提供最近的工作流。
示例34-用于訪問(wèn)工作流服務(wù)的用戶界面的示例性實(shí)現(xiàn)圖40示出用于訪問(wèn)工作流服務(wù)的用戶界面4000的示例性實(shí)現(xiàn)。在該示例中,示出活動(dòng)流的圖形表示,并向用戶呈現(xiàn)升級(jí)任務(wù)的選項(xiàng)(例如通過(guò)右擊行動(dòng)者)。
示例35-用于建立動(dòng)作的模板的示例性實(shí)現(xiàn)圖41示出用于建立動(dòng)作的示例性模板4100。在該示例中,模板4100在可視化編程環(huán)境中呈現(xiàn),但它也可用其它方法呈現(xiàn)。模板4100可處理各種各樣的情況,從而開(kāi)發(fā)者僅需引入用于特定情況的邏輯。例如,依賴合成可由模板支持。
模板4100可包括激活接收器邏輯4110。活動(dòng)可在限于HTTP傳送的單向端口上接收激活消息。然后可創(chuàng)建ActiveResponse消息。該響應(yīng)消息被用以初始化后來(lái)在控制中使用的相關(guān)聯(lián)集合。該動(dòng)作向其本身發(fā)送消息。它可使用ActionDirectBoundOutPort的SendOrReceiveActiveResponse操作來(lái)發(fā)出消息并使用ActionDirectBoundInPort來(lái)接收返回的消息。模板部分4110還可查看ParentActionInstanceID或ActivityModeInstanceID的值是否是空的標(biāo)識(shí)符(例如空的GUID)。如果這樣,它可產(chǎn)生屬性的新的標(biāo)識(shí)符值。如果所例示動(dòng)作沒(méi)有父動(dòng)作或如果動(dòng)作未例示為活動(dòng)模型的一部分,則這些將是空的標(biāo)識(shí)符。如果有許多這樣的動(dòng)作實(shí)例,可創(chuàng)建對(duì)完成和中斷消息類型的等量的非唯一訂閱,這可負(fù)面地影響性能。
這樣的情形可通過(guò)產(chǎn)生新的標(biāo)識(shí)符來(lái)避免,并且由于并未期望訂閱在這樣的情況中完成這是安全的。訂閱的唯一性確保有效訂購(gòu)者的消息的路由性能沒(méi)有下降。
并行語(yǔ)句4120有兩個(gè)分支。左分支允許動(dòng)作與另一動(dòng)作合成(例如4130),并還提供模板內(nèi)定制開(kāi)發(fā)的場(chǎng)所(例如4140)。右分支允許動(dòng)作收聽(tīng)中斷和完成消息(例如4150)。
判定框4130(放大為圖42)查看是否用將動(dòng)作按依賴于另一動(dòng)作的意圖來(lái)激活該動(dòng)作。在4210檢查激活消息中的IsDependentOnParent升級(jí)屬性。如果有,則在4230等待接收來(lái)自父動(dòng)作的同步消息或完成消息。
同步消息或完成消息的接收框(4250或4240)基于父動(dòng)作的實(shí)例id來(lái)使用相互關(guān)聯(lián)集。在接收同步消息之后,執(zhí)行繼續(xù)ScopeAllActionSpecificLogic并可執(zhí)行由開(kāi)發(fā)者在4255引入的邏輯。
而完成消息的接收,則導(dǎo)致動(dòng)作在4245結(jié)束。這樣,在終止之前動(dòng)作經(jīng)直接相鄰的端口向消息框發(fā)出完成消息以表示其完成。
在同步消息上使用的相互關(guān)聯(lián)集合可被擴(kuò)展成包括在激活消息外創(chuàng)立的其它屬性。也可在同步消息的接收框4250上使用附加的相關(guān)聯(lián)集合。
收聽(tīng)與同步消息并行的完成消息使依賴動(dòng)作能在父動(dòng)作結(jié)束時(shí)不發(fā)送同步消息而清空。
定制邏輯(例如商業(yè)邏輯)可被結(jié)合到用于定制開(kāi)發(fā)的場(chǎng)所4140。在場(chǎng)所4140周圍定義有事務(wù)范圍和補(bǔ)償框。這使定制補(bǔ)償能在請(qǐng)求退回操作的中斷消息發(fā)送給動(dòng)作時(shí)或在動(dòng)作中有未知例外產(chǎn)生時(shí)被建立。
4150收聽(tīng)多個(gè)訂購(gòu)的基于中斷消息的實(shí)例。它也收聽(tīng)來(lái)自它本身的完成消息。該動(dòng)作在三個(gè)粒度級(jí)別上訂購(gòu)中斷消息動(dòng)作實(shí)例級(jí)、活動(dòng)流級(jí)和活動(dòng)模型級(jí)。中斷消息可請(qǐng)求動(dòng)作操作的中止或退回。中斷消息的接收致使在動(dòng)作中產(chǎn)生中止或退回例外。這些例外在模板內(nèi)被捕捉(例如在4160),且例外處理器在4140調(diào)用對(duì)ScopeAllSpecificLogic范圍的補(bǔ)償。
收聽(tīng)框4150中的其它消息是來(lái)自它本身的完成消息。該消息由動(dòng)作本身產(chǎn)生,并通過(guò)并行語(yǔ)句4120左邊分支中的直接相鄰端口被發(fā)送到消息框。該消息在ScopeAllSpecificLogic范圍完成之后馬上發(fā)送。該消息在右邊分支中的接收使收聽(tīng)框ListenForAbortOrFinish完成且該分支結(jié)束。
動(dòng)作部分4160具有對(duì)中止、退回和未知例外的例外處理器。中止和退回例外在接收中斷消息之后在動(dòng)作內(nèi)產(chǎn)生。中止例外的例外處理器建立并發(fā)送指示動(dòng)作完成的完成消息,然后進(jìn)入中止?fàn)顟B(tài)。退回例外的例外處理器在建立和發(fā)送完成消息之前調(diào)用補(bǔ)償框CompensateForAllActionSpecificLogic。然后它進(jìn)入結(jié)束狀態(tài)。
未知例外的例外處理器也在建立和發(fā)送完成消息然后結(jié)束之前調(diào)用補(bǔ)償框CompensateForAllActionSpecificLogic。
每個(gè)例外處理器可經(jīng)直接相鄰端口向消息框發(fā)送完成消息。該消息向其它子動(dòng)作指示出它們被獨(dú)立合成到該動(dòng)作并尚未接收到結(jié)束的同步消息。該完成消息由獨(dú)立合成的子動(dòng)作接收(例如在4230)。
4170收聽(tīng)來(lái)自父動(dòng)作的完成消息。如果未收到消息則超時(shí)(例如5秒后);然后動(dòng)作完成。這使得動(dòng)作消費(fèi)了來(lái)自父動(dòng)作的路由但未經(jīng)消費(fèi)的一個(gè)完成消息。如果父動(dòng)作發(fā)送一同步消息隨后馬上發(fā)送一完成消息,則該情況發(fā)生。僅有同步消息由收聽(tīng)框內(nèi)依賴子動(dòng)作消費(fèi)(例如4230)。完成消息被傳遞給子動(dòng)作,但由于收聽(tīng)框僅接受兩個(gè)消息中的第一個(gè)它并未消費(fèi)。如果子動(dòng)作不消費(fèi)該消息就完成且該模式還對(duì)其它實(shí)例持續(xù),則眾多獨(dú)立消息條目可在消息框數(shù)據(jù)庫(kù)中建立從而負(fù)面影響性能。有了收聽(tīng)框4170,則如果完成消息已被路由到動(dòng)作中,可避免動(dòng)作不消費(fèi)該完成消息就完成。
示例36-各技術(shù)的結(jié)合來(lái)自所述任一示例的技術(shù)可與在此所述的一個(gè)或多個(gè)其它示例的任意組合中的技術(shù)相結(jié)合。
示例37-示例性計(jì)算機(jī)系統(tǒng)在此所述的任一示例性系統(tǒng)可通過(guò)運(yùn)行在計(jì)算機(jī)系統(tǒng)上的軟件來(lái)實(shí)現(xiàn),諸如包括運(yùn)行各種操作系統(tǒng)的任一種(包括微軟Windows操作系統(tǒng)和其它)的基于微處理器系統(tǒng)的通用可編程計(jì)算機(jī)。這樣的計(jì)算機(jī)系統(tǒng)可包括或結(jié)合計(jì)算機(jī)可讀介質(zhì)工作,諸如RAM、ROM、硬盤、CD-ROM、DVD-ROM等。
示例38-示例性計(jì)算機(jī)可執(zhí)行指令在此所述的任一示例性方法可由包括存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)可執(zhí)行指令的軟件來(lái)實(shí)現(xiàn)。
可選方案按照可應(yīng)用本發(fā)明各原理的許多可能實(shí)施例,應(yīng)理解所示實(shí)施例僅是本發(fā)明的示例,且不應(yīng)作為本發(fā)明范圍的限制。相反,本發(fā)明的范圍包括以下權(quán)利要求所涵蓋的。因此我們聲明本發(fā)明出自這些權(quán)利要求的范圍和精神。
權(quán)利要求
1.一種自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,包括一動(dòng)作合成服務(wù),它可操作用來(lái)將多個(gè)動(dòng)作合成為活動(dòng)流,其中所述合成服務(wù)可作為服務(wù)由客戶機(jī)程序訪問(wèn);一約束服務(wù),它可操作用來(lái)根據(jù)所存儲(chǔ)的約束來(lái)提供可用的任選項(xiàng),其中所述約束服務(wù)可作為服務(wù)由所述客戶機(jī)程序訪問(wèn);以及一跟蹤服務(wù),它可操作用來(lái)提供所述活動(dòng)流的進(jìn)程,其中所述跟蹤服務(wù)可作為服務(wù)由所述客戶機(jī)程序訪問(wèn)。
2.如權(quán)利要求1所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述合成服務(wù)、約束服務(wù)和跟蹤服務(wù)被提供為可由所述客戶機(jī)程序訪問(wèn)的單個(gè)服務(wù)。
3.如權(quán)利要求2所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述單個(gè)服務(wù)是web服務(wù)。
4.如權(quán)利要求2所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述單個(gè)服務(wù)可操作用以通過(guò)基于SOAP的協(xié)議與所述客戶機(jī)程序通信。
5.如權(quán)利要求2所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述單個(gè)服務(wù)是客戶機(jī)不可知的。
6.如權(quán)利要求1所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述約束服務(wù)可操作用來(lái)基于行動(dòng)者的身份約束可用動(dòng)作,其中所述可用動(dòng)作向所述行動(dòng)者呈現(xiàn)為任選項(xiàng)。
7.如權(quán)利要求1所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述約束服務(wù)可操作用來(lái)基于行動(dòng)者的身份約束目標(biāo)行動(dòng)者,其中所述目標(biāo)行動(dòng)者向所述行動(dòng)者呈現(xiàn)為任選項(xiàng)。
8.如權(quán)利要求1所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述約束服務(wù)可操作用來(lái)基于行動(dòng)中行動(dòng)者的身份約束轉(zhuǎn)移動(dòng)作。
9.如權(quán)利要求1所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述動(dòng)作合成服務(wù)可操作用來(lái)在所述活動(dòng)流的執(zhí)行時(shí)間將可執(zhí)行動(dòng)作添加到所述活動(dòng)流。
10.如權(quán)利要求1所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述動(dòng)作合成服務(wù)可操作用來(lái)基于具有相關(guān)聯(lián)多個(gè)動(dòng)作的預(yù)定義的活動(dòng)模型例示活動(dòng)流。
11.如權(quán)利要求1所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述約束服務(wù)可操作用來(lái)以對(duì)事實(shí)的一般方式約束選項(xiàng)。
12.如權(quán)利要求10所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述動(dòng)作合成服務(wù)還可操作用來(lái)在所述活動(dòng)流的執(zhí)行時(shí)間基于所述預(yù)定義的活動(dòng)模型將可執(zhí)行動(dòng)作添加到所述活動(dòng)流中。
13.如權(quán)利要求12所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述約束服務(wù)可操作用來(lái)指示作為所述活動(dòng)流一部分而產(chǎn)生的任務(wù)的一可用特設(shè)動(dòng)作集。
14.如權(quán)利要求13所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述可用動(dòng)作可基于行動(dòng)者身份受到約束。
15.如權(quán)利要求13所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述可用動(dòng)作基于與行動(dòng)者身份的相對(duì)關(guān)系受到約束。
16.如權(quán)利要求1所述的自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,所述自動(dòng)化工作流服務(wù)系統(tǒng)包括以下功能可發(fā)現(xiàn)性功能,它可操作用來(lái)提供響應(yīng)于查詢對(duì)動(dòng)作的激活參數(shù)的指定。
17.一種自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,包括一活動(dòng)流合成服務(wù),它可操作用來(lái)經(jīng)基于SOAP的協(xié)議與客戶機(jī)通信,并響應(yīng)于來(lái)自所述客戶機(jī)的請(qǐng)求例示多個(gè)被例示動(dòng)作,所述活動(dòng)流合成服務(wù)還可操作用來(lái)響應(yīng)于來(lái)自所述客戶機(jī)的通信在活動(dòng)流的執(zhí)行時(shí)間將一動(dòng)作例示添加到所述活動(dòng)流中;一事實(shí)存儲(chǔ),包括經(jīng)具有相應(yīng)知識(shí)庫(kù)模式的知識(shí)庫(kù)適配器從多個(gè)知識(shí)庫(kù)中提取的多個(gè)事實(shí);一約束服務(wù),它可操作用來(lái)經(jīng)所述基于SOAP協(xié)議與所述客戶機(jī)通信,并可操作用來(lái)基于所述活動(dòng)流的參與行動(dòng)者的身份實(shí)施約束,所述約束服務(wù)還可操作用來(lái)基于所述事實(shí)存儲(chǔ)實(shí)施約束;以及一跟蹤服務(wù),它可操作用來(lái)跟蹤來(lái)自和送往所述例示動(dòng)作的消息。
18.一種自動(dòng)化工作流服務(wù)系統(tǒng),其特征在于,包括一合成裝置,它可操作用來(lái)將多個(gè)動(dòng)作合成為活動(dòng)流,其中所述合成裝置可作為服務(wù)由客戶機(jī)程序訪問(wèn);一約束裝置,它可操作用來(lái)根據(jù)所存儲(chǔ)的約束來(lái)提供可用選項(xiàng),其中所述約束裝置可作為服務(wù)由所述客戶機(jī)程序訪問(wèn);以及一跟蹤裝置,它可操作用來(lái)提供所述活動(dòng)流的進(jìn)程,其中所述跟蹤裝置可作為服務(wù)由所述客戶機(jī)程序訪問(wèn)。
19.一種提供自動(dòng)化工作流服務(wù)的方法,其特征在于,所述方法包括在一服務(wù)上,接收來(lái)自客戶機(jī)程序的請(qǐng)求以將動(dòng)作例示為活動(dòng)流的一部分,并例示作為響應(yīng)的所述動(dòng)作;在所述服務(wù)上,接收對(duì)在所述活動(dòng)流執(zhí)行期間可用的選項(xiàng)的請(qǐng)求,并提供作為響應(yīng)的選項(xiàng)列表;以及在所述服務(wù)上,接收對(duì)所述活動(dòng)流狀態(tài)的請(qǐng)求并提供作為響應(yīng)的狀態(tài)信息。
20.一種或多種具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令用于執(zhí)行如權(quán)利要求19所述的方法。
21.如權(quán)利要求19所述的方法,其特征在于,所述服務(wù)被實(shí)現(xiàn)為web服務(wù)。
22.如權(quán)利要求19所述的方法,其特征在于,所述客戶機(jī)程序經(jīng)基于SOAP協(xié)議與所述服務(wù)交互。
23.如權(quán)利要求19所述的方法,其特征在于,所述服務(wù)是客戶機(jī)不可知的。
24.如權(quán)利要求19所述的方法,其特征在于,所述選項(xiàng)列表是基于行動(dòng)者身份和所存儲(chǔ)約束而提供的一可用動(dòng)作列表。
25.如權(quán)利要求19所述的方法,其特征在于,所述選項(xiàng)列表是基于行動(dòng)者身份和所存儲(chǔ)約束而提供的一可用目標(biāo)行動(dòng)者列表。
26.如權(quán)利要求19所述的方法,其特征在于,所述選項(xiàng)列表是基于轉(zhuǎn)移動(dòng)作的行動(dòng)中的目標(biāo)行動(dòng)者而提供的一可用目標(biāo)行動(dòng)者列表。
27.如權(quán)利要求19所述的方法,其特征在于,所述來(lái)自所述客戶機(jī)程序?qū)舅鰟?dòng)作的請(qǐng)求在所述活動(dòng)流的執(zhí)行時(shí)間接收。
28.一種完成文檔的工作流處理的方法,其特征在于,所述方法包括起動(dòng)一活動(dòng)流,其中所述活動(dòng)流將與所述文檔相關(guān)聯(lián)的多個(gè)任務(wù)分配給多個(gè)行動(dòng)者;以及響應(yīng)于所述行動(dòng)者在任務(wù)上的動(dòng)作,更新所述活動(dòng)流的狀態(tài)。
29.如權(quán)利要求28所述的方法,其特征在于,所述例示響應(yīng)于以電子形式接收所述文檔查看者的指示而執(zhí)行,其中所述行動(dòng)者包括所述查看者。
30.如權(quán)利要求28所述的方法,其特征在于,還包括在將所述任務(wù)之外的任務(wù)分配給所述行動(dòng)者之外的行動(dòng)者之后,將電子郵件通知發(fā)送給與所述文檔有超鏈接的所述行動(dòng)者。
31.如權(quán)利要求28所述的方法,其特征在于,還包括在將所述任務(wù)之外的任務(wù)分配給所述行動(dòng)者之外的行動(dòng)者之后,將電子郵件通知發(fā)送給與所述任務(wù)有超鏈接的所述行動(dòng)者。
32.如權(quán)利要求28所述的方法,其特征在于,所述行動(dòng)者的動(dòng)作包括委托一任務(wù)。
33.如權(quán)利要求28所述的方法,其特征在于,所述行動(dòng)者的動(dòng)作包括升級(jí)一任務(wù)。
34.如權(quán)利要求28所述的方法,其特征在于,所述行動(dòng)者的動(dòng)作包括提供對(duì)所述文檔的許可。
35.如權(quán)利要求28所述的方法,其特征在于,所述行動(dòng)者的動(dòng)作包括提供對(duì)所述文檔的評(píng)論。
36.如權(quán)利要求28所述的方法,其特征在于,所示起動(dòng)響應(yīng)于接收包括發(fā)送給電子郵件別名用于起動(dòng)所述活動(dòng)流的所述附加文檔的電子郵件而起動(dòng)。
全文摘要
自動(dòng)化工作流服務(wù)系統(tǒng)可適應(yīng)各種各樣的工作流情形??上蚩蛻魴C(jī)程序提供合成服務(wù)、約束服務(wù)和跟蹤服務(wù)。該合成服務(wù)可支持用于活動(dòng)流的動(dòng)作的客戶機(jī)導(dǎo)向的例示?;顒?dòng)流可基于活動(dòng)模型、在特設(shè)基礎(chǔ)上構(gòu)建、或兩者的組合。動(dòng)作可在活動(dòng)流的執(zhí)行時(shí)間被添加到活動(dòng)流中。跟蹤服務(wù)可跟蹤來(lái)自和發(fā)往動(dòng)作的消息。
文檔編號(hào)G06Q10/00GK101044498SQ200480003256
公開(kāi)日2007年9月26日 申請(qǐng)日期2004年7月27日 優(yōu)先權(quán)日2003年12月19日
發(fā)明者I·阿茲孜, K·-K·翁, H·A·蒂耿 申請(qǐng)人:微軟公司