摘 要: 針對業(yè)務流程管理系統(tǒng)" title="管理系統(tǒng)">管理系統(tǒng)中業(yè)務流程的快速、靈活實現(xiàn),對工作流" title="工作流">工作流引擎的設計和實現(xiàn)方法進行了研究,提出了一種新的基于BizTalk Server的工作流引擎實現(xiàn)方案。
關鍵詞: 業(yè)務流程管理系統(tǒng) 工作流 工作流引擎 BizTalk Server 2004
由于信息技術的發(fā)展和日趨激烈的商業(yè)競爭,人們不再滿足于獨立、零散的辦公自動化和計算機應用,而是需要綜合化、集成化的解決方案。因此,作為一種對常規(guī)性業(yè)務進行管理調度的技術,業(yè)務流程管理系統(tǒng)的出現(xiàn)是必然的。隨著國家電信體制改革的繼續(xù)深化,電信行業(yè)多元化的競爭格局正在加速形成,各電信運營企業(yè)的發(fā)展環(huán)境面臨著嚴峻的形勢。雖然目前各電信企業(yè)為了提高服務質量與管理效益,都已經(jīng)建立了一整套的業(yè)務流程規(guī)范指導各自的業(yè)務活動,但是許多業(yè)務流程的實際運行還是采用填寫紙介質業(yè)務表單文件、傳遞紙介質文件(例如、傳真)的方式處理。即使有一些零散的IT系統(tǒng),也缺乏一體化、端到端全過程的IT技術支持,無法從根本上改變傳統(tǒng)手工作業(yè)的低效率,缺乏有效過程控制管理,與企業(yè)IT信息化的要求并不相符。這種狀況也影響了業(yè)務流程規(guī)范化的全面推進和實施。要獲得業(yè)務流程規(guī)范化的全面、真正實施和提高服務質量與運行效率,必須引進業(yè)務流程管理系統(tǒng),實現(xiàn)業(yè)務流程電子化、信息化,將業(yè)務流程中的信息流轉與控制管理從手工填寫紙介質表單、傳遞紙介質文件的手工作業(yè)方式中解放出來,從而實現(xiàn)企業(yè)經(jīng)營模式從“以網(wǎng)絡為中心”向“以客戶為中心”的轉變,達到增強企業(yè)自身生命力和提高企業(yè)競爭力的目的。
1 工作流參考模型
工作流參考模型由工作流管理聯(lián)盟WFMC(Workflow Management Coalition)提出,是工作流管理系統(tǒng)的一個參考模型。本文所提到業(yè)務流程管理系統(tǒng)仍以此參考模型作為抽象的依據(jù)框架。其框架如圖1所示。從圖1中可知,模型由六個組件組成:
(1)工作流核心服務。即工作流引擎,主要功能是讀取工作流定義,根據(jù)工作流定義驅動工作流的流轉。
(2)流程定義工具。實現(xiàn)以圖形化拖拽的方式定義工作流的功能,將現(xiàn)實的各種業(yè)務流程轉化為其計算機表現(xiàn)形式。
(3)工作流的客戶端應用??梢允荁/S或C/S結構。它向用戶提供一個工作界面,用來啟動、驅動業(yè)務流程??蛻舳藨猛ㄟ^接口2與引擎交互。
(4)其他外部系統(tǒng)。在工作流運行過程中,工作流引擎還可以與外部各種應用程序交互,這里可通過定義好的接口3來完成。
(5)其他工作流核心服務。指其他工作流引擎服務。通過接口4實現(xiàn)多個工作流引擎交互與協(xié)作。
(6)管理與監(jiān)視工具。用于整個系統(tǒng)的管理與監(jiān)視。
此模型為工作流管理系統(tǒng)確立了一個基本、合理的框架。整個管理系統(tǒng)的核心是工作流引擎。工作流引擎是流程流動的驅動源,它負責解釋工作流的流程定義,創(chuàng)建并初始化流程實例,控制流程實例的運轉走向,并記錄其狀態(tài)變化等。
2 Microsoft BizTalk Server 2004簡介
Microsoft BizTalk Server 2004是微軟最新推出的企業(yè)應用集成平臺,旨在促進企業(yè)內(nèi)部及企業(yè)之間電子商務流程的協(xié)作。該產(chǎn)品構筑在MS.NET Framework之上,并且與VS .NET 2003和Office System緊密集成,能夠為用戶提供增強的商務流程整合能力、新的商務行為監(jiān)控特性以及高度伸縮的新式規(guī)則引擎,使開發(fā)者、專業(yè)IT工作者和商業(yè)分析家能夠非常輕松地在Internet上建立一個跨平臺、跨應用、跨企業(yè)的動態(tài)業(yè)務過程。
3 工作流引擎方案實現(xiàn)
3.1 業(yè)務流程管理系統(tǒng)
參照上述工作流參考模型,在為國內(nèi)某電信運營商開發(fā)的業(yè)務流程管理系統(tǒng)中,采用了如圖2所示的整體框架。此框架上層是以MS SharePoint Portal門戶系統(tǒng)為依托、即插即用的UI組件,中間是工作流應用系統(tǒng)" title="應用系統(tǒng)">應用系統(tǒng),底層是BizTalk EAI Adapter總線系統(tǒng)。底端利用BizTalk Server自身的各種Adapter和各種異構系統(tǒng)互連互通。其中工作流應用系統(tǒng)由輔助工具、系統(tǒng)管理模塊、任務節(jié)點組件、建模輔助工具等構成。工作流應用系統(tǒng)中的輔助支持工具包含客戶資料管理、知識幫助(專家資源、案例庫)、便箋、留言板、滾動消息等應用模塊;任務節(jié)點組件包含在Visual Studio .NET環(huán)境下開發(fā)的業(yè)務操作組件、判斷選項組件、查看視圖組件;建模輔助工具包含UI組件庫、工作流模型庫、流程任務規(guī)范定義等模塊。BizTalk工作流建模工具以圖形化拖拽的方式建立流程模型并配置屬性。工作流引擎采用BizTalk Server2004(簡稱BTS),是整個系統(tǒng)運轉的控制核心。它根據(jù)建模輔助工具的輸出結果,調用任務節(jié)點組件,利用適配器接口和各種異構系統(tǒng)及后臺數(shù)據(jù)庫交互,實現(xiàn)了各流程穩(wěn)定流轉、各系統(tǒng)平滑互通的目標。
3.2 通用任務節(jié)點抽象
BTS提供了消息定義/消息轉換映射、傳輸管道創(chuàng)建、流程/任務編排、端口定義、傳輸協(xié)議選擇等一系列開發(fā)工具。利用BTS做引擎的一般流程開發(fā)方法和步驟為:(1)定義各消息格式(Schema)并創(chuàng)建不同格式消息間的轉換映射(Map);(2)編配流程圖,即定義各流程的任務節(jié)點(Orchestration)并配置收發(fā)端口和傳輸協(xié)議(Prot Configure);(3)編譯(Build)并部署流程(Deploy),成功后就得到可以運行的流程。BTS具有較強的功能,但同時開發(fā)難度和繁瑣度也很高。在流程數(shù)目較少、任務節(jié)點簡單的情況下可以采用上述開發(fā)方法。但是,在實際開發(fā)業(yè)務流程管理系統(tǒng)時,不僅流程的數(shù)目繁多,而且各流程在任務數(shù)目、任務類型上差別很大。如果按照上述開發(fā)方法,即針對每個流程開發(fā)一個流程圖并進行配置,無疑會極大地增加開發(fā)人員的工作量,耗費大量人力、物力,而且在運行維護階段要面對的任務也是異常艱巨的,遠遠達不到系統(tǒng)開發(fā)的進度要求和后期維護難度要求。鑒于以上原因,經(jīng)過研究改進,綜合考慮各類型流程和任務的共同特性,最后在任務級別上得到統(tǒng)一的抽象:即雖然流程在業(yè)務邏輯、任務數(shù)目上有很大差別,但畢竟都是不同類型任務的某種組合(例如任務類型有判斷節(jié)點、操作節(jié)點、選擇節(jié)點、子流程節(jié)點、查看節(jié)點)。如果在一個Orchestration(編排,BizTalk的流程定義)能夠實現(xiàn)對每一種類型任務的處理,則這個Orchestration就是所有不同類型任務的共同抽象模版,即通用任務節(jié)點抽象。這樣可以拋開BTS復雜的開發(fā)界面,結合本業(yè)務流程管理系統(tǒng)的另一功能模塊——建模工具,快速靈活地搭建各種類型的流程。實際運行時,BTS只需根據(jù)任務抽象模版實例化" title="實例化">實例化一個任務并反復循環(huán),直到流程結束。
通用任務節(jié)點抽象如圖3所示。
3.3 數(shù)據(jù)模型
本業(yè)務流程管理系統(tǒng)采用SQL Server 2000作為數(shù)據(jù)庫系統(tǒng),用來存儲系統(tǒng)所用到的各種數(shù)據(jù)表。本系統(tǒng)數(shù)據(jù)模型包括機構數(shù)據(jù)模型和業(yè)務數(shù)據(jù)模型兩部分。機構數(shù)據(jù)模型描述企業(yè)或者部門的組織機構關系,業(yè)務數(shù)據(jù)模型則定義工作流引擎中所用到的各種控制數(shù)據(jù)和流程實例數(shù)據(jù)。通過數(shù)據(jù)模型,可以方便地描述關鍵業(yè)務的業(yè)務規(guī)則、任務的依賴關系以及任務的部門/角色指派等特征。本文只討論與工作流引擎關系緊密的業(yè)務數(shù)據(jù)模型。圖4給出了業(yè)務數(shù)據(jù)模型之信息模型的ER圖(只給出核心表結構)。
(1)流程模型表WorkFlow Table
此表主要記錄各種類型流程的定義,表格中的數(shù)據(jù)由建模工具在流程定義階段生成。其中:
Guid字段是主鍵,表示流程編號;
TypeId字段表示流程類型編號;
Name字段表示流程名稱;
TimeLimit字段表示流程結束時限;
TimeConfig字段表示此流程參照的時間配置,它同時是時間配置表的主鍵;
Operator字段表示流程的授權發(fā)起人(或角色)。
(2)任務模型表 WorkTask Table
此表主要記錄各種類型任務的定義,其數(shù)據(jù)也是在流程定義階段由建模工具生成,包括任務編號、任務名稱以及綁定頁面地址URL等。
(3)任務聯(lián)結表WorkLink Table
此表主要記錄任務間的連線數(shù)據(jù)屬性,包括頭、尾節(jié)點標識及條件。
(4)流程實例表WorktFlowInstance
此表主要記錄正在運行和已經(jīng)結束的流程實例的相關信息,其每條記錄由工作流引擎從流程模型表實例化得到。相關字段記錄了對應流程實例所屬流程模型類型、流程名稱、當前活動節(jié)點位置、開始時間、運行狀態(tài)(運行、掛起或正常結束)、流程實例發(fā)起人以及是否超時等狀態(tài)信息。
(5)任務實例表 WorkTaskInstance Table
記錄正在運行和已經(jīng)結束的任務實例的信息。它的數(shù)據(jù)由工作流引擎從任務模型表實例化得到。
(6)時間配置表 TimeConfig Table
記錄企業(yè)的工作時間制度,即上下班時間、午休時間以及告警/預警占全部時限的百分比。根據(jù)此表,工作流引擎由流程和任務的相對時長換算成絕對時長。
3.4 引擎核心控制算法
在抽象任務節(jié)點中調用代碼,以動態(tài)、實時地獲取下一步任務。當前任務提交后,通過對流程模型、任務模型表的操作實例化下一步任務。實例化任務的算法如圖5所示。
3.5 工作流引擎運轉過程
流程發(fā)起人在客戶應用端啟動一個流程,則系統(tǒng)自動向引擎接收端口發(fā)送一個消息。引擎在收到此消息后被激活,經(jīng)過如下步驟完成運轉過程:
(1)引擎根據(jù)當前提交的消息,初始化提交任務實例,即向相關崗位角色分配第一個(如果不是在流程剛啟動時,就是“下一條”)任務。
(2)引擎調用超時處理模塊" title="處理模塊">處理模塊,開始對剛分配的任務計時。此時引擎處于等待狀態(tài),等待任務責任人完成任務后提交消息。如果任務沒有在規(guī)定的時間內(nèi)完成,任務將被標志為超時。超時處理模塊此時將通過頁面醒目顯示、即時消息等方式通知任務責任人或根據(jù)需要通知上級責任人。特定類型任務(如審批等)超時后自動流轉到下一任務,其他情況下引擎再次進入等待狀態(tài),直到任務完成。
(3)任務責任人完成任務后,系統(tǒng)自動發(fā)送一個提交消息給引擎。引擎收到此消息后超時模塊結束。引擎根據(jù)接收消息判斷流程操作人員(即此時的任務責任人)是否要結束流程。因為流程在某些任務節(jié)點可以被無條件人工結束。
(4)如果流程被人工結束,則轉到(8)。
(5)如果不是異常結束,則調用“任務指派”代碼功能模塊,得到下一步需要指派的任務列表。
(6)判斷任務列表中任務數(shù)量是否為零。如果為零則說明所有的任務已經(jīng)完成,直接轉到(8)。
(7)否則,對該任務列表中的首個任務調用指派任務處理模塊進行任務的實例化。實例化完畢后轉到(6)。
(8)引擎初始化返回消息,該流程執(zhí)行完畢。
基于此工作流引擎方案的業(yè)務流程管理系統(tǒng)很好地滿足了客戶的需求,并已在某省公司成功上線運行及在其他地市級公司全面推廣。此方案的優(yōu)點為:
(1)簡單快速。各任務節(jié)點被抽象后,開發(fā)階段就不用過多考慮任務類型的細節(jié)問題,這樣整個開發(fā)過程被大大縮短,從得到需求到流程上線運行只需一兩天時間。
(2)靈活穩(wěn)定。強大的代碼支持功能可以靈活地根據(jù)需求很快地對流程做出相應調整,并且不影響系統(tǒng)的正常運行,使系統(tǒng)的穩(wěn)定性得到有效保證。
參考文獻
1 蒲 春,陳淳鑫.工作流系統(tǒng)中系統(tǒng)管理模塊的設計與實現(xiàn)[J].微型機與應用,2004;23(4)
2 范玉順.工作流管理技術基礎[M].北京:清華大學出版社,2001
3 WFMC.FMC-TC-1025 1.0 Workflow Management Microsoft.Coalition Draft[R].2002
4 Microsoft.Microsoft BizTalk Server 2004評估指南[R].http://www.eu.microsoft.com/china/biztalk/community/Product/a3.asp