摘要:工作流管理系統在不同的領域得到了廣泛應用,但仍然未能滿足任務回撤等特殊業務需求。文章首先對任務回撤進行了描述,并簡要介紹目前的幾種解決策略,然后在研究典型工作流過程元模型的基礎上,引入新的模型因子——服務接口(Interface),提出并建立基于服務過程分解(Service Process Division, SPD)的、具有動態特性的工作流過程模型。最后通過改造開放源代碼產品JBPM,在實際中得到應用。
關鍵詞:工作流;任務回撤;服務過程分解;動態模型
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)04-0916-04
Research of an Dynamic Model about Task Rollback in Workflow
ZHU Xing-lin, XI Chuan-yu, XU Yong-kang
(Institute of Computer Application, China Academy of Engineering Physics, Mianyang 621900, China)
Abstract: Although workflow management system has been used in many different fields, it cannot satisfy with some special business needs, as like task rollback. The business scene of task rollback is first described, and then the current solving strategies are overviewed. Afterwards, based on the research of workflow process meta-model which many workflow products reference to, the factor of interface is introduced and is added into the dynamic model which called based on Service Process Division (SPD) model. Finally, programming on JBPM which is an open source project, this model is applied in practice.
Key words: workflow; task rollback; service process division; dynamic model
工作流管理技術是將過程從應用系統中分離出來,達到對業務過程建模、重組和重用的目的,在辦公系統、物流系統及其相應的領域中,得到了廣泛的應用[1]。
但是,隨著技術的進步和應用范圍的擴大,出現一些新的業務背景(比如任務回撤),工作流技術無法滿足這些需求。其原因在于工作流過程模型所定義的元素都非常嚴格,不適應動態的變化。因此,很多研究工作集中在對工作流動態特性的分析上[11],允許工作流中的元素具有一定的獨立性。
本文在研究WFMC工作流過程元模型[5]的基礎上,分析工作流實例的服務過程,引入新的模型因子——服務接口(Interface),從而建立滿足業務需求、具有動態特性的工作流過程模型。
1 研究現狀
在企業級應用中,越來越多的遇到以下有關工作流“任務回撤”的場景,比如在圖1中基于Petri網[6]的工作流流程示例。
在流程的某個環節p2(錄入),員工甲編輯業務數據(錄入檢測結果等),活動完成后把任務提交到下一環節p4(審核),交給領導審核;作為競爭性的活動[1],在環節p4中,參與者包括領導乙、丙、丁,他們均可以審核;員工甲在沒有其他提示和限制條件下,就按照默認的順序提交給乙;但是在提交之后,意識到該任務涉及到的課題應該由領導丙審核,或者任務在提交一天后仍然沒有審批,卻發現領導乙因公出差,目前不能審核;在項目緊急的情況下,該文檔需要馬上報批,員工甲希望能夠把已經發送給領導乙的審核任務回撤到上一環節p2,然后可以重新修改并提交審核任務給領導丙。其任務提交過程和參與者轉移如圖2所描述。
總的來說,業務本身的需求和工作流應用范圍的擴大,對工作流任務回撤機制提出明確的需求:
1) 工作項在沒有被執行的情況下,可以回到上一環節或重新指定執行人;
2) 由上一環節執行人或者流程管理員,決定是否回撤;
3) 任務被回撤的過程必須保留痕跡,以便監控、審計;
針對工作流任務回撤的需求,主要存在任務指派、工作委托、業務過濾三種解決策略。
1.1 任務指派
在工作流管理中,指派可以直接把工作項的實際執行人由一個參與者變更為另外一個參與者。其實現策略可以見圖3。
任務指派讓工作流在運行和管理方面具有高度的靈活性,可以方便、及時地變更任務執行人。但是任務指派沒有完全滿足回撤的業務需求。因為指派是直接修改流程執行者信息,沒有保留痕跡,無法監控;而且指派只解決了該環節執行人變更的問題,沒有解決如何回退到上一環節的問題。
1.2 工作委托
工作委托是指某個用戶C把流程中本該由自己執行的任務,全部或者部分托付給另一個用戶D執行。委托主要發生在職權臨時變更、在職不在崗、或長期出差等情況下。其實現策略可以見圖4。
工作委托也是工作流在靈活性方面的一個重要體現,而且結合角色R、時間T、授權P等因素,可以實現更強大的功能。但工作委托也沒有完全滿足回撤的業務需求,因為它同樣只解決任務執行人的問題,而且還不能由上一環節執行人隨意指定,只能預先設定;也沒有解決如何回退到上一環節的問題。因此工作委托沒有滿足任務回撤需求。
1.3 業務過濾
解決工作流任務回撤的另一種方案就是和業務結合,提前預防和避免出現任務回撤的情況。比如如果領導出差,可以在選擇審核領導時,根據用戶的在線狀態或者出差、會議等情況,給相應的提示;如果課題劃分了分管的部門和領導,則僅顯示有業務權限的用戶列表等。其實現策略可以見圖5。
通過業務過濾的方式,能從根本上解決某些工作流相關問題,比如權限的統一管理、資源規劃等;而且可以根據業務代碼同步變更,做到隨需而變。但是這種預防策略沒有完全杜絕任務回撤的情況發生,沒有從根本上解決問題。
綜合上面的分析,可以看出,基于原始Petri網的工作流模型無法徹底解決任務回撤問題,其根本原因是:Petri網的行為原則具有嚴格的靜態性。主要體現在流程實例只能創建定義好的、含有固定前置的活動節點和變遷;而且遷移事件的條件一旦滿足,一定會由一種狀態到另一種狀態,中間不存在任何分解操作或者分步狀態。而任務回撤恰恰是需要建立沒有定義的變遷,并且到達由流程定義無法到達的狀態。
2 基于SPD的動態模型
針對Petri網這種靜態特性,本文提出了一種基于SPD(Service Process Division,服務過程分解)的動態模型:在不變更工作流模型框架的情況下,引入新的模型元素——服務接口(Interface);在此基礎上,對工作流服務接口的內部過程進行分解,把本來靜態的、原子化的服務過程,看成由多個子步、帶有原子性的、順序執行的服務過程組成;并允許動態創建模型元素,使其具有動態特征。
2.1 WFMC的工作流過程元模型
在對基于SPD的工作流進行動態建模之前,需要了解工作流的元模型,比較著名的有:WFMC[6]、WIDE[7]、WAMO[8]、Active Workflow[9]。由于不是完全從頭開始建模,相對工作流模型,需要關注的重點是工作流過程元模型。本文參考WFMC的工作流過程元模型,參見圖6所示。
這個元模型描述了工作流過程定義的關鍵實體:流程(Workflow)、活動(Activity)、參與者(Participant)、遷移(Transition)、應用程序(Application)、工作流數據(WorkflowData),因此可以給出如下定義:
Workflow = (A, T, P, APP, D, Rap, Ratd, Tc)
其中A表示活動集合,T表示遷移集合,P表示參與者集合,APP表示應用程序集合,D表示工作流數據集合,Rap表示活動和參與者之間的關系,Ratd是A×T×D的一個子集,表示活動之間的控制和數據流向關系,Tc表示對工作流時間約束信息集合。
2.2 引入模型元素——服務接口
盡管WFMC給出了工作流的參考模型和過程元模型,并把工作流提供的接口分為五大類,但沒有針對這些接口給出具體的功能描述,及其詳細的服務過程。這樣導致的直接后果就是,一方面各個工作流產品提供的功能各不相同,各有特色,而且極其有限,比如對是否提供嵌入式腳本執行功能,就存在嚴重分歧;另一方面它們的接口函數雖然都可以按照劃分為五類,但也相差很大,沒有統一的描述,比如同樣是“修改流程相關數據”這個功能,有的工作流模型接口只需要提供當前任務信息,有的卻還需要提供流程實例信息,甚至用戶信息。
導致這種情況的原因是,WFMC的過程元模型沒有包含服務接口,即認為工作流功能固定,接口也應該單一。而流程發起、活動提交、修改相關數據,這三個功能構成流程引擎三要素,大部分工作流模型實例只有這三個核心接口。并且把流程(Workflow)看成是一個整體,沒有對其他實體的服務細節進行分析,流程的服務被看成是一個固化的、不變的、簡單的過程,因此不具備動態特征。
本文在WFMC工作流參考模型的框架范圍內,對服務接口(Interface)進行細化,把它看成是一個可分解的、可以變化的因子,并引入到工作流過程元模型中去,成為工作流過程元模型的一個元素。因此,完善后的模型Workflow'定義如下:
Workflow' = (A, T, P, APP, D, I, Rap, Ratd, Tc)
其中I表示工作流模型實例提供的服務接口,并用形式化的表示方法進行說明。根據工作流實體的不同,可以對I進行分類:
WI:流程接口,包括start、commit、susponse、teminate、rollback、end等;
AI:活動接口,包括create、init、wait、susponse、teminate、commit、uploadData、rollback、finish等;
TI:遷移接口,包括create、source、goal、reverse等;
不難看出,工作流應用程序接口(Workflow Application Programming Interface, WAPI)是工作流模型實例的服務接口I的一個子集,而且I本身的元素具有以下特性:
元素的包含性:對于?坌Ij∈I,?堝Ik∈I并且Ik∈Ij(k≠j);即I中的元素可能是由一系列元素組成的集合。
元素的開放性:對于?坌Ij∈I,則對Ij的子元素平面化后,Ij∈Ij始終為假;即I中的元素不能再執行自身,不能遞歸。
執行的原子性:對于?坌Ij∈I,?坌Im,In∈Ij。如果invoke(Ij)為真,則invoke(Im)、invoke(In)必定為真;如果invoke(Ij)為假,則invoke(Im)、invoke(In)必定為假。
執行的確定性:對于?坌Ij∈I,?坌Im,In∈Ij。如果invoke(Ij)時,invoke(Im)>invoke(In)成立,則下次執行時同樣成立;反之亦然。即I中元素的執行過程是按照固定順序的,是確定的。
2.3 基于SPD模型的動態特性
完善后的模型Workflow'具有動態特性,主要體現在以下幾個方面:
1) I中不僅包含WI,還包含AI、TI,W不再是唯一的對外服務實體;
2) 實體W的服務過程不再是一個整體,而是由多個服務過程組成,并且都能獨立對外服務;
3) 實體A作為獨立的服務元素開始存在,通過組織、調整服務過程,能夠得到新的服務;
4) 實體T也作為獨立的服務元素,可以單獨創建,并且可以產生其反遷移。
2.4 活動實體的狀態分析
從Petri網的組成部分和上面的建模過程可以看出:遷移T的接口TI比較單一;流程W的接口WI大多數依賴于AI的實現;活動A的接口AI是最豐富的,也是服務接口過程模型中最重要的因素。因此,對服務實體A的狀態進行分析,如圖7所示。
從上不難看出,A的每一次狀態變化,都可以看成是服務接口AI中的一個元素,這個元素具有原子不變性,即不可再分解。
2.5 提交服務的過程分析
使用上面的建模元素,對工作流“任務提交”接口進行建模分析:
1) 執行流程提交I1:WI.commit;
2) 獲知當前工作任務I2:WI.currentActi;
3) 保存當前活動A的信息I3:AI(A).save;
4) 上傳活動數據到流程I4:AI(A).uploadData;
5) 執行活動的后續操作I5:AI(A).after;
6) 獲取正確遷移I6:WI.getTran;
7) 創建遷移I7:TI.create;
8) 獲知下一環節I8:TI.goal;
9) 執行下一環節B的前置操作I9:AI(B).before;
10) 創建活動B的實例I10:AI(B).create;
11) 初始化活動數據I11:AI(B).init:包括從流程中繼承數據,初始化狀態;
12) 修改流程狀態信息I12:PI.actiOK:標識流程正式進入下一環節。
其中Ij∈I(j=1,…,12),并且Ik∈I1(k=2,…,12)。而如果提供的WAPI是“執行活動提交I1*”,則元素執行順序為I3-I12,不包含元素I1和I2,即Ik∈I1*(k=2,…,12)。
2.6 回撤服務的過程分析
同樣的,使用服務接口建模元素,對工作流“任務回撤”進行建模分析:
1) 執行流程回撤I'1:PI.rollback;
2) 獲知當前工作任務I'2:PI.currentAccti;
3) 保存當前活動B的信息I'3:AI(B).save;
4) 獲取指向活動的正確遷移I'4:AI(B).fromTran;
5) 獲取反向遷移I'5:TI.reverse;
6) 創建遷移I'6:TI.create;
7) 由遷移獲知上一環節I'7:TI.goal:;
8) 創建活動A的實例I'8:AI.create:;
9) 繼承活動A的舊實例數據I'9:AI(A).cloneData:;
10) 上傳活動數據到流程I'10:AI(A).uploadData;
11) 修改流程狀態信息I'11:PI.actiOK:標識流程正式進入下一環節。
其中I'j∈I(j=1,…,10),并且I'k∈I'1(k=2,…,10)。而如果提供的WAPI是“執行活動提交I'1*”,則元素執行順序為I'3-I'10,不包含元素I'1和I'2,即I'k∈I'1*(k=2,…,10)。
通過上面的服務接口元素建模和執行過程分析,可以非常清晰地勾勒出在“任務回撤”業務中,工作流模型實例的服務過程和執行順序,為工作流的實現提供了理論基礎。
3 下一步工作
創建基于SPD的工作流動態過程模型,能夠大大增強工作流模型實例的功能,使其具有良好的適應性,并且滿足任務回撤的業務需求。
但仍然有許多工作要做,一部分工作是因為對服務過程進行分解、建模,需要詳細了解并分析工作流服務接口的結構和過程,而這對于一些封閉的工作流產品來說幾乎是無法完成的。同時,增加模型元素也意味著實現的復雜度隨之增加,帶來一定的工作量,會受到時間成本的制約。
另外一個部分工作是評估該方法對其他模型因子的影響。在模型的實現細節上,本文沒有過多地提到訪問權限、安全管理,以及同應用系統進行交互等方面的內容。而這恰恰是每個產品必須考慮的部分,這也將是下一步研究的重點。
4 結論
采用文中所述的基于SPD的動態建模方法,在引入服務接口模型元素的情況下,能夠解決類似“任務回撤”等企業級業務需求,為工作流模型的進一步完善提供了理論依據。而筆者基于該建模方法,通過改造開放源代碼的JBPM產品,在某院質量數據采集和信息管理系統中得到應用,能夠很好地滿足功能要求,表明模型是正確并且可實踐的。
參考文獻:
[1] 史美林,楊光信,向勇,等.WfMS:工作流管理系統[J].計算機學報,1999,22(3):325-334.
[2] 范玉順.工作流管理技術基礎[M].北京:清華大學出版社,2001.
[3] 趙衛東,黃麗華,蔡斌.工作流過程模型研究[J].系統工程理論方法應用,2002,11(3):212-217.
[4] 徐亮,張莉,樊志強.一種基于UML的實時工作流建模方法研究[J].計算機研究與發展,2010,47(7):1184-1191.
[5] Wokflow Management Coalition.The workflow reference mode[R/OL].http://www.wfmc.org.
[6] MURATA T.Petri nets: Properties,analysis and applications[J].Proc IEEE,1989,77(4):541-580.
[7] Cassti F.WIDE: Workflow model and architecture.CTIT Technical Report 96-16[R].Enschede,Holand: University of Twente,1996.
[8] Eder J,Liebhart W.The workflow activity model WAMO[C]//Proc of the 3rd Int Conf on Cooperative Information Systems,1995:87-98.
[9] Carlsen S,Krogstie J,Solvber A,et al.Evaluating flexible workflow system[C]//Hawaii Int Conf on System Sciences.Washington,DC: IEE Computer Society,1997.
[10] Ellis C,Keddara K,Rozenberg G.Dynamic Change within workflow system[C]//Proceedings of Conference on Organizational Computing Systems.New York: ACM Press,1995:10-21.
[11] Medina-Moura R,Winograd T,Flores R,et al.The Action Workflow Approach to Wokflow Management Technology[C]//CSCW'92,Proceedings of the Conference on Computer Supported Cooperative Work.New York:ACM Publishers,1992:281-288.
[12] van der Aalst W M P.The application of Petri nets to workflow managment[J].Journal of Circuits,Systems,and Computer,1998,8(1):21-66.