孔令東
(鹽城工學(xué)院信息工程學(xué)院,江蘇 鹽城 224051)
Windows Workflow Foundation(WF)是微軟推出的一個(gè)可擴(kuò)展框架,可用于快速生成啟用工作流應(yīng)用程序,WF自帶編程模型和可以自定義的工作流引擎,工作流引擎可將業(yè)務(wù)邏輯作為規(guī)則或條件來實(shí)現(xiàn),可視化地實(shí)現(xiàn)業(yè)務(wù)過程自動(dòng)化。WF內(nèi)置的Flowchart工作流圖形化工具,可以為流程活動(dòng)驅(qū)動(dòng)的業(yè)務(wù)過程提供可視化的建模實(shí)現(xiàn)方案[1-3]。
Unified Modeling Language(UML)作為 Object Management Group(OMG)面向?qū)ο蠓治雠c設(shè)計(jì)的標(biāo)準(zhǔn),可以為系統(tǒng)業(yè)務(wù)流程提供可視化的分析與設(shè)計(jì)工具,盡管在實(shí)踐過程中,人們總結(jié)出了各種軟件開發(fā)過程,比如說Rational Unified Process(RUP)統(tǒng)一開發(fā)過程,核心也離不開迭代的思想,對(duì)于龐大的業(yè)務(wù)流程來說,需要耗時(shí)耗力去回溯修改業(yè)務(wù)流程[4,5],動(dòng)態(tài)的業(yè)務(wù)分析建模到可視化的實(shí)現(xiàn)便于追溯和動(dòng)態(tài)修改業(yè)務(wù)流程變化。UML包含了活動(dòng)圖(Activity Diagram)的語義描述,提供一種業(yè)務(wù)流程工作流建模的方法,便于對(duì)離散事件驅(qū)動(dòng)的動(dòng)態(tài)行為建模[6-8]。
本文在研究Rational Rose幫助中UML典型活動(dòng)圖樣例的基礎(chǔ)上,基于 WF的可視化 Flowchart實(shí)現(xiàn)模型,探索從UML活動(dòng)建模到WF Flowchart工作流的無縫轉(zhuǎn)換,快速生成便于測試的業(yè)務(wù)流程應(yīng)用程序。
系分析
UML活動(dòng)圖和WF流程圖在可視化建模及實(shí)現(xiàn)上具有緊密的關(guān)聯(lián)性,從相關(guān)概念的組成和含義幾乎都一一對(duì)應(yīng),這一點(diǎn)保證了無縫的轉(zhuǎn)換。如表 1 UML活動(dòng)圖和WF流程圖的映射關(guān)系及圖形表示,UML活動(dòng)圖中的 Start(開始)、Activity(活動(dòng))、Transition(變遷)、Decision(決策)、Swimlane(泳道)、End(結(jié)束)分別和 WF中的 Start(開始)、Activity(活動(dòng))、Transition(變遷)、Decision(決策)、InvokeMethod Activity Object(調(diào)用方法活動(dòng)對(duì)象、TerminateWorkflow(終止工作流活動(dòng))相對(duì)應(yīng)。在 UML中一個(gè)泳道對(duì)象負(fù)責(zé)相應(yīng)的活動(dòng),活動(dòng)之間通過消息動(dòng)作完成活動(dòng)之間的轉(zhuǎn)換,WF中一個(gè)流程圖由若干活動(dòng)組成,根據(jù)活動(dòng)的相應(yīng)條件完成流程的轉(zhuǎn)換,雖然在WF中沒有專門的泳道與之相對(duì)應(yīng),但是,在實(shí)際模型轉(zhuǎn)換過程中,我們采用InvokeMethod Activity Object同UML中的泳道對(duì)應(yīng),不僅解決的活動(dòng)的歸屬問題,而且可以清晰的表示,活動(dòng)對(duì)象調(diào)用相關(guān)動(dòng)作,后面樣例的實(shí)現(xiàn)上會(huì)詳細(xì)介紹。在映射的基礎(chǔ)上,兩者之間在可視化的建模中就有了相對(duì)應(yīng)的可視化圖形符號(hào)。如表 1所示 從符號(hào)的表達(dá)到信息的展示,都基本可以一一對(duì)應(yīng)轉(zhuǎn)換,從而保證了可視化建模從分析到實(shí)現(xiàn)的一致性。從形式建模的語義上沒有信息丟失,主要的區(qū)別在于UML活動(dòng)圖的模型偏重于分析、設(shè)計(jì),WF流程圖中可以直接動(dòng)態(tài)的實(shí)現(xiàn),在下面的基于WF流程圖的UML活動(dòng)圖構(gòu)建中會(huì)詳細(xì)分析。
為更好的說明基于WF流程圖的UML活動(dòng)圖構(gòu)建和實(shí)現(xiàn),選取了Rational Rose幫助中典型的活動(dòng)圖,以便于深入的轉(zhuǎn)換說明。如圖1所示運(yùn)送部件到客戶活動(dòng)示例圖,在這個(gè)示例定義了運(yùn)送部件到客戶所涉及的相關(guān)過程和步驟,每一個(gè)泳道(Manufacturing、Shipping、Customer)對(duì)象負(fù)責(zé)一個(gè)或多個(gè)活動(dòng),同時(shí)每一個(gè)活動(dòng)都特別定義了不同的入口動(dòng)作或出口動(dòng)作,來完成不同活動(dòng)之間的轉(zhuǎn)換,其中,對(duì)部件運(yùn)輸包裹稱重來確定運(yùn)輸?shù)耐緩剑褂昧藳Q策判斷。這是一個(gè)典型的 UML活動(dòng)圖,典型包括了開始、轉(zhuǎn)換、活動(dòng)、入口動(dòng)作、出口動(dòng)作、決策、結(jié)束等基本活動(dòng)圖組成,為基于WF映射構(gòu)建奠定了堅(jiān)實(shí)的基礎(chǔ)。
一個(gè)UML活動(dòng)圖包含若干個(gè)交互的活動(dòng)對(duì)象,根據(jù)前面分析的映射關(guān)系,每一個(gè)WF中的活動(dòng)都以 UML的活動(dòng)圖中活動(dòng)名來命名,由于 WF中Activity都置于Flowchart之中,那么所有UML時(shí)序圖中對(duì)象,形成了一個(gè)Flowchart對(duì)象。如在圖1和圖 2所示,一個(gè) UML活動(dòng)圖中名為 Part to Shipping活動(dòng)和Flowchart中的Part to Shipping相對(duì)應(yīng),Part to Shipping、Package Part、Ship Next Day、Ship Second Day Air、Receive Part等四個(gè)活動(dòng)置于一個(gè) Flowchart中,形成了一個(gè)名為 Flowchart_Shipping the Part to the Customer流程圖;入口動(dòng)作和出口動(dòng)作的命名以此類推。這樣的命名保證了兩種圖形轉(zhuǎn)換的一致性,更強(qiáng)調(diào)了活動(dòng)和對(duì)象的依附關(guān)系,在構(gòu)建實(shí)現(xiàn)上便于編碼測試。這樣命名便于我們?nèi)プ匪轄顟B(tài)的形成過程,可以很清晰的區(qū)分狀態(tài)的起源和嵌入狀況,也便于有效的擴(kuò)展。

