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