韋瀛寰(廣西軟件評測中心,南寧 530022)
?
工作流引擎在工程項目管理系統(tǒng)中的應(yīng)用與研究
韋瀛寰
(廣西軟件評測中心,南寧 530022)
摘 要:文章對工程項目管理系統(tǒng)的特點及設(shè)計要求進行分析,對工作流引擎應(yīng)用于該類系統(tǒng)的必要性進行簡述。闡述了工作流管理系統(tǒng)結(jié)構(gòu)及工作流引擎組成,著重介紹工作流組件、工作流表、工作流實例表、工作流相關(guān)類等關(guān)鍵要素的設(shè)計,并以一個典型流程模型為例,給出工作流模型定義數(shù)據(jù)庫的一個實現(xiàn)過程。對以工作流引擎為核心的工程項目管理系統(tǒng)功能模塊進行設(shè)計劃分。
關(guān)鍵詞:項目管理系統(tǒng);工作流引擎;應(yīng)用與研究
工程項目管理系統(tǒng)中,項目管理通常為每個項目分為"項目銷售管理、招投標(biāo)管理、合同與技術(shù)管理、施工準(zhǔn)備管理、施工過程管理、竣工驗收管理、竣后服務(wù)管理"這七個業(yè)務(wù)階段[1],每業(yè)務(wù)階段均有可能需要交叉引用之前的數(shù)據(jù),其中各個業(yè)務(wù)階段均涉及眾多的參與人員及角色,并且還需要考慮系統(tǒng)作為開放式平臺,為多個工程公司提供系統(tǒng)功能服務(wù)。在日常的工程項目管理中,各個業(yè)務(wù)階段的大部份環(huán)節(jié)屬于流程類工作,比如開工審批、采購審批等。一般過程是由基層業(yè)務(wù)人員發(fā)起申請,部門主管接受申請,審查后提交上一級領(lǐng)導(dǎo),最終由某級主管審查通過后再返回給基層業(yè)務(wù)人員。
傳統(tǒng)工程項目管理系統(tǒng)是基于事務(wù)管理及MIS的方式設(shè)計,該方式未將應(yīng)用軟件與業(yè)務(wù)流程相分離,只是把業(yè)務(wù)流程混合事務(wù)管理編寫到工程項目管理系統(tǒng)中,由此造成的弊端是當(dāng)組織機構(gòu)或業(yè)務(wù)流程發(fā)生變化時,整個系統(tǒng)可能需要重新設(shè)計,或者需要對系統(tǒng)編碼進行大幅修改,修改難度大、軟件維護周期長。所以若仍使用事務(wù)管理及MIS的設(shè)計方式,已經(jīng)不能支撐當(dāng)前項目管理內(nèi)在的協(xié)作性、高效性、實用性等要求。
為此,必須采用業(yè)務(wù)驅(qū)動及流程管控的模式來提高工程項目管理系統(tǒng)效能,使用工作流技術(shù)可以很好地實現(xiàn)該目的。在基于工作流技術(shù)的工程項目管理系統(tǒng)中,設(shè)計時將流程的生成、流轉(zhuǎn)邏輯、執(zhí)行、監(jiān)控、管理等工作實現(xiàn)代碼從具體業(yè)務(wù)中剝離獨立出來,形成專門的“工作流引擎”,設(shè)計人員在設(shè)計業(yè)務(wù)流程時僅需要關(guān)注業(yè)務(wù)流程本身的業(yè)務(wù)邏輯,完成業(yè)務(wù)邏輯設(shè)計后再調(diào)用工作流引擎實現(xiàn)業(yè)務(wù)具體流轉(zhuǎn)。當(dāng)項目所在公司的組織機構(gòu)、人員角色或業(yè)務(wù)流程發(fā)生變化時,僅需要修改業(yè)務(wù)邏輯后再綁定工作流引擎即可完成業(yè)務(wù)流程的維護,大大降低維護難度及維護周期。
圖1
2.1 引言
工作流管理系統(tǒng)(Workflow Management System, WFMS)是一個軟件系統(tǒng),它完成工作流的定義和管理,并按照在計算機中預(yù)先定義好的工作流邏輯推進工作流實例的執(zhí)行。
通常,工作流管理系統(tǒng)是指運行在一個或多個工作流引擎上用于定義、實現(xiàn)和管理工作流運行的一套軟件系統(tǒng),它與工作流執(zhí)行者(人、應(yīng)用)交互,推進工作流實例的執(zhí)行,并監(jiān)控工作流的運行狀態(tài)。工作注引擎負(fù)責(zé)處理工作流管理系統(tǒng)的邏輯與流程控制。因此,工作流引擎是工作流管理系統(tǒng)的核心部分[2]。
一般而言,工作流引擎有如下三個階段:
(1)建立階段:主要考慮工作流過程和相關(guān)活動的定義和建模功能。
(2)運行階段:在一定的運行環(huán)境下,執(zhí)行工作流過程,并完成每個過程中活動的排序和調(diào)度功能。
(3)人機交互階段:實現(xiàn)各種活動執(zhí)行過程中用戶與應(yīng)用工具之間的交互[3]。
2.2 工作流引擎的體系結(jié)構(gòu)
如圖1所示,工作流引擎系統(tǒng)可分為以下三個部分:
(1)數(shù)據(jù)庫:用于持久化保存用戶數(shù)據(jù),工作流數(shù)據(jù)等。
(2)Web服務(wù)器:分為兩部分,第一部分視圖模塊用于向用戶提供交互的接口,第二部分控制模塊用于向工作流引擎?zhèn)鬟f用戶的動作與數(shù)據(jù)。
(3)工作流引擎:作為整個工作流系統(tǒng)的核心部分,其分為以下幾個部分:
1)數(shù)據(jù)庫接口:負(fù)責(zé)與數(shù)據(jù)庫交互,向數(shù)據(jù)庫中讀寫數(shù)據(jù);
2)用戶管理模塊:負(fù)責(zé)管理用戶的個人信息等數(shù)據(jù),以及處理用戶的登錄及注冊等動作;
3)組管理模塊:負(fù)責(zé)管理用戶組,以及組成員的管理;
4)工作流管理與控制模塊:負(fù)責(zé)管理工作流,及控制其執(zhí)行等操作;
5)組件及業(yè)務(wù)邏輯模塊:工作流由組件構(gòu)成,組件及業(yè)務(wù)邏輯模塊負(fù)責(zé)管理組件及其業(yè)務(wù)邏輯。
2.3 系統(tǒng)的設(shè)計原則
為了保證系統(tǒng)的正確性和高效性,系統(tǒng)遵循以下設(shè)計原則:
(1)用戶必須先創(chuàng)建好工作流并提交后,才能對其組件的屬性進行設(shè)置修改。
(2)每個組件都有一個唯一的編號,此編號由前端生成,在任何地方均一致。
(3)在所有的組件中,只有choose組件能夠回退到工作流已執(zhí)行過的結(jié)點。
3.1 工作流組件
工作流中共有8種重要的組件:開始、結(jié)束、任務(wù)、子模塊、和匯聚、或匯聚、選擇觸發(fā)、并行觸發(fā)。
(1)開始組件(start):表示一個工作流程的開始,在(系統(tǒng)或者人為)激活后,直接引起下一個工作的開始。
(2)結(jié)束組件(end):表示一個工作流程的結(jié)束。通知項目負(fù)責(zé)人或者相關(guān)人員項目已經(jīng)到達了完成狀態(tài)。
(3)任務(wù)組件(task):用于定義工作流的單個工作項。任務(wù)組件對應(yīng)單個輸入和單個輸出。
(4)子模塊組件(submodule):用于定義工作流中的某個子過程,該子過程同樣可以看作是一個完整的工作流。子過程模塊的輸入將作為子過程中工作流的“起始”組件的輸入,子過程的輸出即其中的工作流的“結(jié)束”組件所傳遞的消息。
(5)和匯聚組件(and):和匯聚組件允許多個消息來源的同時輸入,并在處理了多個消息來源后,來決策后續(xù)任務(wù)的執(zhí)行與否?!昂蛥R聚”組件只有在所有輸入的消息完全到達之后才能啟動后續(xù)步驟的執(zhí)行。
(6)或匯聚組件(or):該組件接受多個消息來源的同時輸入。當(dāng)其中有一個消息到達的時候即可啟動后續(xù)任務(wù)。通常情況下,啟動后續(xù)任務(wù)之前,該模塊要主動停止其他沒有匯聚的任務(wù)。
(7)選擇觸發(fā)組件(choose):接受一個消息來源,并產(chǎn)生多個潛在的后繼消息走向。選擇觸發(fā)有多個消息輸出路徑,其通常只能選擇后繼路徑中的一條路徑。
(8)并行觸發(fā)組件(parallel):該組件一旦觸發(fā),則可以同時開啟多個后續(xù)路徑同時執(zhí)行操作。可同時開啟的路徑數(shù)目沒有限制,潛在的限制是系統(tǒng)運行時的承載能力和數(shù)據(jù)庫中相關(guān)字段的定義。
3.2 核心數(shù)據(jù)庫表設(shè)計
表1 工作流表(WorkFlow_Table)
表2 工作流實例表(Entity_Table)
圖2
表3 運行實例表(Entity_Table)
圖3
在工作流引擎中最重要的數(shù)據(jù)表為工作流表(WorkFlow_ Table),見表1及工作流實例表(Entity_Table)見表2,分別設(shè)計如下。
3.3 工作流運行實例樣例
以圖2所示典型流程模型,其工作流模型定義數(shù)據(jù)庫的一個實現(xiàn)樣例如表3:運行實例表Entity_Table(僅列出部份重要字段)
3.4 工作流相關(guān)類的設(shè)計
根據(jù)工程項目管理需求和數(shù)據(jù)庫表的結(jié)構(gòu),在系統(tǒng)中需要創(chuàng)建以下工作流引擎重要類。
3.4.1 組件類
組件類用來描述組件在內(nèi)存中的實例(對象),與數(shù)據(jù)庫中的Entity_Table相對應(yīng),它的每一個實例都對應(yīng)著Entity_Table中的一行。采用繼承的方式對組件類進行設(shè)計,所有組件及其繼承關(guān)系如圖3所示。
工作流中共有8種重要的組件:開始、結(jié)束、任務(wù)、子模塊、和匯聚、或匯聚、選擇觸發(fā)、并行觸發(fā)。其中子模塊組件是一個特殊的組件,是為強化工作流的邏輯視覺效果而添加的功能組件,因此在工作流引擎可不進行設(shè)計。為其它的7種組件設(shè)計了一個共同的基類BaseComponent。
(1)基類BaseComponent其成員變量與成員函數(shù)定義如下:
組件ID:組件的唯一標(biāo)識符。
組件名稱:組件的名稱。
組件描述:對該組件的簡單描述。
觸發(fā)方式:組件開始的觸發(fā)方式(默認(rèn)為自動開始)。
前驅(qū)后繼:記錄組件的前驅(qū)結(jié)點與后繼結(jié)點,用來描述工作流中的“箭頭”。
完成狀態(tài):此組件所對應(yīng)的實例的執(zhí)行狀態(tài),包含以下四種狀態(tài):不滿足開始條件,滿足條件等待開始、正在運行、已完成。
Start():若組件的開始條件已滿足,則調(diào)用此函數(shù)將其狀態(tài)改成正在運行。
Over():若組件已執(zhí)行完成,則調(diào)用此函數(shù)將其狀態(tài)改成已完成,同時觸發(fā)其后繼結(jié)點(若后繼結(jié)點是自動觸發(fā),則調(diào)用其Start函數(shù),若為手動觸發(fā),則將其狀態(tài)修改為滿足條件等待開始)。
(2)終端組件類
終端組件類TermComponent 是BaseComponent類的派生類,它派生了StartComponent 和EndComponent兩個子類。TermComponent類采用自動開始的觸發(fā)方式,沒有任何的成員變量和成員函數(shù)。StartComponent類中有一個開始時間變量,用來記錄此組件(即整個工作流)的開始執(zhí)行時間;EndComponent類中有一個結(jié)束時間變量,用來記錄此組件(即整個工作流)的完成時間。
(3)邏輯組件類
邏輯組件類LogicComponent是BaseComponent類的派生類,它派生了AndComponent、OrComponent和ParrelComponent三個子類。LogicComponent類及其子類的實例表示的是工作流中的邏輯關(guān)系,因此采用自動開始的觸發(fā)方式,沒有任何的成員變量和成員函數(shù)。
(4)操作組件類
操作組件類OperComponent是BaseComponent類的派生類,它派生了ChooseComponent和TaskComponent兩個子類。OperComponent類采用自動/手動開始的觸發(fā)方式。
3.4.2 工作流類
工作流類用來描述工作流在內(nèi)存中的表現(xiàn)形式,與數(shù)據(jù)庫中的WorkFlow_Table相對應(yīng),它的每一個實例都對應(yīng)著WorkFlow_Table中的一行。工作流類的結(jié)構(gòu)圖和成員變量的定義如圖4所示。
圖4
工作流ID:工作流的唯一標(biāo)識
工作流名稱:工作流名稱
創(chuàng)建時間:工作流的創(chuàng)建時間
創(chuàng)建用戶:工作流的創(chuàng)建用戶
描述:工作流的簡單描述
是否開始運行:工作流是否已經(jīng)開始執(zhí)行
組件結(jié)點數(shù)組:工作流里面包含的所有組
件結(jié)點組成的數(shù)組
功能模塊劃分見圖5
(1)前端頁面:前臺創(chuàng)建、修改、顯示工作流頁面利用圖形化交互界面,通過拖拽方式,實現(xiàn)創(chuàng)建工作流和修改與項目相關(guān)的工作流。通過填寫表單和提交表單,執(zhí)行某個工作流。組管理頁面對組進行創(chuàng)建和刪除,并對組內(nèi)的組成員用戶進行添加、刪除管理。
(2)后臺服務(wù):組件及其業(yè)務(wù)邏輯模塊為后臺服務(wù)實現(xiàn)組件操作及其業(yè)務(wù)邏輯。工作流的調(diào)度與控制模塊為后臺服務(wù)實現(xiàn)工作流的調(diào)度與控制功能。工作流及其校驗?zāi)K主要功能是當(dāng)用戶提交一個工作流的時候,后臺服務(wù)對其進行校驗,判斷其正確性。
在工程項目管理系統(tǒng)設(shè)計中通過引入工作流引擎技術(shù),實現(xiàn)項目管理系統(tǒng)的具體業(yè)務(wù)與工作流相分離,系統(tǒng)運行時通過業(yè)務(wù)與工作流程分別獨立設(shè)計,然后通過調(diào)用的方式來啟動工作流,提高了管理效率及可用性。此外,在工程項目管理系統(tǒng)中使用工作流引擎,提高了系統(tǒng)的適應(yīng)性、可維護性,能降低整個工程項目管理系統(tǒng)在生命周期內(nèi)的運行、維護成本。
圖5
參考文獻:
[1]苗蒲,趙霽.針織企業(yè)管理信息系統(tǒng)的設(shè)計及其優(yōu)化研究[J].企業(yè)技術(shù)開發(fā),2008,27(10):12-14.
[2]韓雪菲.工作流驅(qū)動的第三方物流系統(tǒng)設(shè)計與實現(xiàn)[D]. 哈爾濱:哈爾濱工程大學(xué),2012:14.
[3] 趙文,袁崇義,張世琨,王立福.一種模型驅(qū)動的工作流過程定義途徑[J]. 計算機科學(xué),2006,33(12):10-15.
DOI:10.16640/j.cnki.37-1222/t.2016.12.085
作者簡介:韋瀛寰(1971-),男,工程師,研究方向:軟件項目管理、工作流。