孔令東
(鹽城工學(xué)院信息工程學(xué)院,江蘇 鹽城 224051)
Windows Workflow Foundation(WF)是微軟推出的一個可擴展框架,可用于快速生成啟用工作流應(yīng)用程序,WF自帶編程模型和可以自定義的工作流引擎,工作流引擎可將業(yè)務(wù)邏輯作為規(guī)則或條件來實現(xiàn),可視化地實現(xiàn)業(yè)務(wù)過程自動化。WF內(nèi)置的Flowchart工作流圖形化工具,可以為流程活動驅(qū)動的業(yè)務(wù)過程提供可視化的建模實現(xiàn)方案[1-3]。
Unified Modeling Language(UML)作為 Object Management Group(OMG)面向?qū)ο蠓治雠c設(shè)計的標準,可以為系統(tǒng)業(yè)務(wù)流程提供可視化的分析與設(shè)計工具,盡管在實踐過程中,人們總結(jié)出了各種軟件開發(fā)過程,比如說Rational Unified Process(RUP)統(tǒng)一開發(fā)過程,核心也離不開迭代的思想,對于龐大的業(yè)務(wù)流程來說,需要耗時耗力去回溯修改業(yè)務(wù)流程[4,5],動態(tài)的業(yè)務(wù)分析建模到可視化的實現(xiàn)便于追溯和動態(tài)修改業(yè)務(wù)流程變化。UML包含了活動圖(Activity Diagram)的語義描述,提供一種業(yè)務(wù)流程工作流建模的方法,便于對離散事件驅(qū)動的動態(tài)行為建模[6-8]。
本文在研究Rational Rose幫助中UML典型活動圖樣例的基礎(chǔ)上,基于 WF的可視化 Flowchart實現(xiàn)模型,探索從UML活動建模到WF Flowchart工作流的無縫轉(zhuǎn)換,快速生成便于測試的業(yè)務(wù)流程應(yīng)用程序。
系分析
UML活動圖和WF流程圖在可視化建模及實現(xiàn)上具有緊密的關(guān)聯(lián)性,從相關(guān)概念的組成和含義幾乎都一一對應(yīng),這一點保證了無縫的轉(zhuǎn)換。如表 1 UML活動圖和WF流程圖的映射關(guān)系及圖形表示,UML活動圖中的 Start(開始)、Activity(活動)、Transition(變遷)、Decision(決策)、Swimlane(泳道)、End(結(jié)束)分別和 WF中的 Start(開始)、Activity(活動)、Transition(變遷)、Decision(決策)、InvokeMethod Activity Object(調(diào)用方法活動對象、TerminateWorkflow(終止工作流活動)相對應(yīng)。在 UML中一個泳道對象負責相應(yīng)的活動,活動之間通過消息動作完成活動之間的轉(zhuǎn)換,WF中一個流程圖由若干活動組成,根據(jù)活動的相應(yīng)條件完成流程的轉(zhuǎn)換,雖然在WF中沒有專門的泳道與之相對應(yīng),但是,在實際模型轉(zhuǎn)換過程中,我們采用InvokeMethod Activity Object同UML中的泳道對應(yīng),不僅解決的活動的歸屬問題,而且可以清晰的表示,活動對象調(diào)用相關(guān)動作,后面樣例的實現(xiàn)上會詳細介紹。在映射的基礎(chǔ)上,兩者之間在可視化的建模中就有了相對應(yīng)的可視化圖形符號。如表 1所示 從符號的表達到信息的展示,都基本可以一一對應(yīng)轉(zhuǎn)換,從而保證了可視化建模從分析到實現(xiàn)的一致性。從形式建模的語義上沒有信息丟失,主要的區(qū)別在于UML活動圖的模型偏重于分析、設(shè)計,WF流程圖中可以直接動態(tài)的實現(xiàn),在下面的基于WF流程圖的UML活動圖構(gòu)建中會詳細分析。
為更好的說明基于WF流程圖的UML活動圖構(gòu)建和實現(xiàn),選取了Rational Rose幫助中典型的活動圖,以便于深入的轉(zhuǎn)換說明。如圖1所示運送部件到客戶活動示例圖,在這個示例定義了運送部件到客戶所涉及的相關(guān)過程和步驟,每一個泳道(Manufacturing、Shipping、Customer)對象負責一個或多個活動,同時每一個活動都特別定義了不同的入口動作或出口動作,來完成不同活動之間的轉(zhuǎn)換,其中,對部件運輸包裹稱重來確定運輸?shù)耐緩?,使用了決策判斷。這是一個典型的 UML活動圖,典型包括了開始、轉(zhuǎn)換、活動、入口動作、出口動作、決策、結(jié)束等基本活動圖組成,為基于WF映射構(gòu)建奠定了堅實的基礎(chǔ)。
一個UML活動圖包含若干個交互的活動對象,根據(jù)前面分析的映射關(guān)系,每一個WF中的活動都以 UML的活動圖中活動名來命名,由于 WF中Activity都置于Flowchart之中,那么所有UML時序圖中對象,形成了一個Flowchart對象。如在圖1和圖 2所示,一個 UML活動圖中名為 Part to Shipping活動和Flowchart中的Part to Shipping相對應(yīng),Part to Shipping、Package Part、Ship Next Day、Ship Second Day Air、Receive Part等四個活動置于一個 Flowchart中,形成了一個名為 Flowchart_Shipping the Part to the Customer流程圖;入口動作和出口動作的命名以此類推。這樣的命名保證了兩種圖形轉(zhuǎn)換的一致性,更強調(diào)了活動和對象的依附關(guān)系,在構(gòu)建實現(xiàn)上便于編碼測試。這樣命名便于我們?nèi)プ匪轄顟B(tài)的形成過程,可以很清晰的區(qū)分狀態(tài)的起源和嵌入狀況,也便于有效的擴展。
表1 UML 活動圖和WF流程圖的映射關(guān)系及圖形表示Tab.1 Mapping relationship and graphical representation between WF Flowchart and UML activity diagram
圖1 運送部件到客戶活動圖Fig.1 Activity diagram of shipping the part to the customer
依據(jù)前面的映射關(guān)系和命名規(guī)則,如圖2基于WF的運送部件到客戶靜態(tài)映射模型所示,采用分層逐步迭代的思想,清晰地實現(xiàn)了模型轉(zhuǎn)換。由圖中可以看出,UML活動圖示例1中的Part to Shipping、Package Part、Ship Next Day、Ship Second Day Air、Receive Part等活動以及相關(guān)的變遷、決策、入口動作、出口動作等都信息無損的映射到WF的Flowchart_Shipping the Part to the Customer流程圖上。其中UML 中Part to Shipping活動中的入口動作和出口動作被顯式的映射為“do/Verify Quality”和“exit/ Give to Shipping”動作方法,圖3中詳細介紹這些動作的實現(xiàn),其他的活動以此類推;UML中的Weigh Decision決策判斷也被無縫的映射成可以執(zhí)行的分支判斷,圖3中將會詳細的介紹判斷執(zhí)行的過程。
至此,基于WF Flowchart的靜態(tài)映射模型下,活動圖中所有靜態(tài)信息,完全被映射和轉(zhuǎn)換成功。相對于系統(tǒng)業(yè)務(wù)流程中的分析和設(shè)計,這部分映射和轉(zhuǎn)換僅僅實現(xiàn)了靜態(tài)的信息轉(zhuǎn)移,對于動態(tài)變化的模型分析來說,業(yè)務(wù)流程如何執(zhí)行,變遷如何啟動,判斷如何動態(tài)地實現(xiàn)等等,UML的活動圖都沒有體現(xiàn),按照傳統(tǒng)的 UML分析與設(shè)計規(guī)范,需要進一步的抽象建模、細化算法實現(xiàn),基于 WF Flowchart可視化工作流實現(xiàn)模型模型,可以無縫的進一步實現(xiàn)。
微軟WF基礎(chǔ)框架提供了是可視化的工作流編程實現(xiàn)模型,對于活動圖中的每一個活動、變遷和決策都可以動態(tài)的實現(xiàn)。如圖3所示Part to Shipping、Package Part活動細化和實現(xiàn)模型,Part to Shipping活動入口動作和出口動作被細化實現(xiàn),可以顯式的看出,入口動作由 Manufacturing對象的DoVerifyQuality 方法來實現(xiàn),并給出了“Verify-Result”驗證結(jié)果,入口動作結(jié)束后進入“Give to Shipping”提醒;同理Package Part活動入口動作由
“new Shipping()”創(chuàng)建Shipping對象的DoVerify-Address方法來實現(xiàn)。
圖2 基于WF的運送部件到客戶靜態(tài)映射模型Fig.2 Static mapping model of shipping the part to the customer based on WF
在業(yè)務(wù)分析建模過程中,傳統(tǒng)的 UML分析與設(shè)計實現(xiàn)了靜態(tài)的建模,經(jīng)過如圖2的靜態(tài)映射模型到如圖3的動態(tài)細化實現(xiàn)模型,靜態(tài)的UML活動圖被映射成WF Flowchart的可視化動態(tài)模型。如圖4 基于WF的運送部件到客戶活動圖動態(tài)運行測試,構(gòu)建的WF模型在工作流的引擎牽引下就可以實現(xiàn)動態(tài)的運行測試,一定程度上實現(xiàn)了業(yè)務(wù)過程的自動化,實現(xiàn)了業(yè)務(wù)流程從 UML分析設(shè)計到無縫實現(xiàn)。
圖4 基于WF的運送部件到客戶活動圖動態(tài)測試Fig.4 Dynamic test of shipping the part to the customer activity diagram based WF
在 UML業(yè)務(wù)流程建模分析、設(shè)計到實現(xiàn)的過程中,動態(tài)的迭代分析總是存在著信息的丟失和不一致性,探索一種從業(yè)務(wù)分析到實現(xiàn)的無縫轉(zhuǎn)換是必要的。本文在分析UML活動圖和WF Flowchart結(jié)合優(yōu)勢及相關(guān)概念和符號表示的基礎(chǔ)上,選取Rational Rose中典型的活動圖,深入研究了基于WF Flowchart流程圖的 UML活動圖的構(gòu)建實現(xiàn),從UML活動中簡單活動之間的轉(zhuǎn)換、入口動作、出口動作,到泳道對象的映射,顯式地活動及變遷決策的轉(zhuǎn)換映射為一定的規(guī)則或條件,構(gòu)建了基于 WF的流程圖的可視化動態(tài)模型,基于微軟工作流引擎,實現(xiàn)了業(yè)務(wù)過程建模自動化測試,探索了從 UML可視化建模分析、設(shè)計到WF可視化實現(xiàn)的透明轉(zhuǎn)換,具有實際的意義。
[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é)報(自然科學(xué)版). 2007, 24(3): 42-45.
[5] 郭艷燕, 張楠, 童向榮. UML順序圖形式化語義的研究綜述[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活動圖的形式語義及分析[J]. 計算機工程與應(yīng)用. 2003, 18: 28-31.
[8] 王聰, 王智學(xué). UML活動圖的操作語義[J]. 計算機研究與發(fā)展. 2007, 44(10): 1801-1807.