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