表1 UML 活動(dòng)圖和WF流程圖的映射關(guān)系及圖形表示Tab.1 Mapping relationship and graphical representation between WF Flowchart and UML activity diagram

圖1 運(yùn)送部件到客戶活動(dòng)圖Fig.1 Activity diagram of shipping the part to the customer
依據(jù)前面的映射關(guān)系和命名規(guī)則,如圖2基于WF的運(yùn)送部件到客戶靜態(tài)映射模型所示,采用分層逐步迭代的思想,清晰地實(shí)現(xiàn)了模型轉(zhuǎn)換。由圖中可以看出,UML活動(dòng)圖示例1中的Part to Shipping、Package Part、Ship Next Day、Ship Second Day Air、Receive Part等活動(dòng)以及相關(guān)的變遷、決策、入口動(dòng)作、出口動(dòng)作等都信息無損的映射到WF的Flowchart_Shipping the Part to the Customer流程圖上。其中UML 中Part to Shipping活動(dòng)中的入口動(dòng)作和出口動(dòng)作被顯式的映射為“do/Verify Quality”和“exit/ Give to Shipping”動(dòng)作方法,圖3中詳細(xì)介紹這些動(dòng)作的實(shí)現(xiàn),其他的活動(dòng)以此類推;UML中的Weigh Decision決策判斷也被無縫的映射成可以執(zhí)行的分支判斷,圖3中將會(huì)詳細(xì)的介紹判斷執(zhí)行的過程。
至此,基于WF Flowchart的靜態(tài)映射模型下,活動(dòng)圖中所有靜態(tài)信息,完全被映射和轉(zhuǎn)換成功。相對(duì)于系統(tǒng)業(yè)務(wù)流程中的分析和設(shè)計(jì),這部分映射和轉(zhuǎn)換僅僅實(shí)現(xiàn)了靜態(tài)的信息轉(zhuǎn)移,對(duì)于動(dòng)態(tài)變化的模型分析來說,業(yè)務(wù)流程如何執(zhí)行,變遷如何啟動(dòng),判斷如何動(dòng)態(tài)地實(shí)現(xiàn)等等,UML的活動(dòng)圖都沒有體現(xiàn),按照傳統(tǒng)的 UML分析與設(shè)計(jì)規(guī)范,需要進(jìn)一步的抽象建模、細(xì)化算法實(shí)現(xiàn),基于 WF Flowchart可視化工作流實(shí)現(xiàn)模型模型,可以無縫的進(jìn)一步實(shí)現(xiàn)。
微軟WF基礎(chǔ)框架提供了是可視化的工作流編程實(shí)現(xiàn)模型,對(duì)于活動(dòng)圖中的每一個(gè)活動(dòng)、變遷和決策都可以動(dòng)態(tài)的實(shí)現(xiàn)。如圖3所示Part to Shipping、Package Part活動(dòng)細(xì)化和實(shí)現(xiàn)模型,Part to Shipping活動(dòng)入口動(dòng)作和出口動(dòng)作被細(xì)化實(shí)現(xiàn),可以顯式的看出,入口動(dòng)作由 Manufacturing對(duì)象的DoVerifyQuality 方法來實(shí)現(xiàn),并給出了“Verify-Result”驗(yàn)證結(jié)果,入口動(dòng)作結(jié)束后進(jìn)入“Give to Shipping”提醒;同理Package Part活動(dòng)入口動(dòng)作由
“new Shipping()”創(chuàng)建Shipping對(duì)象的DoVerify-Address方法來實(shí)現(xiàn)。

