趙軍富 譚躍生 王猛
摘 要: 當前工作流管理系統發展的瓶頸問題是其缺乏支持動態變化、不具有動態修改能力及自適應性。引入分布式數據管理語言作為工作流模型定義語言,來創建能夠動態修改的工作流模型。設計并實現了一個動態自適應工作流引擎,該引擎在工作流執行過程中能夠動態修改過程模型,允許對流程中的未執行節點進行動態的增加、刪除和修改,給出了流程動態修改策略及自適應算法,解決工作流動態變化帶來的正確性、一致性和自適應性的問題。
關鍵詞: Active XML; 動態修改; 自適應; 工作流引擎
中圖分類號: TN911?34; TP391 文獻標識碼: A 文章編號: 1004?373X(2017)22?0075?03
Abstract: Lack of dynamic change support, the dynamic modification ability and adaptation has become the current development bottleneck for the workflow management system. Therefore, the Active XML (distributed data management language) was taken as a workflow model definition language to create a workflow model supporting dynamic modification. A dynamic and adaptive workflow engine was designed and implemented, which can not only dynamically modify the process model in the workflow execution, but also allow it to add, delete and modify the non?execution nodes dynamically. The dynamic modification strategy in flow path and adaptive algorithm are presented to solve the problems of correctness, consistency and adaptability caused by the dynamic change of workflow.
Keywords: Active XML; dynamic modification; self?adaptation; workflow engine
0 引 言
隨著工作流管理系統在企業中應用的不斷深入,企業對工作流管理系統提出更高的需求。工作流管理系統無法事先確定所有的流程,往往在流程的執行過程中并不是一成不變,導致工作流系統出現“死鎖”現象[1]。設計具有實時的動態修改和自適應性的工作流引擎,解決當前工作流發展的瓶頸,成為當前工作流管理系統研究的熱點。
本文首先分析了動態修改和自適應工作流動態性的內在實質和外在表現,引入分布式數據管理語言(Active XML)作為工作流模型定義語言,創建能夠進行動態修改的工作流模型。設計具有自適應性的工作流引擎框架[2],然后給出流程的動態修改規則及動態修改算法,并在動態修改后如何保證工作流系統運行的數據一致性和正確性問題進行討論。
1 動態自適應工作流分析
工作流的動態性主要表現在工作流定義階段可以動態修改預先定義的流程,在工作流運行階段,能夠動態修改過程模型和實例。能夠對流程中狀態為未執行的節點進行動態的增加、刪除和修改。同時,能夠對一個實例的具體活動的屬性及狀態的動態進行修改。
因此,能夠動態修改和具有自適應的工作流必須支持如下三個功能[3]:
(1) 對工作流的過程定義能夠動態進行編制和修改;
(2) 能夠給出工作流對過程和活動的動態修改規則;
(3) 給出對流程動態修改算法,來保證工作流系統的數據一致性和正確性問題。
2 可動態修改的自適應工作流模型
工作流模型是工作流管理系統的核心,工作流模型是由流程中的相關過程和活動構成,下面給出工作流模型[4]及相關定義[5]:
定義1(工作流):是一個由一系列的相關過程組成的集合,過程與過程之間可能是相互獨立,也可能存在著數據或控制的關聯。工作流可表示為:WF=(P1,P2,…,Pm,R(s))(m≥1)。其中,P={P1,P2,…,Pm}為工作流過程的集合;R(s)=(R1,R1,…,Rn)(n≥1)是工作流過程之間關聯規則集合。
定義2(工作流過程):是一個由一系列工作流的活動組成有序集合。一個工作流過程包含了過程運行中涉及到的所有數據和相關規則。工作流過程可表示為:P=(A1,A2,…,Aj,Rules),其中A1,A2,…,Aj是組成該過程的活動集合,Rules代表組成該過程的活動之間的關聯規則的集合。
定義3(工作流活動):可以表示為一個六元組Activity =(A_Id,A_Name,A_T,A_Data,A_State,A_Attribute)。其中:A_Id表示活動標號;A_Name表示活動名稱;A_T (邏輯表達式)表示該活動完成的一個具體的動作;A_Data 表示與該活動有關的一組輸入/輸出數據;A_State表示活動的狀態[4];A_Attribute 表示該活動在執行時的行為屬性。
如圖1所示,工作流模型[6]主要是由過程和活動構成的,為了能夠創建具有動態修改和自適應能力的工作流實例,工作流模型必須將工作流過程定義中的過程、活動和相關規則進行抽象描述。endprint
同時,工作流模型必須具有能夠在定義階段表示不確定的過程或活動;能夠允許在運行階段修改預先定義的流程。
3 基于AXML動態自適應工作流引擎的設計
本工作流管理系統以AXML作為過程定義語言,來建立工作流引擎。對于AXML文檔的解析由于篇幅所限在此就不做太詳細的敘述。工作流引擎首先將工作流模型進行解析,解析后在數據庫中采用存儲有向圖的方法來對模型信息(過程、活動)進行實時存儲,每個模型文檔只需解析一次。同時對流程的動態修改信息在數據庫中進行適時更新和記錄,如圖2所示為可動態修改的自適應工作流引擎框架[3]。
由圖2可知,在自適應工作流引擎框架中,解析器首先在工作流模型文檔庫中查找要進行解析的過程模型,由Dom解析器和XML綁定技術根據模型具體信息解析出其中的“活動”、“ 關聯規則”、“相關數據”分別存入對應的數據表。
分配器[7]是對活動的屬性、狀態、關聯規則的管理,首先根據工作流實例的ID,以該實例中的活動為依據進行任務分配,生成工作列表,并將第一個活動狀態置“就緒”。
路由選擇器是對過程的相關數據和關聯規則進行管理,根據過程與過程之間關聯規則、過程執行結構(順序、并行、循環、選擇),控制活動的執行順序。任務分配器和路由選擇器必須支持動態修改,既要保持維護工作流數據的一致性,又要保持工作流控制的一致性。
4 流程動態修改規則及算法
4.1 動態修改規則
流程動態一般在工作流定義階段和流程運行階段進行修改。對于一個給定的工作流定義來講,在過程定義階段的修改[4]可以使用未知的活動X來代替該流程的動態性和不確定性,如圖3所示。在流程的執行期間,假設未知的活動為X,X 將隨著工作流執行中的一些結果逐漸明確,逐漸明確X的內部具體含義(如空節點或一組活動節點)。確保自適應工作流模型在定義階段能夠準確對過程和活動的狀態變化進行修改。
處于運行階段的工作流,要對流程進行動態修改,需要進行一系列的相關操作才可以完成。比如,要在正在運行的流程當中插入一個新的活動,并且在這個新活動插入后,保證修改后的工作流過程與已執行的工作流實例之間具有前后連續性。由于流程處于運行狀態,所以要完成動態修改涉及到幾個關鍵步驟:首先,對流程進行暫停執行;其次,對活動或關聯規則修改;然后,對正確性和一致性驗證;最后,對流程進行恢復執行。圖4給出插入一個活動的具體動態修改流程圖。
流程暫停執行是指當工作流引擎執行過程中接到一個修改操作的消息時,引擎首先需要對該流程中正在運行的活動的狀態置為暫停并掛起,然后才可以對活動或過程進行修改;對于插入的新活動需要描述出該活動的相應屬性內容或流程關聯規則,方可完成流程的動態修改;工作流修改后在引擎執行前需要對正確性和一致性驗證(對正確性和一致性驗證在下節講解);最后在保證流程的正確性和一致性沒有問題的情況下,繼續恢復流程的啟動。
4.2 流程正確性和一致性驗證
在工作流的動態修改中,不但要保證過程與過程間的數據一致性,而且還應保證流程的正確性。本文使用事務的特點,在過程的動態修改中,各相關過程要么全部執行,要么一點都不執行。
流程正確性和一致性驗證必須考慮以下幾方面問題[8]:
(1) 新活動的插入是否會影響到原流程的運行狀態,包括已執行部分被撤銷的活動、重新插入的活動開始繼續向后執行、向前回退到某個活動以及向后跳到其他活動執行[9]。
(2) 新插入活動與原先的活動間存在的數據關聯和控制關聯,這些關聯關系是什么,這些必須有相應的關聯規則進行約束。
(3) 動態修改后的工作流必須對其進行驗證,是否破壞了數據一致性和控制的一致性。下面通過動態修改算法來保證動態修改后的流程的正確性和一致性。
4.3 動態修改算法
為了確保流程的正確性和一致性,防止錯誤的修改,本文只對流程中插入新增節點的操作進行算法[1]實現,對于修改和刪除節點算法不做講解。
流程插入節點算法及步驟:
(1) 定義函數AddNode(int NodeId,NodeProperty),其中NodeId為當前節點的Id,NodeProperty為新增節點屬性。
(2) 讀取當前要修改流程信息,根據NodeId找到當前運行節點及其下一個節點NextId。
(3) 調用AddNode函數生成一個新節點,由NodeProperty信息為該節點的各個屬性賦值。同時,將NextId賦值給該節點的孩子節點。
(4) 將步驟(2)中獲得的節點的孩子節點NextId的屬性賦值為步驟(3)中新生成的節點NodeId。
(5) 將動態修改信息在工作流模型數據庫中進行適時更新和記錄。
假設節點A的輸出連接到節點B,即A,B處于順序關系。在A,B兩節點之間插入一個新節點C所需要做的操作包括:記錄A的輸出(A節點的屬性);修改C的輸入連接為A的轉出;修改A的輸出連接指向C。使節點C的輸出作為節點B的輸入,節點A,C,B處于順序關系。
5 結 論
本文首先利用Active XML的動態特性建立可動態修改自適應工作流模型,根據工作流在流程和活動方面的修改建立可支持動態修改的工作流引擎,給出了流程動態修改的策略、流程動態修改算法、流程正確性和一致性驗證方法。工作流動態修改過程中出現異常如何處理,是筆者下一步的研究工作。
參考文獻
[1] REICHERT M, DADAM P. ADEPT flex?supporting dynamic changes of workflow without losing control [J]. Journal of intelligent information system, 2013(10): 93?129.endprint
[2] HSIEH Fu?Shiung, LIN Jim?Bon. A self?adaptation scheme for workflow management in multi?agent systems [J]. Journal of intell manuf, 2016, 27: 131?148.
[3] 郭玉彬,蔡澤野,林澤偉,等.輕量級動態工作流引擎的設計與實現[J].計算機工程與設計,2014,35(3):1105?1109.
[4] CAO Jian, YAO Yan, WANG Yi. Mining change operations for workflow platform as a service [J]. World wide Web, 2015, 18: 1071?1092.
[5] LIU Ji, PACITTI Esther, VALDURIEZ Patrick. Marta Mattoso: a survey of data?intensive scientific workflow management [J]. Journal of grid computing, 2015, 13: 457?493.
[6] 楊磊,吳哲輝,吳振寰.基于面向對象Petri網的組織間工作流建模[J].計算機應用與軟件,2014,31(8):59?62.
[7] 余陽,王潁,劉醒梅,等.基于社會關系的工作流任務分派策略研究[J].軟件學報,2015,26(3):562?573.
[8] KIM Kyong Ju, YUN Won Gun, LEE Ju?hyun, et al. Schedule compression in tunneling projects by adjusting workflow variability [J]. KSCE journal of civil engineering, 2014, 18(6): 1625?1631.
[9] KAMMER P J. Techniques for supporting dynamic and adaptive workflow [J]. Computer supported cooperative work, 2014, 9(3/4): 269?292.endprint