4 工作流治理系統功能分析 前面已經介紹過,一個完整的通用工作流治理系統應當包括七個部件,這里限于篇幅的原因,只對工作流治理系統的核心部分:工作流執行子系統和工作流引擎進行分析。
圖1表示工作流執行子系統的用例圖。活動者包括WfClient(工作流客戶端)、Monitor(工作流監控端)、DefinitionDB(工作流定義數據庫)、EnactmentDB(工作流運行數據庫)、OrganizationDB(組織機構數據庫)、ApplicationDB(應用程序數據庫)、WorkItemDB(工作項數據庫)、ConfigFile(工作流系統配置文件)。這里,WfClient 作為接收用戶交互的界面部分,將用戶所作的行為,依照固定的規則,將請求送給工作流執行子系統進行處理。Monitor 作為接收系統治理員交互的界面部分,將系統治理員對系統作出的調整,發送給工作流執行子系統進行處理。其余的DefinitionDB 等活動者,負責將工作流執行子系統每一步的操作與狀態記錄到數據庫中, 以永久保存。用例包括ResourceLocate ( 資源定位)、EngineContainer ( 引擎容器)、ProcessDefLoad(定義裝載)、ProcessMonitor(過程監控)、Util(公用程序)。其中,EngineContainer 通過ResourceLocate 定位所有系統所用到的資源,表EngineContainer 用例使用ResourceLocate 用例,用帶有箭頭的實線表示。EngineContainer 不直接與用戶交互,活動者對工作流的參與都是通過ProcessMonitor 這個工作流執行子系統的入口來進行的。EngineContainer 通過ProcessDefLoad 將現有的工作流定義裝入,這樣才能運行該工作流,EngineContainer 用例與ResourceLocate 用例之間是使用關系。
圖2表示工作流引擎的用例圖。其中的活動者包括EngineManager(引擎治理器)與LogFiles(日志文件)。EngineManager 負責控制工作流中所有元素的狀態,是工作流調度的核心。LogFiles 階段性將固定格式的文字記錄為日志,用以保存。這里的用例有ProcessControl(控制過程實例)、TransitionControl(控制轉移)、ActivityControl(控制活動)、WorkItemControl(控制工作項)、DanamaticModify(動態修改流程)、CreateLogfile(創建日志文件)。EngineManager 根據一定的條件,通過ProcessControl、TransitionControl、ActivityControl、WorkItemControl 與DanamaticModify,控制工作流各個組成元素的狀態,以達到控制工作流的目的。 c.過程監督
圖3表示過程監督用例圖。其中的活動者包括EnactmentDB(工作流運行數據庫)與engineContainer(引擎容器)。用例有EngineQuery(對引擎的查詢)、ProcessDefQuery(對過程定義信息的查詢)、EngineContainerQuery(引擎容器運行狀況的查詢)、ProcessInstanceQuery(對過程實例進行查詢)、ActivityInstanceQuery(對活動實例進行查詢)、WorkItemQuery(對工作項進行查詢)、TransitionQuery(對轉移信息查詢)。 這里僅對用例ProcessInstanceQuery 進行具體功能分析,對其余用例的分析方法與之類似。
圖4 表示處理請求用例的順序圖。圖中五個方框分別表示五個對象:ProcessMonitor、EngineManager、Engine、EntactmentDB、Logfiles。這個用例是由ProcessMonitor 接收用戶操作,再將這些操作轉換成固定的請求,發送給引擎執行而產生的。
圖5表示對應于處理請求用例的協作圖。這個用例是由ProcessMonitor 接收用戶操作,再將這些操作轉換成固定的請求,發送給引擎執行而產生的。這個協作圖表現了處理請求用例所涉及的五個相關對象之間相互協作的關系。
圖6 表示過程實例的狀態機視圖。從圖中可以看出,一個工作流定義的過程實例,在運行時可能有五種不同的過程,分別為初始狀態、就緒狀態、運行狀態、掛起狀態與結束狀態。 一個過程實例在初始時,均為初始狀態(initial state)。根據需要,某個過程實例被創建(create),成為就緒狀態(Ready)。隨后,用戶可以根據需要,選擇就緒狀態的過程實例進行啟動(start),被啟動的過程實例的狀態就變為運行狀態(Running)。處于就緒狀態和運行狀態的過程實例都可以通過取消操作(abort)轉變為結束狀態(end state)。處于運行狀態的過程實例,通過掛起操作(hold),可以轉變為暫時停止的掛起狀態(Holded),同時處于掛起狀態的過程實例也可以通過運行操作(run)轉變為運行狀態。掛起狀態與結束狀態的區別在于掛起狀態并不釋放所占用的資源,因而是可以恢復的。最后,一個處于運行狀態的過程實例假如運行完畢,通過完成操作(finish)轉變為結束狀態。 狀態機可以用于描述用戶界面、設備控制和其它交互式子系統。它們還可用于在生命期中經歷了若干特定階段,每個階段擁有非凡的行為的對象。 5.4 創建活動視圖活動視圖是用于顯示執行某個計算過程中的運算活動的狀態機的一種非凡形式。活動狀態代表了運算執行的狀態:流程的步驟或操作的執行。活動圖描述了順序和并發活動分組。活動視圖表達為活動圖。 活動圖包含活動狀態。活動狀態表現了過程中語句的執行或工作流中活動的運行。與一般等待狀態等待事件不同,活動狀態等待的是運算的結束。當活動結束時,執行處理到圖中的下一個活動。前一個活動結束時,活動圖中的結束遷移被激發。活動狀態通常沒有外部事件的遷移,但它們可以由外圍狀態的事件而被取消。 在活動圖中,用左右兩段是圓弧的長方形表示活動,用較粗的橫線表示活動的分發,用帶有箭頭的線表示活動處理的先后順序。
圖7 表示用戶的操作活動圖。用戶在使用系統所提供的功能之前,首先應當登錄系統,也就是說,操作的第一步是登錄(login)。登錄之后,用戶可以在三種操作中任選一個執行:選擇過程定義(choose process define)、選擇過程實例(choose process instance)以及選擇工作項(choose workitem)。這三個活動的執行,沒有先后順序,完全由用戶進行選擇。 當用戶選擇了過程定義后,可以創建一個所選的過程定義的實例,也就是執行創建過程定義活動(create process define);當用戶選擇了一個過程實例后,根據這個過程實例狀態的不同,可以對這個過程實例進行終止(abort)、啟動(start)、掛起(hold)與運行(run)等操作,這些操作的執行是沒有先后順序的;當用戶選擇了一個工作項后,可以執行這個工作項,也就是做這個工作項的內容(do workitem)。 根據以上使用用例視圖、交互視圖、狀態機視圖以及活動視圖對工作流治理系統所應具有的功能層次進行的分析,對通用工作流治理系統要達到的目標,應當有了一個較為清楚的熟悉。而這些熟悉與理解,將為進一步的設計,奠定良好的基礎。 編輯推薦專題:UML統一建模語言(責任編輯:銘銘)新聞熱點
疑難解答