圖2 基于WF的運(yùn)送部件到客戶靜態(tài)映射模型Fig.2 Static mapping model of shipping the part to the customer based on WF
在業(yè)務(wù)分析建模過程中,傳統(tǒng)的 UML分析與設(shè)計(jì)實(shí)現(xiàn)了靜態(tài)的建模,經(jīng)過如圖2的靜態(tài)映射模型到如圖3的動(dòng)態(tài)細(xì)化實(shí)現(xiàn)模型,靜態(tài)的UML活動(dòng)圖被映射成WF Flowchart的可視化動(dòng)態(tài)模型。如圖4 基于WF的運(yùn)送部件到客戶活動(dòng)圖動(dòng)態(tài)運(yùn)行測試,構(gòu)建的WF模型在工作流的引擎牽引下就可以實(shí)現(xiàn)動(dòng)態(tài)的運(yùn)行測試,一定程度上實(shí)現(xiàn)了業(yè)務(wù)過程的自動(dòng)化,實(shí)現(xiàn)了業(yè)務(wù)流程從 UML分析設(shè)計(jì)到無縫實(shí)現(xiàn)。


圖4 基于WF的運(yùn)送部件到客戶活動(dòng)圖動(dòng)態(tài)測試Fig.4 Dynamic test of shipping the part to the customer activity diagram based WF
在 UML業(yè)務(wù)流程建模分析、設(shè)計(jì)到實(shí)現(xiàn)的過程中,動(dòng)態(tài)的迭代分析總是存在著信息的丟失和不一致性,探索一種從業(yè)務(wù)分析到實(shí)現(xiàn)的無縫轉(zhuǎn)換是必要的。本文在分析UML活動(dòng)圖和WF Flowchart結(jié)合優(yōu)勢及相關(guān)概念和符號(hào)表示的基礎(chǔ)上,選取Rational Rose中典型的活動(dòng)圖,深入研究了基于WF Flowchart流程圖的 UML活動(dòng)圖的構(gòu)建實(shí)現(xiàn),從UML活動(dòng)中簡單活動(dòng)之間的轉(zhuǎn)換、入口動(dòng)作、出口動(dòng)作,到泳道對(duì)象的映射,顯式地活動(dòng)及變遷決策的轉(zhuǎn)換映射為一定的規(guī)則或條件,構(gòu)建了基于 WF的流程圖的可視化動(dòng)態(tài)模型,基于微軟工作流引擎,實(shí)現(xiàn)了業(yè)務(wù)過程建模自動(dòng)化測試,探索了從 UML可視化建模分析、設(shè)計(jì)到WF可視化實(shí)現(xiàn)的透明轉(zhuǎn)換,具有實(shí)際的意義。
[1] [美]Grady Booch, James Rumbaugh, Ivar Jacobson著. UML用戶指南[M]. 北京: 人民郵電出版社. 2013, 1.
[2] Object Management Group: Unified Modeling Language.formal/2017-12-05, OMG UML(2017).
[3] Alexander Knapp and Till Mossakowski.UML Interactions Meet State Machine--An Institutional Approach. 7th Conference on Algebra and Coalgebra in Computer Science(CALCO 2017). 15: 1–15.
[4] 張姝, 張廣泉. UML順序圖的一種形式化描述方法[J]. 重慶師范大學(xué)學(xué)報(bào)(自然科學(xué)版). 2007, 24(3): 42-45.
[5] 郭艷燕, 張楠, 童向榮. UML順序圖形式化語義的研究綜述[J]. 計(jì)算機(jī)科學(xué). 2017, 44(2): 17-29.
[6] The programming model, samples, and tools of the Windows Workflow Foundation (WF). https://docs.microsoft.com/enus/dotnet/framework/windows-workflow-foundation/index
[7] 梁義芝, 王延章等. UML活動(dòng)圖的形式語義及分析[J]. 計(jì)算機(jī)工程與應(yīng)用. 2003, 18: 28-31.
[8] 王聰, 王智學(xué). UML活動(dòng)圖的操作語義[J]. 計(jì)算機(jī)研究與發(fā)展. 2007, 44(10): 1801-1807.