李斌
摘要:通過對工作流開放標準及參考接口、協(xié)同工作技術(shù)的研究,設(shè)計出一套基于微軟LINQ技術(shù)的審批工作流引擎。引擎能夠針對人員、項目、業(yè)務(wù)、狀態(tài)等元素的控制實現(xiàn)對審批流程的任務(wù)調(diào)度、流程跟蹤、協(xié)同審批、業(yè)務(wù)靈活擴展等關(guān)鍵環(huán)節(jié)。
關(guān)鍵詞關(guān)鍵詞:WorkFlow;工作流引擎;LINQ;任務(wù)調(diào)度
DOIDOI:10.11907/rjdk.143793
中圖分類號:TP319
文獻標識碼:A文章編號文章編號:16727800(2015)002010702
1工作流定義
工作流技術(shù)(WorkFlow)\[1\]是一種能將工作任務(wù)自動在多個用戶或單位間流轉(zhuǎn)的技術(shù),是一種實現(xiàn)建模和過程管理的核心技術(shù)\[2\],它的出現(xiàn)能夠有效約束和控制業(yè)務(wù)的審批過程,令審批和管理業(yè)務(wù)流程有序執(zhí)行,很好地解決了審批業(yè)務(wù)中存在的審批流程滯后等問題。
工作流是由一系列相關(guān)流程構(gòu)成的集合,流程與流程之間可能相互獨立,也可能存在著依賴關(guān)系\[3\],其可表示為WF::(P,R)。
(1) P={P1,P2,……,Pn}:表示審批流程的集合。
(2) R={R1,R2,……,Rn}, Ri=
(3) WP={W,A, Sstart,Send}:表示工作流的審批過程。其中W 表示審批過程中包含的有序步驟集合,A 表示引起步驟變遷的審批動作( 即工作流審批過程處于某一步驟時,執(zhí)行某一動作,該動作執(zhí)行后,審批過程進入下一個步驟)。Sstart表示該工作流審批過程的起始步驟, Send表示該工作流審批過程的終止步驟。
2工作流引擎架構(gòu)設(shè)計
通過對工作流定義及現(xiàn)實中審批關(guān)鍵業(yè)務(wù)的特點,工作流引擎宜選用成熟的關(guān)系型數(shù)據(jù)庫技術(shù)\[4\]。因此,本文所設(shè)計開發(fā)的工作流引擎選用SQL Server2008作為底層數(shù)據(jù)庫,引擎中的數(shù)據(jù)模型通過關(guān)系數(shù)據(jù)表來建模,通過關(guān)系數(shù)據(jù)庫中所提供的存儲過程、觸發(fā)器等機制,控制工作流中各審批過程的實現(xiàn),審批業(yè)務(wù)中的事務(wù)并發(fā)控制通過關(guān)系數(shù)據(jù)庫所提供的時間戳機制實現(xiàn)。
另外,微軟公司在.NET平臺中推出最新LINQ\[5\]通用數(shù)據(jù)訪問技術(shù),這種技術(shù)使用統(tǒng)一的查詢語法對LINQ所支持的各種不同數(shù)據(jù)源做操作,極大地降低了數(shù)據(jù)訪問技術(shù)的難度。因此,本文開發(fā)的審批工作流引擎采用LINQ TO SQL 這一輕量級的ORM解決方案來搭建。工作流引擎架構(gòu)具體如圖1所示。
圖1基于LINQ TO SQL的工作流引擎架構(gòu)
工作流引擎承擔了流程任務(wù)流轉(zhuǎn)的控制中心角色\[6\],其提供3 類接口。接口1 為審批業(yè)務(wù)系統(tǒng)中不同業(yè)務(wù)與工作流引擎的交互提供服務(wù),系統(tǒng)能根據(jù)不同階段的審批業(yè)務(wù)定義不同的工作流業(yè)務(wù);接口2 為工作流過程管理系統(tǒng)對工作流引擎提供流程控制與調(diào)度工作,并能保證工作流程能正常推進及流程出錯時的回溯;接口3 為工作流過程管理系統(tǒng)對工作流程引擎提供跟蹤服務(wù),跟蹤整個工作流引擎的運行狀態(tài)。
同時,為了增強工作流引擎的服務(wù)能力和靈活性,工作流引擎內(nèi)部提供了數(shù)據(jù)訪問組件、工作流自定義組件、審批日志組件和定時任務(wù)組件。引擎利用LINQ TO SQL生成的DataContext類及數(shù)據(jù)實體類來負責訪問關(guān)系數(shù)據(jù)庫,對工作流引擎運行相關(guān)的單位角色數(shù)據(jù)、流程控制、工作流模型數(shù)據(jù)進行讀寫;通過工作流自定義組件,為靈活配置審批業(yè)務(wù)的各步驟提供支持,通過審批日志組件,記錄工作流運行時的各流程活動日志。利用SQL Server中的定期任務(wù)配合工作流引擎推動工作流流程的順利執(zhí)行。
3工作流引擎數(shù)據(jù)庫設(shè)計
工作流引擎主要依靠工作流模型數(shù)據(jù)、流程控制數(shù)據(jù)、組織角色數(shù)據(jù)來推動審批數(shù)據(jù)流轉(zhuǎn)\[7\]。工作流模型數(shù)據(jù)包括每一類審批程序的步驟以及觸發(fā)步驟變遷的行為動作等信息;流程控制數(shù)據(jù)包括每一次審批相關(guān)的業(yè)務(wù)信息,如審批申報內(nèi)容和各流程審批人審批記錄等;組織角色數(shù)據(jù)涉及企業(yè)或部門的組織結(jié)構(gòu)關(guān)系、用戶、角色及權(quán)限等信息。因此,工作流引擎的模型數(shù)據(jù)、流程控制數(shù)據(jù),以及審批業(yè)務(wù)系統(tǒng)的業(yè)務(wù)數(shù)據(jù)、組織角色數(shù)據(jù)都存儲在關(guān)系數(shù)據(jù)庫中。工作流引擎數(shù)據(jù)庫邏輯結(jié)構(gòu)如圖2所示。
圖2工作流引擎數(shù)據(jù)庫邏輯結(jié)構(gòu)
(1)WorkFlow表。包含工作流名稱及所關(guān)聯(lián)的對象名稱,不局限于某種特定類型的審批業(yè)務(wù),通過關(guān)聯(lián)到的不同審批業(yè)務(wù)對象表,可實現(xiàn)工作流引擎的通用性。
(2)WFOwnerGroup表。表示在不同狀態(tài)下?lián)碛袑徟鷺I(yè)務(wù)不同審批步驟處理權(quán)的用戶組。
(3)WFState表。工作流狀態(tài)表,可根據(jù)不同審批業(yè)務(wù)的性質(zhì)定義不同的審批狀態(tài),如初始化、掛起、活動、正常結(jié)束、異常中止等幾種狀態(tài)。通過WFOwnerGroupID字段與WFOwnerGroup表關(guān)聯(lián),即可實現(xiàn)在具體某種審批狀態(tài)下?lián)碛刑幚頇?quán)的用戶組的關(guān)聯(lián)。
(4)WFTransition表。表示工作流狀態(tài)轉(zhuǎn)換表,通過FromWFStateId及ToWFStateId記錄審批工作中各審批過程的起始步驟和終止步驟,PostTransitionMethodName屬性表示該狀態(tài)轉(zhuǎn)換完成后動態(tài)執(zhí)行的方法名稱為該狀態(tài)后其余步驟的順利執(zhí)行奠定基礎(chǔ)。
(5)WFItemStateHistory表。記錄工作流狀態(tài)轉(zhuǎn)換歷史,根據(jù)不同的轉(zhuǎn)換歷史記錄實現(xiàn)審批業(yè)務(wù)靈活擴展、審批工作流規(guī)則的靈活定制。
4結(jié)語
本文所研究的審批工作流引擎已經(jīng)運用于福建師范大學協(xié)和學院畢業(yè)論文過程管理系統(tǒng),系統(tǒng)能將用戶的工作任務(wù)自動推送到用戶登錄后的首頁,方便了用戶審批工作,提高了用戶工作效率,同時引擎還能能夠?qū)崿F(xiàn)工作流規(guī)則的靈活定制。當某審批申報流程發(fā)生變化時,在不改變系統(tǒng)的情況下,用戶只需修改定制相應(yīng)的流程規(guī)則,而不必修改代碼就可以保證系統(tǒng)正常使用,滿足用戶的需求。另外,在引擎中,相應(yīng)權(quán)限的用戶可以查看某個項目所處工作流中的狀態(tài)和位置,同時可以對項目所處的狀態(tài)進行管理,這將有助于管理用戶快速了解具體某項目的當前狀態(tài),同時有助于找尋某個流程步驟無法正常流轉(zhuǎn)的源頭。
參考文獻參考文獻:
\[1\]WFMC.The workflow reference model(WfMCTC1003)\[S\].Workflow,1995.
\[2\]沈振華,傅耀進.工作流技術(shù)在標準化網(wǎng)絡(luò)作業(yè)平臺中的應(yīng)用\[J\].華東電力,2008,36(4): 509510.
\[3\]李建強,范玉順.基于 Petri 網(wǎng)化簡方法的工作流模型驗證\[J\].信息與控制,2001,30(6):492497.
\[4\]黃鈞,范永全,郭勇.工作流管理系統(tǒng)在建設(shè)項目管理中的應(yīng)用\[J\].微型機與應(yīng)用,2002(9):4951.
\[5\]LINQ to SQL\[EB/OL\].http://msdn.microsoft.com/zhcn/library/bb386976.aspx.2008.
\[6\]唐文忠,林時棟,鄧靖文.基于工作流技術(shù)的構(gòu)件模型研究\[J\].計算機應(yīng)用研究\[J\].2008,25(7):20572059.
責任編輯(責任編輯:孫娟)