袁華,,劉鵬,,歐陽寧,莫建文
?。ü鹆蛛娮涌萍即髮W 信息與通信學院,,廣西 桂林 541004)
摘要:針對企業(yè)業(yè)務(wù)過程建模的需求,分析目前典型的工作流過程建模方法,,并結(jié)合工作流管理聯(lián)盟提出的XPDL過程定義語言,,設(shè)計一種可視化工作流建模工具WorkFlowEditor。依據(jù)“問題分離”原則,,對WFMC的工作流過程定義元模型進行了改進,,使建立的模型具有易修改、元素可重用等特點,。針對建模元素可擴展性的需求,,通過定義建模元素類的通用接口和設(shè)計一種動態(tài)加載方案,在很好地方便企業(yè)用戶定制建模元素的同時又不需要修改建模工具,。針對多任務(wù)多分支環(huán)境下復(fù)雜的流程編輯問題,,設(shè)計了一種有限狀態(tài)機(FSM)模型,實現(xiàn)了復(fù)雜編輯動作的實時性處理和靈活控制,,降低了時間復(fù)雜度,并且實現(xiàn)模塊化編程,,很好地實現(xiàn)了流程的建模,。
關(guān)鍵詞:工作流模型;可視化建模,;XPDL,;有限狀態(tài)機
0引言
工作流由于在處理復(fù)雜任務(wù)以及集成異構(gòu)資源方面的巨大優(yōu)勢,工作流技術(shù)的應(yīng)用日益廣泛[12],。按照工作流管理聯(lián)盟的定義[3],,工作流是“按照一定預(yù)先定義的規(guī)則,使得文檔,、信息或任務(wù)能夠在不同的參與者之間傳遞執(zhí)行,,從而實現(xiàn)全部或部分經(jīng)營過程的自動化執(zhí)行”,。工作流模型是對工作流的抽象表示,它的主要目的是定義出正確的過程模型,,完成實際的業(yè)務(wù)過程到計算機可處理的形式化定義的轉(zhuǎn)化,。工作流的描述應(yīng)當基于具有豐富語義表達功能的建模方法。目前典型的工作流過程建模方法[48]有:基于語言行為理論的工作流過程建模方法,、基于形式化表示的過程建模方法(如Petri網(wǎng)),、基于事件驅(qū)動的過程鏈(EventDriven Process Chain, EPC)過程建模方法、基于活動網(wǎng)絡(luò)的過程建模方法,。
參考文獻[4]指出基于語言行為理論的建模方法主要針對于以人的交互為特征的過程,,用于描述人與人之間的協(xié)作。參考文獻[5]分析了Petri網(wǎng)兼顧了嚴格的語義與圖形語言兩個方面,,能精確方便地對過程的控制邏輯進行定義,,但無法體現(xiàn)數(shù)據(jù)流,并且組成模型的元素數(shù)量過多,。參考文獻[6]指出EPC描述能力強且易于理解,,但建模元素數(shù)量過多且缺乏對各個業(yè)務(wù)處理之間的數(shù)據(jù)流的描述。參考文獻[7]指出基于活動網(wǎng)絡(luò)的過程模型可讀性最好,,對于非專業(yè)人士來說是一種最直觀,、最自然的過程表達方式,但此方法描述復(fù)雜過程邏輯時有困難,。綜上所述,,不同的模型側(cè)重點不同。
因此本文在“基于活動網(wǎng)絡(luò)的建模方法”的基礎(chǔ)上進行擴展,,引入EPC模型的“路由邏輯”來描述過程模型,,即給非專業(yè)的人士以直觀的表示又可以描述復(fù)雜的流程。采用工作流管理聯(lián)盟提出的“擴展標記流程定義語言(XML Process Definition Language, XPDL)[9]”過程定義語言來定義過程模型,,它為工作流模型的開發(fā)和運行環(huán)境之間提供了形式上的分離[10]。利用建模元素類與操作類分離及預(yù)留擴展接口等模塊化程序設(shè)計思想[11],,建模工具WorkFlowEditor具有良好的擴展性和通用性,并且引用有限狀態(tài)機(Finite State Machine, FSM)[12]編程思想對編輯動作的控制進行實時性處理,。
1改進的過程定義元模型
元模型是一種描述工作流模型內(nèi)在聯(lián)系的模型,,用來描述工作流模型內(nèi)部的活動,、活動之間的關(guān)系及活動屬性,。
圖1所示的元模型把表示業(yè)務(wù)規(guī)則的分支、匯聚以及約束嵌在活動的內(nèi)部,。把它們視作為活動說明的一部分,。企業(yè)業(yè)務(wù)過程的動態(tài)變化是非常普遍的,,此時,結(jié)構(gòu)和約束的頻繁變化必然會引起活動定義也隨之改變,,非常不方便,。為了屏蔽變化帶來的副作用,,引入軟件工程一個核心原則——問題分離(Separation of Concerns)原則。把活動(Activity)分解組織為粒度更小,、更容易管理和理解的部分,根據(jù)功能和負責業(yè)務(wù)的不同,,把活動細化為任務(wù)活動,包括人工活動,、自動活動、子流程活動,;起止活動,明確了流程的開始和結(jié)束,;把分支(Split)、匯聚(Join)和它們的約束(AND,OR,XOR)這些邏輯關(guān)系獨立出來用新的元素——路由活動(Route)來表示,,如圖2所示。
2工作流建模工具
2.1建模元素描述
為了描述過程模型,,根據(jù)圖2過程定義元模型實體及實體之間的關(guān)系,并結(jié)合XPDL過程定義語言來設(shè)計建模元素,。實體元素對應(yīng)建模元素類,,實體元素之間的嵌套聚合關(guān)系,,對應(yīng)建模元素類之間繼承聚合關(guān)系,。實體元素屬性對應(yīng)類中的屬性。依據(jù)以上原則,,給出建模元素類相對應(yīng)的類圖,以及類之間的繼承,、聚合關(guān)系。其中,,黑色實心箭頭表示繼承關(guān)系,,箭頭指向父類;菱形空心箭頭表示聚合關(guān)系,,箭頭指向包含類,。如圖3所示,。
?。?)Common類是所有建模元素類的父類,,包含建模元素類的所有共有屬性和方法,如建模元素Id,、Name、Description等共有屬性,。
(2)Package(包)類是總的容器類,,它包含流程定義類(WorkflowProcess),、應(yīng)用程序類(Application),、參與者類(Participant)和相關(guān)數(shù)據(jù)類(DataFields)這幾個類的集合,,每一個集合用一個List<T>類來表示,上面這些集合與Package構(gòu)成了聚合關(guān)系,。Package類中保存這些類對象的指針,,作為公共變量,,可以被整個包內(nèi)的實體訪問,。WorkflowProcess類是系統(tǒng)的核心,它最重要的組成部分是活動類(Activity)和遷移類(Transition)。同時也封裝了用于建模元素與XML文檔相互轉(zhuǎn)換的方法SaveToFile和LoadFromFile,。
(3)Activity類有3個子類:BlockActivity(塊活動),、Implementation(執(zhí)行類),、Route(路由),。其中Implementation類有3個子類:FlowNo,、CallSubFlow,、ToolApplication,,分別對應(yīng)人工活動,、子流程活動,、自動活動。Route包含3種類型的路由,,分別是Parallel(并行),、Exclusive(排他),、Inclusive(包含)。
2.2擴展接口及動態(tài)加載
為了方便企業(yè)用戶定制建模元素的同時又不需要修改建模工具,,提高建模工具的擴展性和通用性,本文設(shè)計了建模元素擴展接口和一種動態(tài)加載建模元素的方案。
?。?)擴展接口
抽象類Activity是活動類的基類,包含活動類的一些公共屬性和方法。通過繼承基類來設(shè)計滿足自己需求的元素類,。Activity相當于一個接口,要擴展的建模元素需要滿足這個接口特性,,才能被建模工具識別,。
?。?)動態(tài)加載
建模元素打包在DLL文件中,,通過動態(tài)加載的方式加載到建模工具中,,讓建模工具的數(shù)據(jù)模型、控制模型和顯示模型分離,,這樣方便對建模元素擴展和更換的同時,,不影響邏輯和顯示部分,。為了清楚地描述建模元素是如何加載的,下面給出動態(tài)加載的流程圖,,如圖4所示。
2.3建模工具操作類描述
為了簡潔和便于描述,,圖5中僅顯示了幾個框架類的關(guān)系圖,。
?。?)MainForm為主窗體框架類,包含ToolBox,、PropertyEditor、DocView、ProjectManager,、MapView,它們分別嵌入到各自的窗體ToolBoxWin(工具箱區(qū)),、PropertyEditorWin(建模元素屬性編輯區(qū)),、DocViewWin(流程繪圖區(qū)),、PrjManagerWin(工程管理區(qū)),、MapViewWin(縮略圖區(qū))中,而這些窗體均繼承在ToolWindow類,。這樣就構(gòu)成了整個流程編輯器的主體框架,。
?。?)ToolBox為建模元素管理模塊類,,主要為WorkflowEditor提供用于建模的所有元素;提供建模元素擴展接口和動態(tài)加載建模建模元素方法,。
?。?)PropertyEditor為建模元素的屬性編輯類,,它是一個抽象父類,,每一個建模元素都有一個對應(yīng)的屬性編輯控件,,當選中建模元素時,屬性編輯控件將會顯示在PropertyEditorWin窗體中,,用戶就可以修改建模元素屬性了,。
(4)MapView為縮略圖類,,通常情況下內(nèi)存畫布都大于繪圖顯示區(qū),,為了可以清楚地看到整個內(nèi)存畫布區(qū)域以及了解流程的繪制情況,定義了縮略圖類,,它可以實時地反映繪圖區(qū)以及整個內(nèi)存畫布的情況,。
(5)ProjectManager是工程管理類,,包含create,、delete、open,、close等操作工程和流程文件的方法,,并且可以顯示整個工程的目錄結(jié)構(gòu),。
(6)DocView是繪圖類完成圖形的繪制和顯示,,F(xiàn)lowDoc類則實現(xiàn)圖形編輯動作控制,,這樣可以使顯示(View)和控制(Control)分離。
2.4有限狀態(tài)機(FSM)
在建模工具的繪制區(qū)域編輯流程時,,為了提高對復(fù)雜編輯任務(wù)的實時處理能力,,靈活控制圖形編輯動作,在建模工具中引入有限狀態(tài)機(FSM)編程思想,。有限狀態(tài)機的工作原理如圖6所示,,當發(fā)生事件(Event)后,根據(jù)當前狀態(tài)S1,,決定執(zhí)行的動作(Action),,并轉(zhuǎn)為下一個新狀態(tài)S2。
為了方便清楚地描述有限狀態(tài)機的應(yīng)用,,圖7給出了FSM模型的類關(guān)系簡圖。
FiniteStateMachine是定義的有限狀態(tài)機類,,代表一個FSM,,它直接包含狀態(tài)機的狀態(tài)集類(StateList)、狀態(tài)節(jié)點類(StateNode)和一個按接收的事件進行狀態(tài)遷移的方法FiniteStateMachine::Transfer,。StateNode表示一個可以持續(xù)存在的狀態(tài),,是FSM類的核心,它的最重要的組成部分是狀態(tài)遷移類(StateLink)和取得當前狀態(tài)節(jié)點按事件遷移到的下一個狀態(tài)節(jié)點的方法StateNode::Transfer(),。
為了清楚地描述FSM狀態(tài)遷移圖,,以調(diào)整連線狀態(tài)的狀態(tài)遷移為例,給出調(diào)整連線狀態(tài)的狀態(tài)遷移圖,,如圖8所示,。
從圖8可以看出:首先,F(xiàn)SM處于初始狀態(tài)None,,響應(yīng)按下鼠標事件MouseDown,,此處沒有任何條件,執(zhí)行記錄鼠標按下的位置的動作,;然后根據(jù)鼠標是否點在連線上[MouseOnConnection]的條件,,進入點住連線狀態(tài)PichOnCnn,觸發(fā)鼠標移動事件MouseMove,,根據(jù)鼠標是否點在連線的端點[MouseOnCnnPoint]和鼠標是否點在連線的中點[MouseOnCenterPoint]這兩個不同的條件,,分別進入調(diào)整連線狀態(tài)ModifyCnn和調(diào)整連線1狀態(tài)ModifyCnn1。當進入ModifyCnn狀態(tài)時,,觸發(fā)鼠標移動事件MouseMove,,執(zhí)行修改連線端點ModifyPointTrack的動作,,此時狀態(tài)未發(fā)生改變。觸發(fā)鼠標放開事件MouseUp,,此時沒有條件,,執(zhí)行擦除改變前的連線,繪制改變后的連線RedrawConnection的動作,,返回初始狀態(tài)None,。
首先,將調(diào)整連線狀態(tài)(ModifyCnn)添加到狀態(tài)集,,然后按照調(diào)整連線狀態(tài)的遷移觸發(fā)事件,、條件、動作,、目標狀態(tài)節(jié)點完善調(diào)整連線狀態(tài)的狀態(tài)遷移列表,。下面給出調(diào)整連線狀態(tài)的實際效果圖,如圖9所示,。
從以上分析可以看出,,在初始化有限狀態(tài)機時,把任務(wù)的所有狀態(tài)添加到狀態(tài)集中,,并為每個狀態(tài)添加狀態(tài)遷移列表即可,,每個狀態(tài)之間是相互獨立的。針對多任務(wù)多分支處理系統(tǒng),,使用有限狀態(tài)機比使用多層次判斷語句更有效,。程序中每個狀態(tài)的執(zhí)行時間是相同的,使用多層次判斷語句執(zhí)行完整個任務(wù)需要執(zhí)行N×(N+1)/2個判斷語句,,而使用有線狀態(tài)機只需執(zhí)行N個判斷語句,,時間關(guān)系:,從而降低了程序的時間復(fù)雜度,。
3建模實例
本文以“廣西溫室氣體排放管理服務(wù)平臺”項目中“企業(yè)直報流程”為例,,如圖10所示,運用WorkFlowEditor流程編輯器定義過程模型,。
企業(yè)直報流程描述如下:
?。?)企業(yè)填報人員進入填報流程,選擇年份,;
?。?)企業(yè)填報人員同時要填寫生產(chǎn)信息活動、電熱力消費活動,、燃料燃燒活動,;
(3)任何一個要填寫的活動填寫完畢后,,都可以單獨提交,;
?。?)提交之后要主管單位人員進行審核;
?。?)如果審核結(jié)果通過則交由第三方機構(gòu)核查,,審核未通過則返回,讓企業(yè)重新填寫上述活動,。
圖10中,,生產(chǎn)信息、電熱力消費,、燃料燃燒,、提交4個活動的參與者是企業(yè)人員;主管單位預(yù)審活動的參與者是業(yè)務(wù)主管人員,;第三方核查活動的參與者是第三方機構(gòu)人員,。
為了更直觀、清晰地理解圖10的企業(yè)直報流程模型,,表1列舉出企業(yè)直報流程示意圖中各個實體元素的數(shù)目,。活動包括兩個事件活動,,7個任務(wù)活動,,3個路由活動。
?。?)工作流相關(guān)數(shù)據(jù)主要有4個,分別是年份,、組織機構(gòu)代碼,、提交狀態(tài)和預(yù)審結(jié)果。下面將給出“企業(yè)直報流程”的設(shè)計視圖,,如圖11所示,。
4結(jié)論
通過改進的工作流過程定義元模型并結(jié)合工作流過程定義語言XPDL設(shè)計了一種工作流建模工具WorkFlowEditor,。詳細闡述了建模元素類,、操作類以及它們之間的關(guān)系。在建模工具中留有建模元素擴展接口并設(shè)計一種動態(tài)加載方案,,方便擴展建模元素集,,滿足用戶自定義需要。在WorkFlowEditor中設(shè)計了一種有限狀態(tài)機模型,,可以對復(fù)雜編輯動作進行靈活控制,。該建模工具基于模塊化的程序設(shè)計思想,具有良好的可擴展性和通用性,。實驗結(jié)果表明,, WorkFlowEditor具有一定的合理性,,用戶可以方便快捷地設(shè)計出滿足自身特點的工作流流程。
參考文獻
?。?] 尚世峰,姜進磊,鄭緯民. CWFlow:支持資源自適應(yīng)使用的云工作流框架[J].清華大學學報(自然科學版),2013,53(3):415420.
?。?] 蔡敏,盧佩.基于事件擴展UML活動圖的工作流過程建模方法[J].計算機集成制造系統(tǒng),2014,20(7):17581767.
?。?] TC0010031995. The workflow reference model[S]. Workflow Management Coalition,1995.
?。?] Yan Cai. Comparative analysis of the workflow modeling[J]. 2012 International Conference on Management of eCommerce and eGovernment(ICMeCG), IEEE, 2012:226229.
[5] 鄭長友,劉曉明,姚奕,等.基于Petri網(wǎng)的面向測試的工作流系統(tǒng)建模方法[J].電子科技大學學報,,2014,43(1):119124.
?。?] 張朝輝,劉大為,劉偉江.工作流建模技術(shù)綜述[J].微電子學與計算機,2008,25(10):6971.
?。?] 劉怡,張子剛,張戡.工作流模型研究述評[J].計算機工程與設(shè)計,,2007,28(2):448451.
[8] 劉繼承,張愛茹,李征鴻,等.基于petri網(wǎng)的文件審批系統(tǒng)工作流建模[J].微型機與應(yīng)用,,2013,32(2):7780.
?。?] WFMCTC1025. Workflow process definition interface XML process definition language[S]. Workflow Management Coalition,2008.
[10] WfMCTC1016P. Interface1:process definition interchange process model[S]. Workflow Management Coalition ,1999.
?。?1] 焦合軍,張璟,李軍懷,,等.協(xié)同設(shè)計中基于混合Petri網(wǎng)的云工作流表示模型[J].應(yīng)用科學學報,2014,32(6):646651.
?。?2] 林曉勇,糜正琨,陳奎成.基于FSM的VPN自動部署設(shè)計與應(yīng)用[J].計算機工程與設(shè)計,,2011,32(8):26142618.