基于UML的工作流管理系統(tǒng)分析 0 引言
隨著社會生產(chǎn)的流程化,工作流起著越來越重要的作用。根據(jù) WFMC 的定義,工作流(Workflow)就是自動運作的業(yè)務(wù)過程部分或整體,表現(xiàn)為參與者對文件、信息或任務(wù)按照規(guī)程采取行動,并令其在參與者之間傳遞。簡單地說,工作流就是一系列相互銜接、自動進行的業(yè)務(wù)活動或任務(wù)。本文將詳細介紹基于UML的工作流管理系統(tǒng)分析與建模。 1 工作流概述
對工作流的研究起源于二十世紀七十年代,受網(wǎng)絡(luò)的局限性,最初的工作流系統(tǒng)主要以企業(yè)內(nèi)部的文檔處理為主。到了二十世紀九十年代,隨著Internet 技術(shù)的發(fā)展及應(yīng)用,促進了電子商務(wù)應(yīng)用的極大發(fā)展,使得公司與公司之間、公司內(nèi)部部門之間以及子公司之間的業(yè)務(wù)相互處理成為可能,這為工作流的發(fā)展帶來了很大的機遇和挑戰(zhàn)。 根據(jù)國際有關(guān)組織的預測,隨著電子商務(wù)的發(fā)展,以數(shù)據(jù)處理為中心的數(shù)據(jù)庫產(chǎn)品已經(jīng)進入穩(wěn)定發(fā)展期,以業(yè)務(wù)過程處理為中心的工作流產(chǎn)品將進入高速發(fā)展期。在國內(nèi),隨著企業(yè)管理的規(guī)范化和規(guī)模的不斷擴大,企業(yè)的計算機管理將不僅僅停留在信息資源管理上,而將向更復雜的業(yè)務(wù)過程管理邁進。 為了實現(xiàn)組織目標,有關(guān)業(yè)務(wù)活動依時序或邏輯關(guān)系相互連接構(gòu)成業(yè)務(wù)流程。在業(yè)務(wù)開展過程中,文檔、信息或任務(wù),依據(jù)組織規(guī)范在參與者之間傳遞、處理或執(zhí)行??傮w業(yè)務(wù)流程中,實現(xiàn)了基于計算機輔助處理而達到自動化的全部或部分稱為工作流。也就是說,工作流是在計算機輔助下全部或部分自動執(zhí)行的工作過程,該過程可運行于異質(zhì)、分布的運行環(huán)境中,供多人協(xié)同工作。工作流服務(wù)器是供業(yè)務(wù)流程可視化設(shè)計、管理和控制業(yè)務(wù)流程的運行、并在實際執(zhí)行過程中可動態(tài)修改業(yè)務(wù)流程的一種計算機軟件平臺。它使得快速開發(fā)、部署和運行企業(yè)業(yè)務(wù)管理系統(tǒng)、電子商務(wù)系統(tǒng)等成為可能。它也使得企業(yè)在復雜多變的市場環(huán)境中,為了快速適應(yīng)市場的變化,在保存現(xiàn)有投資,現(xiàn)有系統(tǒng)不變的情況下,迅速調(diào)整業(yè)務(wù)或商務(wù)流程成為可能。如它可應(yīng)用在:采購處理、各種申請、訂單與報價處理、員工績效考核、人事變動、貸款審批、索賠處理、B2B、電子商務(wù)等。 2 工作流管理系統(tǒng)概述
工作流管理系統(tǒng)是定義、創(chuàng)建和執(zhí)行工作流的系統(tǒng),它是一種特殊的計算機支持的協(xié)同處理(CSCW,Computer Supported CooperativeWork)軟件系統(tǒng)。 工作流管理系統(tǒng)的產(chǎn)生 工作流管理系統(tǒng)(WfMS,WorkflowManagementSystem)是以計算機支持的分布式、協(xié)同工作業(yè)務(wù)流程的自動或半自動化為研究目標的軟件系統(tǒng)。隨著計算機網(wǎng)絡(luò),特別是Internet/Intranet 的迅猛發(fā)展和應(yīng)用,計算機支持的分布式、協(xié)同工作的工作流系統(tǒng)在企、事業(yè)單位中的地位顯得越來越重要,也有著廣闊的前景。 工作流管理系統(tǒng)是定義、創(chuàng)建、執(zhí)行工作流的系統(tǒng)。開發(fā)這類軟件系統(tǒng)就是要協(xié)調(diào)分布式、協(xié)同處理的各個節(jié)點上的活動,按照預定義的控制流程進行執(zhí)行,以達到對它們的自動執(zhí)行和有效的管理。開發(fā)這類軟件有很大的重復性,工作流管理系統(tǒng)就是將這類軟件的公共的流程控制部分(工作流運行服務(wù)、引擎)、管理部分和其他公共部分抽象出來,形成一種軟件開發(fā)平臺,用戶只需要將它們的控制流程描述出來,該平臺軟件就可對它們的控制流程進行自動執(zhí)行和有效地管理,而不需要對每次不同的應(yīng)用重復地開發(fā)。 不同工作流管理系統(tǒng)可以有不同的實現(xiàn)方法,不同的底層通訊機制,應(yīng)用的范圍也可能有很大的差距,但所有的工作流管理系統(tǒng)從用戶的應(yīng)用層上來看,通用工作流管理系統(tǒng)應(yīng)該能夠提供以下三個方面的功能支持: 首先是建造功能,即對工作流的業(yè)務(wù)流程及組成這些業(yè)務(wù)流程的活動進行定義和建模。 其次是運行控制功能,即在一定的運行環(huán)境下,負責創(chuàng)建、執(zhí)行和控制工作流實例,激活相應(yīng)的資源和應(yīng)用,并完成過程中從一個活動到另一個活動的控制轉(zhuǎn)移。它是整個工作流管理系統(tǒng)的核心部分。 最后是運行交互功能,即在工作流實例的運行中,工作流管理系統(tǒng)與工作流參與者(業(yè)務(wù)工作的參與者或控制者)及外部應(yīng)用程序進行交互的功能。 由于信息技術(shù)的發(fā)展和日趨激烈的商業(yè)競爭,人們不再滿足于獨立、零散的辦公自動化和計算機應(yīng)用,而是需要綜合的、集成化的解決方案。作為一種對常規(guī)性事務(wù)進行管理、集成的技術(shù),WfMS 的出現(xiàn)是必然的。它可以改進和優(yōu)化業(yè)務(wù)流程,提高業(yè)務(wù)工作效率;實現(xiàn)更好的業(yè)務(wù)過程控制,提高顧客服務(wù)質(zhì)量;提高業(yè)務(wù)流程的柔性等。 3 工作流管理系統(tǒng)的組成
一個完整的工作流管理系統(tǒng)中主要包括如下七個部分的部件和數(shù)據(jù)。 a.過程定義工具 過程定義工具被用來創(chuàng)建計算機可處理的業(yè)務(wù)過程描述。它可以是形式化的過程定義語言或?qū)ο箨P(guān)系模型,也可以是簡單地規(guī)定用戶間信息傳輸?shù)囊唤M路由命令。 b.過程定義 過程定義(數(shù)據(jù))包含了所有使業(yè)務(wù)過程能被工作流執(zhí)行子系統(tǒng)執(zhí)行的必要信息。這些信息包括起始和終止條件、各個組成活動、活動調(diào)度規(guī)則、各業(yè)務(wù)的參與者需要做的工作、相關(guān)應(yīng)用程序和數(shù)據(jù)的調(diào)用信息等。 c.工作流執(zhí)行子系統(tǒng)和工作流引擎 工作流執(zhí)行子系統(tǒng)也稱為(業(yè)務(wù))過程執(zhí)行環(huán)境,包括一個或多個工作流引擎。工作流引擎是WfMS 的核心軟件組元。它的功能包括:解釋過程定義,創(chuàng)建過程實例并控制其執(zhí)行,調(diào)度各項活動,為用戶工作表添加工作項,通過應(yīng)用程序接口(API,Application Program Interface)調(diào)用應(yīng)用程序,提供監(jiān)督和管理功能等。工作流執(zhí)行子系統(tǒng)可以包括多個工作流引擎,不同工作流引擎通過協(xié)作共同執(zhí)行工作流。 d.工作流控制數(shù)據(jù) 指被工作流執(zhí)行子系統(tǒng)和工作流引擎管理的系統(tǒng)數(shù)據(jù),例如工作流實例的狀態(tài)信息、每一活動的狀態(tài)信息等。 e.工作流相關(guān)數(shù)據(jù) 指與業(yè)務(wù)過程相關(guān)的數(shù)據(jù)。WfMS 使用這些數(shù)據(jù)確定工作流實例的狀態(tài)轉(zhuǎn)移,例如過程調(diào)度決策數(shù)據(jù)、活動間的傳輸數(shù)據(jù)等。工作流相關(guān)數(shù)據(jù)既可以被工作流引擎使用,也可以被應(yīng)用程序調(diào)用。 f.工作表和工作表處理程序 工作表列出了與業(yè)務(wù)過程的參與者相關(guān)的一系列工作項,工作表處理程序則對用戶和工作表之間的交互進行管理。工作表處理程序完成的功能有:支持用戶在工作表中選取一個工作項,重新分配工作項,通報工作項的完成,在工作項被處理的過程中調(diào)用相應(yīng)的應(yīng)用程序等。 g.應(yīng)用程序和應(yīng)用數(shù)據(jù) 應(yīng)用程序可以直接被WfMS 調(diào)用或通過應(yīng)用程序代理被間接調(diào)用。通過應(yīng)用程序調(diào)用,WfMS 部分或完全自動地完成一個活動,或者對業(yè)務(wù)參與者的工作提供支持。與工作流控制數(shù)據(jù)和相關(guān)數(shù)據(jù)不同,應(yīng)用數(shù)據(jù)對應(yīng)用程序來講是局部數(shù)據(jù),對WfMS 的其他部件來說是不可見的。 術(shù)語解釋 表1 工作流管理系統(tǒng)術(shù)語解釋
4 工作流管理系統(tǒng)功能分析
前面已經(jīng)介紹過,一個完整的通用工作流管理系統(tǒng)應(yīng)當包括七個部件,這里限于篇幅的原因,只對工作流管理系統(tǒng)的核心部分:工作流執(zhí)行子系統(tǒng)和工作流引擎進行分析。 工作流管理系統(tǒng)核心功能 工作流管理系統(tǒng)的核心組成部分稱為工作流執(zhí)行子系統(tǒng),它為創(chuàng)建、初始化和執(zhí)行過程實例提供了一個運行環(huán)境。 在一個工作流執(zhí)行子系統(tǒng)中可以包括一個或多個工作流引擎,前者是一種集中式的實現(xiàn)方式,而后者是一種分布式的實現(xiàn)方式。分布式的實現(xiàn)方式又可以分為同構(gòu)和異構(gòu)兩種不同的情況。所謂同構(gòu)是指在一個運行服務(wù)系統(tǒng)中包含了多個兼容的工作流引擎;所謂異構(gòu)是指在工作流管理系統(tǒng)中包含了兩個以上異構(gòu)的工作流執(zhí)行子系統(tǒng)。 工作流引擎是工作流管理系統(tǒng)的核心軟件部件。它的主要功能有:解釋過程定義,控制過程實例(創(chuàng)建、激活、掛起、終止等),按照過程定義已確定的業(yè)務(wù)邏輯調(diào)用各項活動,為用戶工作表添加工作項,維護工作流控制數(shù)據(jù)和工作流相關(guān)數(shù)據(jù),調(diào)用應(yīng)用程序,提供監(jiān)督,管理和審計功能。 工作流執(zhí)行子系統(tǒng)涉及四種數(shù)據(jù):工作流控制數(shù)據(jù)、工作流相關(guān)數(shù)據(jù)、組織/角色模型數(shù)據(jù)和工作表。 第一種,工作流控制數(shù)據(jù)。指只由工作流執(zhí)行子系統(tǒng)維護的內(nèi)部控制數(shù)據(jù),主要用于表示過程實例與活動實例的狀態(tài)信息。 第二種,工作流相關(guān)數(shù)據(jù)。指與業(yè)務(wù)過程相關(guān)的數(shù)據(jù),他們由應(yīng)用程序或由用戶通過工作項處理來產(chǎn)生和更新,工作流引擎根據(jù)相關(guān)數(shù)據(jù)來確定過程實例的狀態(tài)轉(zhuǎn)移,例如過程調(diào)度決策數(shù)據(jù)、活動間的傳輸數(shù)據(jù)等。 第三種,組織/角色模型數(shù)據(jù)。是描述組織結(jié)構(gòu)的數(shù)據(jù),主要用于確定工作項的執(zhí)行者。 第四種,工作表。列出了與工作流參與者相關(guān)的一系列工作項。 5 建模實例
5.1 創(chuàng)建用例視圖
用例視圖從外部用戶的角度捕獲系統(tǒng)的行為。它將系統(tǒng)功能劃分為對活動者(系統(tǒng)的理想用戶)具有意義的事務(wù)。這些功能片被稱為用例。用例通過系統(tǒng)與一個或多個活動者之間的一系列消息描述了與活動者的交互。其活動者包括人員、其它的計算機系統(tǒng)和進程。 活動者用一個小人表示,活動者的名字標在這個小人的下方。用例用一個橢圓表示,用例的名字標在橢圓中或下方,用實線與同自身通信的活動者相連接。用例視圖對活動者,所感知的系統(tǒng)功能進行建模,目的是列舉活動者和用例,顯示活動者在每個用例中的參與情況。 a. 工作流執(zhí)行子系統(tǒng) 圖1表示工作流執(zhí)行子系統(tǒng)的用例圖。活動者包括WfClient(工作流客戶端)、Monitor(工作流監(jiān)控端)、DefinitionDB(工作流定義數(shù)據(jù)庫)、EnactmentDB(工作流運行數(shù)據(jù)庫)、OrganizationDB(組織機構(gòu)數(shù)據(jù)庫)、ApplicationDB(應(yīng)用程序數(shù)據(jù)庫)、WorkItemDB(工作項數(shù)據(jù)庫)、ConfigFile(工作流系統(tǒng)配置文件)。這里,WfClient 作為接收用戶交互的界面部分,將用戶所作的行為,依照固定的規(guī)則,將請求送給工作流執(zhí)行子系統(tǒng)進行處理。Monitor 作為接收系統(tǒng)管理員交互的界面部分,將系統(tǒng)管理員對系統(tǒng)作出的調(diào)整,發(fā)送給工作流執(zhí)行子系統(tǒng)進行處理。其余的DefinitionDB 等活動者,負責將工作流執(zhí)行子系統(tǒng)每一步的操作與狀態(tài)記錄到數(shù)據(jù)庫中,以永久保存。用例包括ResourceLocate ( 資源定位)、EngineContainer ( 引擎容器)、ProcessDefLoad(定義裝載)、ProcessMonitor(過程監(jiān)控)、Util(公用程序)。其中,EngineContainer 通過ResourceLocate 定位所有系統(tǒng)所用到的資源,表EngineContainer 用例使用ResourceLocate 用例,用帶有箭頭的實線表示。EngineContainer 不直接與用戶交互,活動者對工作流的參與都是通過ProcessMonitor 這個工作流執(zhí)行子系統(tǒng)的入口來進行的。EngineContainer 通過ProcessDefLoad 將現(xiàn)有的工作流定義裝入,這樣才能運行該工作流,EngineContainer 用例與ResourceLocate 用例之間是使用關(guān)系。 這里僅給出用例ProcessMonitor 的具體功能分析。這些功能分析作為對ProcessMonitor 用例的注釋,不在用例圖上標識,只作為系統(tǒng)詳細設(shè)計時的要點。對其余用例的分析方法與之類似。 過程監(jiān)督服務(wù)器作為引擎容器的一部分,主要提供外部對引擎容器的運行狀況的監(jiān)督,即對引擎當前運行狀況的查詢。 譬如,當客戶端或管理端需要了解引擎的運行狀況時,首先發(fā)出一個消息請求,消息服務(wù)器接受到該消息后對消息進行解釋,如果屬于查詢引擎的運行狀況,則調(diào)用監(jiān)督服務(wù)部分提供的API(應(yīng)用程序接口)對引擎進行查詢,然后將結(jié)果返回至請求者。 監(jiān)督服務(wù)器處理的查詢請求根據(jù)請求對象的不同主要有如下內(nèi)容: 引擎容器運行狀況的查詢;各引擎運行狀況的查詢;過程定義信息的查詢;過程實例信息的查詢;活動實例信息的查詢;工作項信息的查詢;同步命令請求的響應(yīng)。 b.工作流引擎
圖2表示工作流引擎的用例圖。其中的活動者包括EngineManager(引擎管理器)與LogFiles(日志文件)。EngineManager 負責控制工作流中所有元素的狀態(tài),是工作流調(diào)度的核心。LogFiles 階段性將固定格式的文字記錄為日志,用以保存。這里的用例有ProcessControl(控制過程實例)、TransitionControl(控制轉(zhuǎn)移)、ActivityControl(控制活動)、WorkItemControl(控制工作項)、DanamaticModify(動態(tài)修改流程)、CreateLogfile(創(chuàng)建日志文件)。EngineManager 根據(jù)一定的條件,通過ProcessControl、TransitionControl、ActivityControl、WorkItemControl 與DanamaticModify,控制工作流各個組成元素的狀態(tài),以達到控制工作流的目的。 c.過程監(jiān)督
圖3表示過程監(jiān)督用例圖。其中的活動者包括EnactmentDB(工作流運行數(shù)據(jù)庫)與engineContainer(引擎容器)。用例有EngineQuery(對引擎的查詢)、ProcessDefQuery(對過程定義信息的查詢)、EngineContainerQuery(引擎容器運行狀況的查詢)、ProcessInstanceQuery(對過程實例進行查詢)、ActivityInstanceQuery(對活動實例進行查詢)、WorkItemQuery(對工作項進行查詢)、TransitionQuery(對轉(zhuǎn)移信息查詢)。 這里僅對用例ProcessInstanceQuery 進行詳細功能分析,對其余用例的分析方法與之類似。 ProcessInstanceQuery 是對系統(tǒng)中的過程實例進行查詢,主要包含如下內(nèi)容:取得過程實例列表:得到系統(tǒng)中的所有過程實例的一個列表;從過程實例列表中取得一個過程實例的信息;根據(jù)給定的過程實例編號得到該過程實例的詳細信息;關(guān)閉已經(jīng)打開的過程實例列表;取得系統(tǒng)中過程實例的各種狀態(tài)的一個列表;根據(jù)給定的過程實例編號查詢其狀態(tài);關(guān)閉打開的過程實例列表;取得系統(tǒng)中過程實例的各種屬性信息的列表。 5.2 創(chuàng)建交互視圖
交互視圖描述了實現(xiàn)系統(tǒng)行為角色之間的消息交換序列。分類角色是對交互中充當特殊角色的對象的描述。交互視圖提供了系統(tǒng)中行為在全局的描述,顯示了多個角色間的控制流程。交互視圖用側(cè)重點不同的兩種圖來顯示:順序圖和協(xié)作圖。 消息指角色間的單向通信,從發(fā)送者到接收者的攜帶信息的控制流。消息可能帶有角色間傳遞值的參數(shù)。 順序圖和協(xié)作圖均顯示了交互,但它們強調(diào)了不同的方面。順序圖顯示了時間順序,但角色間的關(guān)系是隱式的。協(xié)作圖表現(xiàn)了角色之間的關(guān)系,并將消息關(guān)聯(lián)至關(guān)系,但時間順序由于用順序號表達,并不十分明顯。每一種圖應(yīng)根據(jù)主要的關(guān)注焦點而使用。 a.順序圖 順序圖表示了隨時間安排的一系列消息。每個分類角色顯示為一條生命線,代表整個交互期間上的角色。消息則顯示為生命線之間的箭頭。順序圖可以表達場景,即一項事務(wù)的特定歷史。 順序圖以二維圖表來顯示交互??v向是時間軸,時間自上而下。橫向顯示了代表協(xié)作中單個對象的分類角色。每個對象用方框表示,對象的名字在方框內(nèi)部,并在名字的下方加下劃線。每個分類角色表現(xiàn)為垂直列-生命線。在角色存在的時間內(nèi),生命線顯示為虛線;在角色的過程激活時間內(nèi),生命線顯示為雙線。 消息顯示為從一個角色生命線出發(fā)至另一個角色生命線的箭頭,箭頭用從上而下來的時間順序來安排。 順序圖的一個用途是顯示用例的行為序列。當行為被實現(xiàn)時,每個順序圖中的消息同對象的操作或狀態(tài)機中遷移上的事件觸發(fā)相一致。
圖4 表示處理請求用例的順序圖。圖中五個方框分別表示五個對象:ProcessMonitor、EngineManager、Engine、EntactmentDB、Logfiles。這個用例是由ProcessMonitor 接收用戶操作,再將這些操作轉(zhuǎn)換成固定的請求,發(fā)送給引擎執(zhí)行而產(chǎn)生的。 當ProcessMonitor 接收到用戶在界面上所作的操作后,將這些操作轉(zhuǎn)換為固定的命令請求,發(fā)送給EngineManager。EngineManager 再根據(jù)接收到命令的類別,將命令分發(fā)給不同的Engine。Engine 則具體執(zhí)行相應(yīng)的命令。Engine 執(zhí)行完命令后,通知EntactmentDB 修改相應(yīng)的數(shù)據(jù)。接下來,Engine 再通知Logfiles 將所作的操作記錄下來,以供以后查詢。最后,Engine 直接將結(jié)果返回給ProcessMonitor,由ProcessMonitor將結(jié)果包裝,顯示給用戶。 b.協(xié)作圖 協(xié)作圖對交互中存在意義的對象和鏈建模。對象和鏈僅在提供的上下文中存在意義。分類角色描述了對象,關(guān)聯(lián)角色描述了協(xié)作中的鏈。協(xié)作圖通過圖形的幾何排布顯示交互中的角色。消息顯示為附屬在連接分類角色的關(guān)系直線上的箭頭。消息的順序由消息描述前的順序號來表示。 協(xié)作圖的一個用途是表現(xiàn)操作的實現(xiàn)。協(xié)作顯示了操作的參數(shù)和局部變量,以及更永久性的關(guān)聯(lián)。當行為被實現(xiàn)時,消息的順序與程序的嵌套調(diào)用結(jié)構(gòu)和信號傳遞一致。
圖5表示對應(yīng)于處理請求用例的協(xié)作圖。這個用例是由ProcessMonitor 接收用戶操作,再將這些操作轉(zhuǎn)換成固定的請求,發(fā)送給引擎執(zhí)行而產(chǎn)生的。這個協(xié)作圖表現(xiàn)了處理請求用例所涉及的五個相關(guān)對象之間相互協(xié)作的關(guān)系。 5.3 創(chuàng)建狀態(tài)機視圖
狀態(tài)機視圖通過對一種對象的可能生命歷史進行建模,描述了對象在時間序列上的動態(tài)行為。每個對象被認為是通過檢測事件并對之響應(yīng)來與外界進行通訊的孤立實體。事件表達了對象可以檢測的變動-對象間的調(diào)用或顯示信號、某個值的改變或時間的推移。任何影響對象的事物可以被描述成事件。真實世界發(fā)生的事情被建模成外部世界至系統(tǒng)的信號。 狀態(tài)指就某個特定類而言,對于發(fā)生的事件具有相同性質(zhì)響應(yīng)的一系列對象值。換言之,同一狀態(tài)的所有對象以相同的方式響應(yīng)某個事件,即對于給定的所有對象在接收到同一事件時執(zhí)行相同的動作。而不同狀態(tài)的對象可能對相同事件具有不同的響應(yīng),執(zhí)行不同的動作。 狀態(tài)機包含由事件連接的狀態(tài)。每個狀態(tài)對對象生命期中的一段時間建模,該時間內(nèi)對象滿足一定的條件。當事件發(fā)生時,它可能導致遷移的激發(fā),使對象改變至新狀態(tài)。當遷移激發(fā)時,附屬于遷移的動作可 能被執(zhí)行。狀態(tài)機在UML 中顯示為狀態(tài)圖。 在狀態(tài)機視圖中,狀態(tài)用帶圓角的長方形表示,初始狀態(tài)用實心填充的圓表示,結(jié)束狀態(tài)用實心填充的圓外套一個圓圈表示。
圖6 表示過程實例的狀態(tài)機視圖。從圖中可以看出,一個工作流定義的過程實例,在運行時可能有五種不同的過程,分別為初始狀態(tài)、就緒狀態(tài)、運行狀態(tài)、掛起狀態(tài)與結(jié)束狀態(tài)。 一個過程實例在初始時,均為初始狀態(tài)(initial state)。根據(jù)需要,某個過程實例被創(chuàng)建(create),成為就緒狀態(tài)(Ready)。隨后,用戶可以根據(jù)需要,選擇就緒狀態(tài)的過程實例進行啟動(start),被啟動的過程實例的狀態(tài)就變?yōu)檫\行狀態(tài)(Running)。處于就緒狀態(tài)和運行狀態(tài)的過程實例都可以通過取消操作(abort)轉(zhuǎn)變?yōu)榻Y(jié)束狀態(tài)(end state)。處于運行狀態(tài)的過程實例,通過掛起操作(hold),可以轉(zhuǎn)變?yōu)闀簳r停止的掛起狀態(tài)(Holded),同時處于掛起狀態(tài)的過程實例也可以通過運行操作(run)轉(zhuǎn)變?yōu)檫\行狀態(tài)。掛起狀態(tài)與結(jié)束狀態(tài)的區(qū)別在于掛起狀態(tài)并不釋放所占用的資源,因而是可以恢復的。最后,一個處于運行狀態(tài)的過程實例如果運行完畢,通過完成操作(finish)轉(zhuǎn)變?yōu)榻Y(jié)束狀態(tài)。 狀態(tài)機可以用于描述用戶界面、設(shè)備控制和其它交互式子系統(tǒng)。它們還可用于在生命期中經(jīng)歷了若干特定階段,每個階段擁有特殊的行為的對象。 5.4 創(chuàng)建活動視圖
活動視圖是用于顯示執(zhí)行某個計算過程中的運算活動的狀態(tài)機的一種特殊形式?;顒訝顟B(tài)代表了運算執(zhí)行的狀態(tài):流程的步驟或操作的執(zhí)行?;顒訄D描述了順序和并發(fā)活動分組?;顒右晥D表達為活動圖。 活動圖包含活動狀態(tài)?;顒訝顟B(tài)表現(xiàn)了過程中語句的執(zhí)行或工作流中活動的運行。與一般等待狀態(tài)等待事件不同,活動狀態(tài)等待的是運算的結(jié)束。當活動結(jié)束時,執(zhí)行處理到圖中的下一個活動。前一個活動結(jié)束時,活動圖中的結(jié)束遷移被激發(fā)?;顒訝顟B(tài)通常沒有外部事件的遷移,但它們可以由外圍狀態(tài)的事件而被取消。 在活動圖中,用左右兩段是圓弧的長方形表示活動,用較粗的橫線表示活動的分發(fā),用帶有箭頭的線表示活動處理的先后順序。
圖7 表示用戶的操作活動圖。用戶在使用系統(tǒng)所提供的功能之前,首先應(yīng)當?shù)卿浵到y(tǒng),也就是說,操作的第一步是登錄(login)。登錄之后,用戶可以在三種操作中任選一個執(zhí)行:選擇過程定義(choose process define)、選擇過程實例(choose process instance)以及選擇工作項(choose workitem)。這三個活動的執(zhí)行,沒有先后順序,完全由用戶進行選擇。 當用戶選擇了過程定義后,可以創(chuàng)建一個所選的過程定義的實例,也就是執(zhí)行創(chuàng)建過程定義活動(create process define);當用戶選擇了一個過程實例后,根據(jù)這個過程實例狀態(tài)的不同,可以對這個過程實例進行終止(abort)、啟動(start)、掛起(hold)與運行(run)等操作,這些操作的執(zhí)行是沒有先后順序的;當用戶選擇了一個工作項后,可以執(zhí)行這個工作項,也就是做這個工作項的內(nèi)容(do workitem)。 根據(jù)以上使用用例視圖、交互視圖、狀態(tài)機視圖以及活動視圖對工作流管理系統(tǒng)所應(yīng)具有的功能層次進行的分析,對通用工作流管理系統(tǒng)要達到的目標,應(yīng)當有了一個較為清晰的認識。而這些認識與理解,將為進一步的設(shè)計,奠定良好的基礎(chǔ)。 |
|