專利名稱:用于對過程中心的程序的取消建模的框架的制作方法
用于對過程中心的程序的取消建模的框架
祖旦 冃豕
面向過程或過程中心的程序已發(fā)展成能夠處理對自治代理之間的現(xiàn)實交 互建模的復(fù)雜指令。過程中心的程序反映了現(xiàn)實過程并反映了現(xiàn)實實體之間的 交互。過程中心的程序反映了現(xiàn)實過程并反映了現(xiàn)實實體之間的交互?,F(xiàn)有的 系統(tǒng)通過對商業(yè)問題建模來試圖將商業(yè)問題映射為高級工作流。然而,現(xiàn)實工
作流在各個方面有所不同,諸如(a)執(zhí)行和建模的復(fù)雜性、(b)在設(shè)計時對 流程的結(jié)構(gòu)的了解、(c)靜態(tài)定義或自組織/動態(tài)的、(d)在其生命周期的各 個時間創(chuàng)作和編輯流程的容易程度以及(e)商業(yè)邏輯與核心工作流過程之間 弱或強的關(guān)聯(lián)?,F(xiàn)有的模型不能適應(yīng)所有這些因素。
此外,大多數(shù)現(xiàn)有工作流模型是基于以下中任一的基于語言的方法(例 如,BPEL4WS、 XLANG/S以及WSFL)或基于應(yīng)用程序的方法?;谡Z言的 方法是具有幫助向用戶/編程員對工作流過程建模的預(yù)定義構(gòu)造的閉集的高級
工作流語言。工作流語言攜帶允許用戶構(gòu)建工作流模型的構(gòu)造的閉集的所有語 義信息。然而,語言不是可由開發(fā)員擴(kuò)展的,且表示構(gòu)成工作流模型的原語的 閉集。語言被綁定至由工作流系統(tǒng)廠商裝運的語言編譯器。僅工作流系統(tǒng)產(chǎn)品 廠商可通過用產(chǎn)品將來版本中的一組新構(gòu)造擴(kuò)展語言來擴(kuò)展模型。這通常要求 升級與該語言相關(guān)聯(lián)的編譯器。此外,語言通常不會聲明性地展示或定義可由 其它程序容易且高效使用的功能或操作。
基于應(yīng)用程序的方法是在應(yīng)用程序內(nèi)具有解決域?qū)S脝栴}的工作流能力 的應(yīng)用程序。這些應(yīng)用程序不是真正可擴(kuò)展的,它們也不具有可編程模型。
此外,采用現(xiàn)有的方法,復(fù)雜性、預(yù)知、動態(tài)工作流、創(chuàng)作容易程度以及 與業(yè)務(wù)邏輯和核心工作流的關(guān)聯(lián)的強度的問題未被充分解決。不存在構(gòu)建可視 工作流設(shè)計器以對不同類的工作流建模的可用的可擴(kuò)展、可定制且可重新主宿 的工作流設(shè)計器框架。現(xiàn)有的系統(tǒng)缺乏快速應(yīng)用程序開發(fā)(RAD)樣式的工作 流設(shè)計體驗,該體驗允許用戶用圖形設(shè)計工作流過程并用設(shè)計員選擇的編程語言關(guān)聯(lián)業(yè)務(wù)邏輯。
而且,工作流過程橫跨工作流過程模型多步處理交叉切割的互不相關(guān)且糾 纏的問題。例如,盡管工作流過程的一部分被設(shè)計為參與長期運行的事務(wù),而 同一過程的其它部分被設(shè)計用于并發(fā)執(zhí)行或訪問共享資源。由于設(shè)計缺陷,現(xiàn) 有的系統(tǒng)不能提供執(zhí)行線程的交錯,而線程的交錯允許用戶設(shè)計活動的同步或 交錯執(zhí)行。同一工作流過程的另外其它部分要求跟蹤,而其它部分處理商業(yè)或 應(yīng)用級異常。需要對工作流過程的一個或多個部分應(yīng)用某些行為。
某些工作流建模方法是不實際的,因為它們要求對整個商業(yè)過程包括異常 和人類干預(yù)在內(nèi)的完整的基于流的描述。這些方法中的某些在異常發(fā)生時提供 附加的功能,而其它方法排他地采用基于約束的方法而非基于流的方法來對商 業(yè)過程建?!,F(xiàn)有的系統(tǒng)或者實現(xiàn)基于流的方法或者實現(xiàn)基于約束的方法。這 樣的系統(tǒng)對于對眾多常見的商業(yè)情形建模而言太不靈活。這些系統(tǒng)也缺乏異步 處理異常或取消的能力。
概述
本發(fā)明的實施例通過在狀態(tài)自動機(jī)中定義正在取消狀態(tài)來提供對程序中 的取消建模的聲明性框架。此外,采用正在取消狀態(tài)和本發(fā)明的其它方面,開 發(fā)員或程序員可聲明性地定義和向用戶提供對程序中取消的處理。
此外,本發(fā)明的實施例允許合成活動(例如,具有分層結(jié)構(gòu)的一組活動) 取消一個或多個活動(例如,活動樹中的子活動)的執(zhí)行。而且,體現(xiàn)本發(fā)明 各方面的取消允許對在程序和動態(tài)控制流內(nèi)的提前完成建模。
提供本概述以便以簡化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一 些概念。該概述不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨 在用于幫助確定所要求保護(hù)的主題的范圍。
其它特征的一部分將是顯而易見的, 一部分將在下文中指出。
附圖簡述
圖1是示出現(xiàn)有編程范例的框圖。
圖2是示出根據(jù)本發(fā)明的實施例的工作流設(shè)計框架的虛擬化的示例性框圖。
圖3是示出根據(jù)本發(fā)明的實施例的示例性工作流的示例性示意圖。 圖4是示出根據(jù)本發(fā)明的實施例的用于處理工作流活動的系統(tǒng)的示例性 計算環(huán)境的示意圖。
圖5是示出根據(jù)本發(fā)明的實施例的工作流活動的分層結(jié)構(gòu)的示意圖。
圖6是示出根據(jù)本發(fā)明的實施例描述與活動相關(guān)聯(lián)的工作項目的處理狀
態(tài)的示例性狀態(tài)自動機(jī)的示意圖。
圖7A到7E是示出根據(jù)本發(fā)明的實施例對活動的工作項目聲明性取消的 框圖。
圖8是示出根據(jù)本發(fā)明的實施例用于取消工作流的活動的工作項目的方 法的流程圖。
圖9是示出可在其上存儲本發(fā)明的各方面的示例性計算機(jī)可讀介質(zhì)的框圖。
相應(yīng)的附圖標(biāo)記在各附圖中指示相應(yīng)的部分。 詳細(xì)描述
首先參考圖1,框圖示出了用于對諸如工作流的過程中心活動設(shè)計程序的 現(xiàn)有的編程范例。例如,示意圖示出現(xiàn)有的程序范例的三級虛擬化模型,托管 執(zhí)行環(huán)境級是最高級,處理單元是最低級。在該編程設(shè)計系統(tǒng)中,即使在托管 執(zhí)行環(huán)境級處,程序尤其是處理工作流過程的過程中心程序,缺乏適應(yīng)工作流 中各過程之間的復(fù)雜交互的能力和效率。
本領(lǐng)域的技術(shù)人員已知,某些約束與設(shè)計軟件或應(yīng)用程序相關(guān)聯(lián)。在這些 示例中,當(dāng)編寫操作系統(tǒng)軟件程序104時,程序代碼或例程是根據(jù)處理單元102 的類型或配置的、對一類計算體系結(jié)構(gòu)(例如,IBM⑧可兼容、APPLE⑧計算 機(jī)或其它系統(tǒng))專用或其它約束。此外,編程語言通常需要準(zhǔn)確標(biāo)識和利用數(shù) 據(jù)結(jié)構(gòu),諸如堆棧、堆、線程庫或其它硬件專用結(jié)構(gòu)以便操作系統(tǒng)104能正確 運作。
當(dāng)處理復(fù)雜工作流過程時,現(xiàn)有應(yīng)用程序使用托管執(zhí)行環(huán)境106 (例如, 其中程序可共享功能或通用的面向?qū)ο箢惖倪\行時環(huán)境)的概念,其中由一種編程語言編寫的程序可調(diào)用用不同的編程語言編寫的其它程序中的功能。在這 樣的執(zhí)行環(huán)境中,采用不同編程語言的這些程序被編譯成中間語言,使得托管 執(zhí)行環(huán)境106可展示不同程序的參數(shù)、自變量或模式或功能,使得程序可彼此 交互。
盡管該執(zhí)行環(huán)境106在程序之間創(chuàng)建通用的通信環(huán)境,但執(zhí)行環(huán)境106
包括可能不適于處理過程中心程序的復(fù)雜程度和容量的各種嚴(yán)格要求。例如,
執(zhí)行環(huán)境106要求程序被確認(rèn)為特定文件格式。執(zhí)行環(huán)境106也要求程序中的 功能或操作使用由執(zhí)行環(huán)境106定義的固定的一組功能或一類功能。
本發(fā)明的實施例在圖2中的可擴(kuò)展基礎(chǔ)或框架202上構(gòu)建,以克服現(xiàn)有編 程模型的缺點。通過允許以任何編程語言編寫并以任何文件格式編排程序,本 發(fā)明的各方面允許程序開發(fā)員設(shè)計具有特定功能的程序,而不損害其功能和細(xì) 節(jié)。通過將諸如工作流任務(wù)或過程的活動定義為要在工作流框架中執(zhí)行的基 類,開發(fā)員可容易且高效地構(gòu)建域?qū)S?例如,諸如衛(wèi)生保健行業(yè)、金融行業(yè) 等中的程序的特定執(zhí)行環(huán)境)的操作代碼(后文中稱為"操作代碼"),而無需 依附現(xiàn)有執(zhí)行環(huán)境中的剛性、硬編碼、不靈活且固定的一組功能或活動類。此 外,體現(xiàn)本發(fā)明各方面的工作流基礎(chǔ)是層疊在任何現(xiàn)有框架(例如,托管執(zhí)行 環(huán)境、操作系統(tǒng)環(huán)境或硬件處理單元級)上方的基于延續(xù)的運行時環(huán)境。
本發(fā)明的各方面通過允許按照任何方式或表示(例如,流程圖、示意圖、 編號描述等)進(jìn)行工作流設(shè)計免除按照特定文件格式定義活動的約束,只要工 作流中的活動可根據(jù)工作流設(shè)計的表示構(gòu)造。
圖3示出根據(jù)本發(fā)明的實施例的工作流300的簡單視圖。例如,工作流 300可以是用于處理購買定單的工作流,且該購買定單工作流300可包括諸如 接收購買定單、向顧客發(fā)送確認(rèn)、由管理員批準(zhǔn)購買定單等的過程或活動。此 外,這些活動可被定序,使得某些活動可與其它活動同時執(zhí)行,而某些其它活 動可僅在其它活動完成后執(zhí)行。
工作流300可從起始點302開始。例如,購買定單工作流的起始點302 可以是從顧客接收定單。工作流300也可包括條件語句304 (諸如"IF語句"或 "WHILE語句"),它可被細(xì)分成附加條件語句306和308。工作流300也可包 括并行結(jié)構(gòu)310,后者進(jìn)一步包括一個或多個序列或活動312。例如,并行結(jié)構(gòu)310包括諸如檢査存貨并更新可用發(fā)貨者的并行處理的活動。在所示示例中,
諸如"發(fā)送電子郵件"和"獲得批準(zhǔn)"的活動可并行處理。在"此處丟棄活動"316, 用戶可進(jìn)一步將更多活動添加或補充到工作流300中。為了完成工作流300, 過程或活動將在完成步驟或點314結(jié)束。
在一個實施例中,活動可被分層安排成樹結(jié)構(gòu)(見圖5) 500或其它執(zhí)行 序列。例如,活動可以是合成活動,其中活動包括與之相關(guān)聯(lián)的一個以上的工 作項目。活動方法可位于具有兩個子或葉節(jié)點504和506的根節(jié)點502中。子 節(jié)點504和506中的活動方法(例如,分別為工作項目_1和工作項目—2)可根 據(jù)分層結(jié)構(gòu)執(zhí)行。此外,子節(jié)點504和506也可包括具有要執(zhí)行的相應(yīng)工作項 目的其它子節(jié)點。
在另一實施例中,活動包括以下類型中的一個或多個簡單活動、容器活 動和根活動。在此實施例中,在模型中有一個根活動,根活動內(nèi)有零個或任何 數(shù)量的簡單活動或容器活動。容器活動可包括簡單或容器活動。整個工作流過 程可用作構(gòu)建較高級工作流過程的活動。此外,活動可以是可中斷或不可中斷 的。不可中斷的合成活動不包括可中斷活動。不可中斷活動沒有可使活動阻塞 的服務(wù)。
而且,當(dāng)執(zhí)行活動以及包括在活動中的工作項目時,工作流框架為每一工 作項目定義作為范圍或邊界的執(zhí)行上下文或環(huán)境。該范圍或邊界包括并展示了 諸如要由工作項目訪問的共享數(shù)據(jù)或資源、相關(guān)聯(lián)的屬性、處理程序、約束以 及自治代理之間的交互等的信息(例如,以數(shù)據(jù)、元數(shù)據(jù)等的形式)。這些范 圍可分層構(gòu)造。而且,每一活動可由采用支持底層托管框架的任何編程語言的 用戶代碼配置。例如,用戶代碼可表示在特定域或執(zhí)行環(huán)境中編寫的業(yè)務(wù)或應(yīng) 用程序邏輯或規(guī)則。每一活動可支持對用戶代碼中的執(zhí)行的截取前掛鉤和截取 后掛鉤。每一活動具有相關(guān)聯(lián)的運行時執(zhí)行語義和行為(例如,狀態(tài)管理、事 務(wù)、事件處理和異常處理)?;顒涌膳c其它活動共享狀態(tài)或資源。此外,活動 可以是原語活動,或歸組成合成活動。原語或基本活動不具有子結(jié)構(gòu)(例如, 子活動)且因此是樹結(jié)構(gòu)中的葉節(jié)點。合成活動包含子結(jié)構(gòu)(例如,它是一個 或多個子活動的父活動)。
圖4是示出根據(jù)本發(fā)明的實施例的用于處理工作流活動的系統(tǒng)400的示意圖。系統(tǒng)400包括處理器402,它可以是處理單元或處理單元的集合。系統(tǒng)400 也包括用于存儲可由處理器402訪問的數(shù)據(jù)的存儲器區(qū)404。在一個實施例中, 系統(tǒng)400可以是具有一個或多個處理器或處理單元(例如,處理器402)以及 系統(tǒng)存儲器(例如,存儲器區(qū)404)并具有將包括系統(tǒng)存儲器的各種系統(tǒng)組件 耦合到處理器402的其它組件的計算機(jī)。
在一個示例中,存儲器區(qū)404可包括計算機(jī)可讀介質(zhì)(易失性、非易失性、 可移動或不可移動介質(zhì)),它們以用于存儲諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、 程序模塊或其它數(shù)據(jù)這樣的信息的任何方法或技術(shù)來實現(xiàn)。例如,計算機(jī)存儲 介質(zhì)包括RAM、 ROM、 EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字 多功能盤(DVD)或其它光盤存儲、磁帶盒、磁帶、磁盤存儲或其他磁存儲設(shè) 備、或可以用于存儲所需信息并可由系統(tǒng)400訪問的任何其它介質(zhì)。存儲器404 也包括具體化為諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號中的計算機(jī)可讀 指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的通信介質(zhì),且包含任何信息傳遞介質(zhì)。 本領(lǐng)域技術(shù)人員熟悉已調(diào)制數(shù)據(jù)信號,其一個或多個特征以將信息編碼在該信 號中的方式來設(shè)置與改變。諸如有線網(wǎng)絡(luò)或直接線連接等有線介質(zhì),以及如聲 學(xué)、RF、紅外線及其它無線介質(zhì)等無線介質(zhì)都是通信介質(zhì)的示例。以上的任一 的組合也包括在計算機(jī)可讀介質(zhì)的范疇內(nèi)。
在一個示例中,存儲器區(qū)404存儲用于在工作流(例如,工作流300)中 處理的多個活動406。多個活動406中的每一個包括一個或多個工作項目,且 工作項目可在諸如樹結(jié)構(gòu)(見圖5)的分層結(jié)構(gòu)中組織。當(dāng)處理多個活動406 時,處理器402訪問或執(zhí)行調(diào)度器408,它被配置成設(shè)置有組織的活動集。
例如,處理器408經(jīng)由組件或一組計算機(jī)可執(zhí)行指令諸如調(diào)度器408訪問 多個活動406中的工作項目以使工作項目422入隊或存儲到隊列410??捎商?理器402訪問的分派器412分派工作項目422以便執(zhí)行。例如,工作項目422-1 可包括活動方法424、例程或用于執(zhí)行"向用戶請求輸入"的功能的代碼的集合。 一個或多個其它活動方法、例程或代碼可被包括在每一工作項目422中,而不 背離本發(fā)明的范圍。
一旦由分派器412分派了工作項目422,處理器402在414執(zhí)行工作項目 422中的每一方法424。在工作項目422-1的示例中,處理器402可允許用戶經(jīng)由用戶界面(UI)輸入所請求的信息或數(shù)據(jù)。在另一實施例中,處理器402
可連接或訪問外部數(shù)據(jù)源以便向用戶請求輸入。在完成活動方法424之后,處 理器402在416結(jié)束工作項目422的執(zhí)行。在一個實施例中,處理器402在418 將工作項目的正在執(zhí)行狀態(tài)鈍化(passivate)到數(shù)據(jù)存儲420。
在另一實施例中,處理器402根據(jù)諸如圖6中所示的自動機(jī)的狀態(tài)自動機(jī) 執(zhí)行工作項目422,圖6是示出根據(jù)本發(fā)明的實施例描述與活動相關(guān)聯(lián)的工作 項目的處理狀態(tài)的示例性狀態(tài)自動機(jī)600的示意圖。在一個實施例中,狀態(tài)自 動機(jī)600定義活動的執(zhí)行生存周期。在一個示例中,狀態(tài)自動機(jī)600可包括已 初始化狀態(tài)、正在執(zhí)行狀態(tài)以及已關(guān)閉狀態(tài)(如圖4中所示)。在另一實施例 中,狀態(tài)自動機(jī)600包括已初始化狀態(tài)602、正在執(zhí)行狀態(tài)604、正在取消狀 態(tài)606、正發(fā)生故障狀態(tài)608、正在補償狀態(tài)610和已關(guān)閉狀態(tài)612。
例如,狀態(tài)自動機(jī)600描述工作流活動中工作項目(例如,工作項目422) 的執(zhí)行的過程流。如圖4中所示的工作項目422-1當(dāng)它在隊列410中入隊時首 先被初始化。接著,工作項目422-1在正在執(zhí)行狀態(tài)(例如,圖6中的正在執(zhí) 行狀態(tài)604)中執(zhí)行之前從隊列410中出隊或移除到分派器412。根據(jù)工作項 目422-1的執(zhí)行期間的參數(shù)或條件,工作項目422-1可前進(jìn)到正在取消狀態(tài)606 或正發(fā)生故障狀態(tài)608。在一個實施例中,工作項目422-1可從正在取消狀態(tài) 606前進(jìn)到正發(fā)生故障狀態(tài)608。在替換實施例中,正在補償狀態(tài)610描述當(dāng) 發(fā)生故障或異常時要執(zhí)行的一組操作或功能。
例如,假定在工作項目(例如,工作項目422-1)的執(zhí)行期間發(fā)生異常, 諸如函數(shù)的參數(shù)遺失。系統(tǒng)400將工作項目422-1轉(zhuǎn)移到正發(fā)生故障狀態(tài)608。 這樣做,系統(tǒng)400也在將工作項目422-1轉(zhuǎn)移到已關(guān)閉狀態(tài)612之前在正在補 償狀態(tài)610中執(zhí)行垃圾收集(例如,將操作中之前執(zhí)行的部分從高速緩存或存 儲器中移除、使參數(shù)值復(fù)位等)。已關(guān)閉狀態(tài)612指示活動(例如,圖5中的 活動500)的執(zhí)行已完成。
在一個實施例中,狀態(tài)自動機(jī)600在合成活動的工作項目之間建立關(guān)系。 例如,關(guān)系規(guī)則之一可包括,在將活動樹的根節(jié)點中的方法或工作項目轉(zhuǎn)移到 已關(guān)閉狀態(tài)612之前,子節(jié)點中的所有工作項目應(yīng)處于已初始化狀態(tài)602或己 關(guān)閉狀態(tài)612。另一規(guī)則可要求,為了將活動樹的子節(jié)點中的工作項目轉(zhuǎn)移到正在執(zhí)行狀態(tài)604,根節(jié)點中的工作項目必須已經(jīng)處于正在執(zhí)行狀態(tài)604。
在另一實施例中,可在狀態(tài)自動機(jī)600中定義一個或多個附加狀態(tài),而不 背離本發(fā)明的實施例的范圍。
接著參考圖7A到7E,框圖示出了根據(jù)本發(fā)明的實施例對活動的工作項目 的聲明性取消。為簡單起見且并非限制,圖7A示出包括按照樹結(jié)構(gòu)組織的三 個子工作項目的合成活動702:工作項目_1 704、工作項目_2 706以及工作項 目_3 708。如圖所示,根活動702包括"在顯示上寫文本并在寫文本之后終止該 活動"的方法。以上工作項目的功能也提供以下 工作項目一l 704: {暫停30秒;
寫文本("你好,,);
工作項目—2 706: 寫文本("你好世界");
{暫停60秒;
工作項目—3 708:
寫文本("你好消息");
{暫停180秒;
在圖7B中,正在執(zhí)行狀態(tài)710的屏幕截圖(即,當(dāng)工作項目處于正在執(zhí) 行狀態(tài)710中30秒之后),示出當(dāng)前處于正在執(zhí)行狀態(tài)中的工作項目。可以 理解,活動702此時也已經(jīng)處于正在執(zhí)行狀態(tài)710中。在此階段,根據(jù)工作項 目_1 704中所包括的函數(shù),在諸如圖4中的用戶界面(UI) 428的顯示上顯示 文本"你好"。
在圖7C中,在工作項目處于正在執(zhí)行狀態(tài)31秒之后,工作項目1_704 中的函數(shù)已經(jīng)完成了執(zhí)行(即,在顯示上寫"你好")。工作項目_1 704轉(zhuǎn)移到 已關(guān)閉狀態(tài)712。當(dāng)轉(zhuǎn)移到已關(guān)閉狀態(tài)712之后,在720將取消請求722傳輸 到當(dāng)前處于執(zhí)行狀態(tài)中的一個或多個工作項目,諸如工作項目2一706和工作項目—3 708。
根據(jù)本發(fā)明的實施例,活動樹中的所有其余的工作項目被轉(zhuǎn)移到正在取消 狀態(tài),因為活動702以經(jīng)完成了其方法的執(zhí)行,該方法是"在顯示上寫文本并 在寫文本之后終止該活動"。因此,活動702應(yīng)轉(zhuǎn)移到已關(guān)閉狀態(tài)712。結(jié)果, 當(dāng)前處于正在執(zhí)行狀態(tài)710的操作、函數(shù)或方法將被丟棄,或者其執(zhí)行將不會 完成。
因此,在圖7D中,在工作項目處于正在執(zhí)行狀態(tài)710中32秒之后,工 作項目—2 706和工作項目3_708轉(zhuǎn)移到正在取消狀態(tài)716。在一個實施例中, 工作項目_2 706和工作項目—3 708在轉(zhuǎn)移到正在取消狀態(tài)716 (例如,圖4的 正在取消狀態(tài)426)之前入隊到調(diào)度器隊列714中。在圖7E中,工作項目—2 706 和工作項目_3 708從調(diào)度器隊列714中出隊,并正在被轉(zhuǎn)移到正在取消狀態(tài) 716。在此圖示中,當(dāng)所有工作項目被轉(zhuǎn)移到已關(guān)閉狀態(tài)(如箭頭718所示), 活動702轉(zhuǎn)移到已關(guān)閉狀態(tài)712,指示活動702已經(jīng)完成其執(zhí)行。
與其中可能觸發(fā)異常的現(xiàn)有系統(tǒng)不同,本發(fā)明的各方面通過提供正在取消
狀態(tài)716聲明性觸發(fā)取消。采用正在取消狀態(tài)716,開發(fā)員或程序員可設(shè)計過 程中心程序以高效處理程序各部分的取消。
在將工作項目轉(zhuǎn)移到正在取消狀態(tài)716之后,本發(fā)明的替換實施例響應(yīng)于 活動的執(zhí)行生存周期的取消向用戶430提供一組取消后操作。例如,圖4中的 系統(tǒng)400可經(jīng)由用戶430的UI 428在對話框窗口中提供多個操作。操作可 包括但不限于也取消處于正在執(zhí)行狀態(tài)710中的其余工作項目、執(zhí)行其它操 作等的決策框。本發(fā)明的替換實施例可根據(jù)活動執(zhí)行生存周期的取消執(zhí)行一組 操作來移除與工作項目的執(zhí)行相關(guān)聯(lián)的數(shù)據(jù)(例如,臨時存儲、緩沖區(qū)、存儲 器訪問等)。
在一個實施例中,圖6描述包括六個狀態(tài)(已初始化、正在執(zhí)行、已關(guān)閉、 正在取消、正發(fā)生故障和正在補償狀態(tài))的自動機(jī),其中活動(例如,可定義 一組其域?qū)S貌僮鞔a的一組操作)可能處于其執(zhí)行生存周期中。當(dāng)并入上述 取消特征時,工作項目在實際分派給執(zhí)行處理器之前從調(diào)度器隊列中出隊。自 動機(jī)600同樣適用于原語和合成活動兩者。
也注意到,根據(jù)本發(fā)明的實施例,強制父和子之間的合成關(guān)系,使得合成活動允許對控制流模式建模。
例如,活動樹中父活動內(nèi)的子活動的合成要求以下-
(1) .為了父活動能轉(zhuǎn)移到己關(guān)閉狀態(tài),所要求的前提是子活動應(yīng)處于已 初始化狀態(tài)或己關(guān)閉狀態(tài)。在此示例中,當(dāng)父活動或工作項目轉(zhuǎn)移到已關(guān)閉狀 態(tài)時,子活動或子工作項目不可處于正在執(zhí)行狀態(tài)、正在取消狀態(tài)、正發(fā)生故 障狀態(tài)或正在補償狀態(tài)。
(2) .為了子活動能轉(zhuǎn)移到正在執(zhí)行狀態(tài),所要求的前提是父活動必須已 經(jīng)處于正在執(zhí)行狀態(tài)、正在取消狀態(tài)、正發(fā)生故障狀態(tài)、正在補償狀態(tài)或其它 "正..."狀態(tài)。
在示例性實施例中,工作流基礎(chǔ)或框架運行時嚴(yán)格實施以上規(guī)則或要求。 此外,工作流框架基于以上描述為活動編寫者提供用于對取消建模的良好定義 的協(xié)議。取消在活動合成分層結(jié)構(gòu)中向下傳播——從調(diào)度其子活動的取消的父 合成活動開始,這又取消其子活動的子活動,依此類推。該示例也類似于執(zhí)行 信號如何在合成結(jié)構(gòu)中向下傳播。
與其中取消被作為異常對待的現(xiàn)有技術(shù)不同,本發(fā)明的實施例將取消建模 為合成活動的正常執(zhí)行語義的特殊行為,以實現(xiàn)活動執(zhí)行的動態(tài)控制流。
圖8是示出根據(jù)本發(fā)明的實施例用于取消工作流的活動的工作項目的方
法的流程圖。在一個示例中,圖8中所述的方法或過程可由存儲在諸如圖9所 示的計算機(jī)可讀介質(zhì)900的計算機(jī)可讀介質(zhì)上的計算機(jī)可執(zhí)行組件執(zhí)行。例如, 一開始,狀態(tài)機(jī)902在802為活動定義狀態(tài)自動機(jī)。狀態(tài)自動機(jī)(例如,狀態(tài) 自動機(jī)600)包括正在執(zhí)行狀態(tài)、正在取消狀態(tài)和已關(guān)閉狀態(tài)?;顒咏M件904 在804將活動定義為包括多個工作項目。所定義的活動在執(zhí)行序列或執(zhí)行分層 結(jié)構(gòu)(例如,樹結(jié)構(gòu))中組織多個工作項目。每一工作項目包括用于執(zhí)行活動 的一部分的方法。
在806,調(diào)度器組件卯6將工作項目從正在執(zhí)行狀態(tài)轉(zhuǎn)移到己關(guān)閉狀態(tài), 所述己關(guān)閉狀態(tài)指示執(zhí)行活動的完成。在808,響應(yīng)于工作項目之一被轉(zhuǎn)移到 已關(guān)閉狀態(tài),消息組件908向當(dāng)前處于正在執(zhí)行狀態(tài)中的一個或多個工作項目 傳輸取消請求。取消處理器910在810根據(jù)所傳輸?shù)娜∠埱蠛退x活動的 執(zhí)行序列標(biāo)識處于正在執(zhí)行狀態(tài)中的一個或多個工作項目。在一個實施例中,取消處理器910通過在將工作項目轉(zhuǎn)移到正在取消狀態(tài)之前使工作項目入隊到 調(diào)度器隊列中來標(biāo)識工作項目。
在812,執(zhí)行組件912通過將一個或多個所標(biāo)識的工作項目從正在執(zhí)行狀 態(tài)轉(zhuǎn)移到正在取消狀態(tài)來取消該活動的執(zhí)行生存周期。在另一實施例中,計算 機(jī)可讀介質(zhì)900也包括用于響應(yīng)于取消活動的執(zhí)行生存周期向圖4中的用戶 430提供一組取消后操作的(UI)(例如,UI 428)。在又一其它實施例中, 清除組件914根據(jù)執(zhí)行組件對活動的執(zhí)行生存周期的取消移除與工作項目的執(zhí) 行相關(guān)聯(lián)的數(shù)據(jù)。
盡管結(jié)合諸如圖4的系統(tǒng)400的示例性計算系統(tǒng)環(huán)境進(jìn)行了描述,但本發(fā) 明的實施例可用于眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置。計算系統(tǒng)環(huán)境不 旨在對本發(fā)明的任何方面的使用范圍或功能提出任何限制。而且,計算系統(tǒng)環(huán) 境不應(yīng)被解釋為對在示例性操作環(huán)境中所示組件的任何一個或組合有任何依 賴性或要求。適用于本發(fā)明各方面的公知的計算系統(tǒng)、環(huán)境和/或配置的示例包 括,但不限于個人計算機(jī)、服務(wù)器計算機(jī)、手持式或膝上型設(shè)備、多處理器 系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費者電子產(chǎn)品、移動電話、網(wǎng) 絡(luò)PC、小型機(jī)、大型機(jī)、包括上述系統(tǒng)或設(shè)備中的任一個的分布式計算機(jī)環(huán) 境等。
本發(fā)明的各實施例可以在由一個或多個計算機(jī)或其他設(shè)備執(zhí)行的諸如程 序模塊等計算機(jī)可執(zhí)行指令的通用上下文中描述。 一般而言,程序模塊包括但 不限于執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、對象、組 件和數(shù)據(jù)結(jié)構(gòu)。本發(fā)明的各方面也可以在分布式計算環(huán)境中實現(xiàn),其中任務(wù)由 通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計算環(huán)境中,程序模塊可以 位于包括存儲器存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計算機(jī)存儲介質(zhì)中。
在操作中,系統(tǒng)400執(zhí)行如在諸如圖8的各附圖中所示出的計算機(jī)可執(zhí)行 指令來實現(xiàn)本發(fā)明的各方面。例如,假定用戶希望銷售車輛,如"汽車銷售活 動"。通過用文件并以任何格式制定活動,本發(fā)明的實施例能夠處理這樣的工
作流活動。"汽車銷售活動"可包括一個或多個工作項目,諸如在線對銷售做
廣告、經(jīng)由廣播電臺對銷售做廣告、經(jīng)由報紙的分類部分對銷售做廣告、以及 通過在車輛窗戶上張貼"出售"標(biāo)記來對銷售做廣告?;顒右惨?guī)定, 一旦用戶接受了來自任何源的要約,則用戶可能取消做廣告以避免接收和/或接受多個要 約。
例如,假定用戶從看到在線張貼的廣告的某人接收并接受要約。"在線對 銷售做廣告"工作項目被轉(zhuǎn)移到已關(guān)閉狀態(tài),觸發(fā)對當(dāng)前處于正在執(zhí)行狀態(tài)中 的所有其它工作項目的通知。本發(fā)明的實施例還可要求用戶指示是否可執(zhí)行任 何取消后操作,諸如"通知報紙"、"通知未定和潛在的買家"、"撤銷在線廣告" 等。因此,活動最終轉(zhuǎn)移到已關(guān)閉狀態(tài),以聲明的方式終止"汽車銷售活動"。
除非另有指定,否則此處所示和所述的本發(fā)明各實施例的操作的執(zhí)行或進(jìn) 行的次序不是必需的。也就是說除非另有指明,否則各操作可按照任何次序執(zhí) 行,且本發(fā)明的實施例可以包括比本文所公開的或多或少的操作。例如,構(gòu)想 了在另一操作之前、同時或之后執(zhí)行或進(jìn)行某一操作是在本發(fā)明各方面的范圍 之內(nèi)的。
本發(fā)明的各實施例可以用計算機(jī)可執(zhí)行指令來實現(xiàn)。計算機(jī)可執(zhí)行指令可 以被組織為一個或多個計算機(jī)可執(zhí)行組件或模塊。本發(fā)明的各方面可以用任何 數(shù)量的這些組件或模塊及其任何組織來實現(xiàn)。例如,本發(fā)明的各方面不限于在 各附圖和本文中示出的特定的計算機(jī)可執(zhí)行指令或者特定的組件或模塊。本發(fā) 明的其他實施例可以包括具有比在本文中示出和描述的或多或或少的功能的 不同計算機(jī)可執(zhí)行指令或組件。
當(dāng)介紹本發(fā)明或其實施例的各方面的各元素時,冠詞"一"、"一個"、"該" 和"所述"指的是存在該元素的一個或多個。術(shù)語"包括"、"包含"、"具有"旨在 是包括性的并且指的是可以有除所列元素之外的其它元素。
盡管詳細(xì)描述本發(fā)明的各方面,但顯然修改和變化是有可能的,而不背離 所附權(quán)利要求書中定義的本發(fā)明各方面的范圍。在不背離本發(fā)明各方面的范圍 的情況下,可對以上構(gòu)造、產(chǎn)品和方法進(jìn)行各種改變,以上描述中所包含的以 及在附圖中所示出的所有一切旨在應(yīng)被解釋為說明性并且沒有限制意義。
權(quán)利要求
1. 一種用于聲明性取消過程中心的程序中的活動(406)的方法,所述方法包括為活動(406)定義狀態(tài)自動機(jī)(600),所述狀態(tài)自動機(jī)(600)包括正在執(zhí)行狀態(tài)(604)、正在取消狀態(tài)(606)和已關(guān)閉狀態(tài)(612),所述狀態(tài)自動機(jī)(600)對活動(406)的執(zhí)行生存周期分類;將所述活動(406)定義為包括多個工作項目(422),所述定義的活動(406)在執(zhí)行分層結(jié)構(gòu)(500)中組織多個工作項目(422),每一工作項目(422)包括用于執(zhí)行活動(406)的一部分的方法;將所述多個工作項目(422)從所述正在執(zhí)行狀態(tài)(604)轉(zhuǎn)移到所述已關(guān)閉狀態(tài)(612),所述已關(guān)閉狀態(tài)(612)指示所述活動(406)執(zhí)行的完成;在使所述工作項目(422)之一轉(zhuǎn)移到所述已關(guān)閉狀態(tài)(612)之后,向當(dāng)前處于正在執(zhí)行狀態(tài)(604)的所述工作項目(422)中的一個或多個傳輸取消請求(722);根據(jù)所傳輸?shù)娜∠埱?722)和所定義活動(406)的所述執(zhí)行分層結(jié)構(gòu)(500)標(biāo)識處于正在執(zhí)行狀態(tài)(604)中的一個或多個工作項目(422);以及通過將所述一個或多個所標(biāo)識的工作項目(422)從所述正在執(zhí)行狀態(tài)(604)轉(zhuǎn)移到所述正在取消狀態(tài)(606)來取消所述活動(406)的執(zhí)行生存周期。
2. 如權(quán)利要求1所述的方法,其特征在于,還包括響應(yīng)于所述活動(406) 的執(zhí)行生存周期的取消,將所述一個或多個所標(biāo)識的工作項目(422)從所述 正在取消狀態(tài)(606)轉(zhuǎn)移到所述已關(guān)閉狀態(tài)(612)。
3. 如權(quán)利要求1所述的方法,其特征在于,還包括響應(yīng)于所述活動(406) 的執(zhí)行生存周期的取消向用戶(430)提供一組取消后操作。
4. 如權(quán)利要求1所述的方法,其特征在于,標(biāo)識所述一個或多個工作項目(422)包括使所述工作項目(422)入隊到調(diào)度器隊列(714)中。
5. 如權(quán)利要求4所述的方法,其特征在于,取消包括使所述工作項目 (422)從所述調(diào)度器隊列(714)出隊到所述正在取消狀態(tài)(606)。
6. 如權(quán)利要求l所述的方法,其特征在于,所述執(zhí)行分層結(jié)構(gòu)(500)包 括樹結(jié)構(gòu),以及其中標(biāo)識一個或多個工作項目(422)包括通過從樹結(jié)構(gòu)中的 較低層向樹結(jié)構(gòu)中的較高層遍歷所述樹結(jié)構(gòu)來標(biāo)識所述處于正在執(zhí)行狀態(tài)中 的一個或多個工作項目(422)。
7. 如權(quán)利要求1所述的方法,其特征在于, 一個或多個計算機(jī)可讀介質(zhì) 具有用于執(zhí)行如權(quán)利要求1所述的方法的計算機(jī)可執(zhí)行指令。
8. —種用于聲明性取消過程中心的程序中的活動(406)的系統(tǒng),所述 系統(tǒng)包括用于存儲與所述活動(406)的工作項目(422)相關(guān)聯(lián)的數(shù)據(jù)的存儲器 區(qū)(404),所述活動(406)在執(zhí)行序列(500)中組織所述工作項目;處理器(402),被配置成執(zhí)行用于以下步驟的計算機(jī)可執(zhí)行指令為活動(406)定義狀態(tài)自動機(jī)(600),所述狀態(tài)自動機(jī)(600)包括正 在執(zhí)行狀態(tài)(604)、正在取消狀態(tài)(606)和己關(guān)閉狀態(tài)(612),所述狀態(tài) 自動機(jī)(600)對活動(406)的執(zhí)行生存周期分類;將所述活動(406)定義為包括所述工作項目(422);將所述工作項目(422)從所述正在執(zhí)行狀態(tài)(604)轉(zhuǎn)移到所述已關(guān)閉狀 態(tài)(612),所述已關(guān)閉狀態(tài)(612)指示所述活動(406)執(zhí)行的完成;在使所述工作項目(422)之一轉(zhuǎn)移到所述己關(guān)閉狀態(tài)(612)之后,向當(dāng) 前處于正在執(zhí)行狀態(tài)(604)的所述工作項目(422)中的一個或多個傳輸取消 請求(722);根據(jù)所傳輸?shù)娜∠埱?722)和所定義活動(406)的所述執(zhí)行序列(500)標(biāo)識處于正在執(zhí)行狀態(tài)(604)中的一個或多個工作項目(422);以及通過將所述一個或多個所標(biāo)識的工作項目(422)從所述正在執(zhí)行狀態(tài) (604)轉(zhuǎn)移到所述正在取消狀態(tài)(606)來取消所述活動(406)的執(zhí)行生存 周期。
9. 如權(quán)利要求8所述的系統(tǒng)(400),其特征在于,還包括用于響應(yīng)于 所取消的活動(406)的執(zhí)行生存周期,將所述一個或多個所標(biāo)識的工作項目(422)從所述正在取消狀態(tài)(606)轉(zhuǎn)移到所述已關(guān)閉狀態(tài)(612)的裝置。
10. 如權(quán)利要求8所述的系統(tǒng)(400),其特征在于,還包括用于響應(yīng)于 所述活動(406)的執(zhí)行生存周期的取消向用戶(430)提供一組取消后操作的 裝置。
11. 如權(quán)利要求8所述的系統(tǒng)(400),其特征在于,所述處理器(402) 被配置成標(biāo)識所述一個或多個工作項目(422),包括使所述工作項目(422) 入隊到所述存儲器區(qū)(404)中的調(diào)度器隊列(714)中。
12. 如權(quán)利要求11所述的系統(tǒng)(400),其特征在于,所述處理器(402) 被配置成響應(yīng)于所取消的活動(406)的執(zhí)行生存周期使所述工作項目(422) 從所述調(diào)度器隊列(714)出隊到所述正在取消狀態(tài)(606)。
13. 如權(quán)利要求8所述的系統(tǒng)(400),其特征在于,所述執(zhí)行序列(500) 包括樹結(jié)構(gòu),以及其中所述處理器(402)被配置成通過從所述樹結(jié)構(gòu)中的較 低層向所述樹結(jié)構(gòu)中的較高層遍歷所述樹結(jié)構(gòu)來標(biāo)識所述一個或多個工作項 目(422)。
14. 如權(quán)利要求8所述的系統(tǒng)(400),其特征在于,還包括用于根據(jù)所 取消的活動(406)的執(zhí)行生存周期將與所述工作項目(422)相關(guān)聯(lián)的數(shù)據(jù)從 所述存儲器區(qū)(404)中移除的裝置。
15. —個或多個具有用于聲明性取消過程中心程序中的活動(406)的計 算機(jī)可執(zhí)行組件的計算機(jī)可讀介質(zhì)(900),所述計算機(jī)可執(zhí)行組件包括-為活動(406)定義狀態(tài)自動機(jī)(600)的狀態(tài)機(jī)(902),所述狀態(tài)自 動機(jī)(600)包括正在執(zhí)行狀態(tài)(604)、正在取消狀態(tài)(606)和已關(guān)閉狀態(tài) (612),所述狀態(tài)自動機(jī)(600)對活動(422)的執(zhí)行生存周期分類;將所述活動(406)定義為包括多個工作項目(422)的活動組件(卯4), 所定義的活動(406)在執(zhí)行序列(500)中組織所述多個工作項目(422), 每一工作項目(422)包括用于執(zhí)行活動(406)的一部分的方法;將所述工作項目(422)從所述正在執(zhí)行狀態(tài)(604)轉(zhuǎn)移到所述已關(guān)閉狀 態(tài)(612)的調(diào)度器組件(卯6),所述己關(guān)閉狀態(tài)(612)指示所述活動(406) 執(zhí)行的完成;響應(yīng)于所述工作項目(422)之一轉(zhuǎn)移到所述己關(guān)閉狀態(tài)(612)向當(dāng)前處 于正在執(zhí)行狀態(tài)(604)的所述工作項目(422)中的一個或多個傳輸取消請求 (722)的消息組件(908);通過使所標(biāo)識的工作項目(422)入隊到隊列(714)中,根據(jù)所傳輸?shù)娜?消請求(722)和所定義活動的所述執(zhí)行序列(500)標(biāo)識處于正在執(zhí)行狀態(tài)(604) 中的一個或多個工作項目(422)的取消處理器(910);以及通過將所述一個或多個所標(biāo)識的工作項目(422)從所述正在執(zhí)行狀態(tài) (604)轉(zhuǎn)移到所述正在取消狀態(tài)(606)來取消所述活動(406)的執(zhí)行生存 周期的執(zhí)行組件(912)。
16. 如權(quán)利要求15所述的計算機(jī)可讀介質(zhì)(900),其特征在于,所述 調(diào)度器組件(906)被配置成將一個或多個所標(biāo)識的工作項目(422)從所述正 在取消狀態(tài)(606)轉(zhuǎn)移到所述已關(guān)閉狀態(tài)(612)。
17. 如權(quán)利要求15所述的計算機(jī)可讀介質(zhì)(900),其特征在于,還包 括用于響應(yīng)于所述活動(406)的執(zhí)行生存周期的取消向用戶(430)提供一組 取消后操作的用戶界面(UI) (428)。
18. 如權(quán)利要求15所述的計算機(jī)可讀介質(zhì)(900),其特征在于,所述 取消處理器(910)被配置成使所述工作項目(406)從所述隊列(714)中出 隊到所述正在取消狀態(tài)(606)。
19. 如權(quán)利要求15所述的計算機(jī)可讀介質(zhì)(900),其特征在于,所述執(zhí) 行序列(500)包括樹結(jié)構(gòu),以及其中所述取消處理器(910)被配置成通過從 所述樹結(jié)構(gòu)中的較低層向所述樹結(jié)構(gòu)中的較高層遍歷所述樹結(jié)構(gòu)來標(biāo)識所述 一個或多個工作項目(422)。
20. 如權(quán)利要求15所述的計算機(jī)可讀介質(zhì)(900),其特征在于,還包 括根據(jù)所述執(zhí)行組件(910)對所述活動(406)的執(zhí)行生存周期的取消移除與 所述工作項目(422)的執(zhí)行相關(guān)聯(lián)的數(shù)據(jù)的清除組件(912)。
全文摘要
聲明性取消活動的執(zhí)行。定義了活動的狀態(tài)自動機(jī),且狀態(tài)自動機(jī)包括正在執(zhí)行狀態(tài)、正在取消狀態(tài)和已關(guān)閉狀態(tài),并對活動的執(zhí)行生存周期分類?;顒影üぷ黜椖?,并在執(zhí)行分層結(jié)構(gòu)中組織工作項目。工作項目從正在執(zhí)行狀態(tài)轉(zhuǎn)移到指示所述活動的每一工作項目的執(zhí)行完成的已關(guān)閉狀態(tài)。在使工作項目之一轉(zhuǎn)移到已關(guān)閉狀態(tài)之后,對當(dāng)前處于正在執(zhí)行狀態(tài)中的工作項目傳輸取消請求。根據(jù)所傳輸?shù)娜∠埱蠛退x的活動的執(zhí)行分層結(jié)構(gòu)標(biāo)識正在執(zhí)行的工作項目。通過將所標(biāo)識的工作項目從正在執(zhí)行狀態(tài)轉(zhuǎn)移到正在取消狀態(tài)來取消活動的執(zhí)行生存周期。
文檔編號G06F9/44GK101416158SQ200780012363
公開日2009年4月22日 申請日期2007年2月21日 優(yōu)先權(quán)日2006年3月30日
發(fā)明者A·J·沙加, B·施米特, D·舒克拉, K·拉曼, M·梅達(dá), N·塔爾伯特 申請人:微軟公司