《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 基于BizTalk Server的工作流引擎的研究與實現(xiàn)

基于BizTalk Server的工作流引擎的研究與實現(xiàn)

2008-06-24
作者:康建軍1,陳淳鑫1,趙 方2,

  摘 要: 針對業(yè)務(wù)流程管理系統(tǒng)" title="管理系統(tǒng)">管理系統(tǒng)中業(yè)務(wù)流程的快速、靈活實現(xiàn),對工作流" title="工作流">工作流引擎的設(shè)計和實現(xiàn)方法進(jìn)行了研究,提出了一種新的基于BizTalk Server的工作流引擎實現(xiàn)方案。
  關(guān)鍵詞: 業(yè)務(wù)流程管理系統(tǒng) 工作流 工作流引擎 BizTalk Server 2004


  由于信息技術(shù)的發(fā)展和日趨激烈的商業(yè)競爭,人們不再滿足于獨立、零散的辦公自動化和計算機應(yīng)用,而是需要綜合化、集成化的解決方案。因此,作為一種對常規(guī)性業(yè)務(wù)進(jìn)行管理調(diào)度的技術(shù),業(yè)務(wù)流程管理系統(tǒng)的出現(xiàn)是必然的。隨著國家電信體制改革的繼續(xù)深化,電信行業(yè)多元化的競爭格局正在加速形成,各電信運營企業(yè)的發(fā)展環(huán)境面臨著嚴(yán)峻的形勢。雖然目前各電信企業(yè)為了提高服務(wù)質(zhì)量與管理效益,都已經(jīng)建立了一整套的業(yè)務(wù)流程規(guī)范指導(dǎo)各自的業(yè)務(wù)活動,但是許多業(yè)務(wù)流程的實際運行還是采用填寫紙介質(zhì)業(yè)務(wù)表單文件、傳遞紙介質(zhì)文件(例如、傳真)的方式處理。即使有一些零散的IT系統(tǒng),也缺乏一體化、端到端全過程的IT技術(shù)支持,無法從根本上改變傳統(tǒng)手工作業(yè)的低效率,缺乏有效過程控制管理,與企業(yè)IT信息化的要求并不相符。這種狀況也影響了業(yè)務(wù)流程規(guī)范化的全面推進(jìn)和實施。要獲得業(yè)務(wù)流程規(guī)范化的全面、真正實施和提高服務(wù)質(zhì)量與運行效率,必須引進(jìn)業(yè)務(wù)流程管理系統(tǒng),實現(xiàn)業(yè)務(wù)流程電子化、信息化,將業(yè)務(wù)流程中的信息流轉(zhuǎn)與控制管理從手工填寫紙介質(zhì)表單、傳遞紙介質(zhì)文件的手工作業(yè)方式中解放出來,從而實現(xiàn)企業(yè)經(jīng)營模式從“以網(wǎng)絡(luò)為中心”向“以客戶為中心”的轉(zhuǎn)變,達(dá)到增強企業(yè)自身生命力和提高企業(yè)競爭力的目的。


1 工作流參考模型
  工作流參考模型由工作流管理聯(lián)盟WFMC(Workflow Management Coalition)提出,是工作流管理系統(tǒng)的一個參考模型。本文所提到業(yè)務(wù)流程管理系統(tǒng)仍以此參考模型作為抽象的依據(jù)框架。其框架如圖1所示。從圖1中可知,模型由六個組件組成:
  (1)工作流核心服務(wù)。即工作流引擎,主要功能是讀取工作流定義,根據(jù)工作流定義驅(qū)動工作流的流轉(zhuǎn)。
  (2)流程定義工具。實現(xiàn)以圖形化拖拽的方式定義工作流的功能,將現(xiàn)實的各種業(yè)務(wù)流程轉(zhuǎn)化為其計算機表現(xiàn)形式。
  (3)工作流的客戶端應(yīng)用??梢允荁/S或C/S結(jié)構(gòu)。它向用戶提供一個工作界面,用來啟動、驅(qū)動業(yè)務(wù)流程??蛻舳藨?yīng)用通過接口2與引擎交互。
  (4)其他外部系統(tǒng)。在工作流運行過程中,工作流引擎還可以與外部各種應(yīng)用程序交互,這里可通過定義好的接口3來完成。
  (5)其他工作流核心服務(wù)。指其他工作流引擎服務(wù)。通過接口4實現(xiàn)多個工作流引擎交互與協(xié)作。
  (6)管理與監(jiān)視工具。用于整個系統(tǒng)的管理與監(jiān)視。
  此模型為工作流管理系統(tǒng)確立了一個基本、合理的框架。整個管理系統(tǒng)的核心是工作流引擎。工作流引擎是流程流動的驅(qū)動源,它負(fù)責(zé)解釋工作流的流程定義,創(chuàng)建并初始化流程實例,控制流程實例的運轉(zhuǎn)走向,并記錄其狀態(tài)變化等。
2 Microsoft BizTalk Server 2004簡介
  Microsoft BizTalk Server 2004是微軟最新推出的企業(yè)應(yīng)用集成平臺,旨在促進(jìn)企業(yè)內(nèi)部及企業(yè)之間電子商務(wù)流程的協(xié)作。該產(chǎn)品構(gòu)筑在MS.NET Framework之上,并且與VS .NET 2003和Office System緊密集成,能夠為用戶提供增強的商務(wù)流程整合能力、新的商務(wù)行為監(jiān)控特性以及高度伸縮的新式規(guī)則引擎,使開發(fā)者、專業(yè)IT工作者和商業(yè)分析家能夠非常輕松地在Internet上建立一個跨平臺、跨應(yīng)用、跨企業(yè)的動態(tài)業(yè)務(wù)過程。
3 工作流引擎方案實現(xiàn)
3.1 業(yè)務(wù)流程管理系統(tǒng)

  參照上述工作流參考模型,在為國內(nèi)某電信運營商開發(fā)的業(yè)務(wù)流程管理系統(tǒng)中,采用了如圖2所示的整體框架。此框架上層是以MS SharePoint Portal門戶系統(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é)點組件、建模輔助工具等構(gòu)成。工作流應(yīng)用系統(tǒng)中的輔助支持工具包含客戶資料管理、知識幫助(專家資源、案例庫)、便箋、留言板、滾動消息等應(yīng)用模塊;任務(wù)節(jié)點組件包含在Visual Studio .NET環(huán)境下開發(fā)的業(yè)務(wù)操作組件、判斷選項組件、查看視圖組件;建模輔助工具包含UI組件庫、工作流模型庫、流程任務(wù)規(guī)范定義等模塊。BizTalk工作流建模工具以圖形化拖拽的方式建立流程模型并配置屬性。工作流引擎采用BizTalk Server2004(簡稱BTS),是整個系統(tǒng)運轉(zhuǎn)的控制核心。它根據(jù)建模輔助工具的輸出結(jié)果,調(diào)用任務(wù)節(jié)點組件,利用適配器接口和各種異構(gòu)系統(tǒng)及后臺數(shù)據(jù)庫交互,實現(xiàn)了各流程穩(wěn)定流轉(zhuǎn)、各系統(tǒng)平滑互通的目標(biāo)。


3.2 通用任務(wù)節(jié)點抽象
  BTS提供了消息定義/消息轉(zhuǎn)換映射、傳輸管道創(chuàng)建、流程/任務(wù)編排、端口定義、傳輸協(xié)議選擇等一系列開發(fā)工具。利用BTS做引擎的一般流程開發(fā)方法和步驟為:(1)定義各消息格式(Schema)并創(chuàng)建不同格式消息間的轉(zhuǎn)換映射(Map);(2)編配流程圖,即定義各流程的任務(wù)節(jié)點(Orchestration)并配置收發(fā)端口和傳輸協(xié)議(Prot Configure);(3)編譯(Build)并部署流程(Deploy),成功后就得到可以運行的流程。BTS具有較強的功能,但同時開發(fā)難度和繁瑣度也很高。在流程數(shù)目較少、任務(wù)節(jié)點簡單的情況下可以采用上述開發(fā)方法。但是,在實際開發(fā)業(yè)務(wù)流程管理系統(tǒng)時,不僅流程的數(shù)目繁多,而且各流程在任務(wù)數(shù)目、任務(wù)類型上差別很大。如果按照上述開發(fā)方法,即針對每個流程開發(fā)一個流程圖并進(jìn)行配置,無疑會極大地增加開發(fā)人員的工作量,耗費大量人力、物力,而且在運行維護(hù)階段要面對的任務(wù)也是異常艱巨的,遠(yuǎn)遠(yuǎn)達(dá)不到系統(tǒng)開發(fā)的進(jìn)度要求和后期維護(hù)難度要求。鑒于以上原因,經(jīng)過研究改進(jìn),綜合考慮各類型流程和任務(wù)的共同特性,最后在任務(wù)級別上得到統(tǒng)一的抽象:即雖然流程在業(yè)務(wù)邏輯、任務(wù)數(shù)目上有很大差別,但畢竟都是不同類型任務(wù)的某種組合(例如任務(wù)類型有判斷節(jié)點、操作節(jié)點、選擇節(jié)點、子流程節(jié)點、查看節(jié)點)。如果在一個Orchestration(編排,BizTalk的流程定義)能夠?qū)崿F(xiàn)對每一種類型任務(wù)的處理,則這個Orchestration就是所有不同類型任務(wù)的共同抽象模版,即通用任務(wù)節(jié)點抽象。這樣可以拋開BTS復(fù)雜的開發(fā)界面,結(jié)合本業(yè)務(wù)流程管理系統(tǒng)的另一功能模塊——建模工具,快速靈活地搭建各種類型的流程。實際運行時,BTS只需根據(jù)任務(wù)抽象模版實例化" title="實例化">實例化一個任務(wù)并反復(fù)循環(huán),直到流程結(jié)束。
  通用任務(wù)節(jié)點抽象如圖3所示。


3.3 數(shù)據(jù)模型
  本業(yè)務(wù)流程管理系統(tǒng)采用SQL Server 2000作為數(shù)據(jù)庫系統(tǒng),用來存儲系統(tǒng)所用到的各種數(shù)據(jù)表。本系統(tǒng)數(shù)據(jù)模型包括機構(gòu)數(shù)據(jù)模型和業(yè)務(wù)數(shù)據(jù)模型兩部分。機構(gòu)數(shù)據(jù)模型描述企業(yè)或者部門的組織機構(gòu)關(guān)系,業(yè)務(wù)數(shù)據(jù)模型則定義工作流引擎中所用到的各種控制數(shù)據(jù)和流程實例數(shù)據(jù)。通過數(shù)據(jù)模型,可以方便地描述關(guān)鍵業(yè)務(wù)的業(yè)務(wù)規(guī)則、任務(wù)的依賴關(guān)系以及任務(wù)的部門/角色指派等特征。本文只討論與工作流引擎關(guān)系緊密的業(yè)務(wù)數(shù)據(jù)模型。圖4給出了業(yè)務(wù)數(shù)據(jù)模型之信息模型的ER圖(只給出核心表結(jié)構(gòu))。


  (1)流程模型表WorkFlow Table

  此表主要記錄各種類型流程的定義,表格中的數(shù)據(jù)由建模工具在流程定義階段生成。其中:
  Guid字段是主鍵,表示流程編號;
  TypeId字段表示流程類型編號;
  Name字段表示流程名稱;
  TimeLimit字段表示流程結(jié)束時限;
  TimeConfig字段表示此流程參照的時間配置,它同時是時間配置表的主鍵;
  Operator字段表示流程的授權(quán)發(fā)起人(或角色)。
  (2)任務(wù)模型表 WorkTask Table
  此表主要記錄各種類型任務(wù)的定義,其數(shù)據(jù)也是在流程定義階段由建模工具生成,包括任務(wù)編號、任務(wù)名稱以及綁定頁面地址URL等。
  (3)任務(wù)聯(lián)結(jié)表WorkLink Table
  此表主要記錄任務(wù)間的連線數(shù)據(jù)屬性,包括頭、尾節(jié)點標(biāo)識及條件。
  (4)流程實例表WorktFlowInstance
  此表主要記錄正在運行和已經(jīng)結(jié)束的流程實例的相關(guān)信息,其每條記錄由工作流引擎從流程模型表實例化得到。相關(guān)字段記錄了對應(yīng)流程實例所屬流程模型類型、流程名稱、當(dāng)前活動節(jié)點位置、開始時間、運行狀態(tài)(運行、掛起或正常結(jié)束)、流程實例發(fā)起人以及是否超時等狀態(tài)信息。
  (5)任務(wù)實例表 WorkTaskInstance Table
  記錄正在運行和已經(jīng)結(jié)束的任務(wù)實例的信息。它的數(shù)據(jù)由工作流引擎從任務(wù)模型表實例化得到。
  (6)時間配置表 TimeConfig Table
  記錄企業(yè)的工作時間制度,即上下班時間、午休時間以及告警/預(yù)警占全部時限的百分比。根據(jù)此表,工作流引擎由流程和任務(wù)的相對時長換算成絕對時長。
3.4 引擎核心控制算法
  在抽象任務(wù)節(jié)點中調(diào)用代碼,以動態(tài)、實時地獲取下一步任務(wù)。當(dāng)前任務(wù)提交后,通過對流程模型、任務(wù)模型表的操作實例化下一步任務(wù)。實例化任務(wù)的算法如圖5所示。


3.5 工作流引擎運轉(zhuǎn)過程
  流程發(fā)起人在客戶應(yīng)用端啟動一個流程,則系統(tǒng)自動向引擎接收端口發(fā)送一個消息。引擎在收到此消息后被激活,經(jīng)過如下步驟完成運轉(zhuǎn)過程:
  (1)引擎根據(jù)當(dāng)前提交的消息,初始化提交任務(wù)實例,即向相關(guān)崗位角色分配第一個(如果不是在流程剛啟動時,就是“下一條”)任務(wù)。
  (2)引擎調(diào)用超時處理模塊" title="處理模塊">處理模塊,開始對剛分配的任務(wù)計時。此時引擎處于等待狀態(tài),等待任務(wù)責(zé)任人完成任務(wù)后提交消息。如果任務(wù)沒有在規(guī)定的時間內(nèi)完成,任務(wù)將被標(biāo)志為超時。超時處理模塊此時將通過頁面醒目顯示、即時消息等方式通知任務(wù)責(zé)任人或根據(jù)需要通知上級責(zé)任人。特定類型任務(wù)(如審批等)超時后自動流轉(zhuǎn)到下一任務(wù),其他情況下引擎再次進(jìn)入等待狀態(tài),直到任務(wù)完成。
  (3)任務(wù)責(zé)任人完成任務(wù)后,系統(tǒng)自動發(fā)送一個提交消息給引擎。引擎收到此消息后超時模塊結(jié)束。引擎根據(jù)接收消息判斷流程操作人員(即此時的任務(wù)責(zé)任人)是否要結(jié)束流程。因為流程在某些任務(wù)節(jié)點可以被無條件人工結(jié)束。
  (4)如果流程被人工結(jié)束,則轉(zhuǎn)到(8)。
  (5)如果不是異常結(jié)束,則調(diào)用“任務(wù)指派”代碼功能模塊,得到下一步需要指派的任務(wù)列表。
  (6)判斷任務(wù)列表中任務(wù)數(shù)量是否為零。如果為零則說明所有的任務(wù)已經(jīng)完成,直接轉(zhuǎn)到(8)。
  (7)否則,對該任務(wù)列表中的首個任務(wù)調(diào)用指派任務(wù)處理模塊進(jìn)行任務(wù)的實例化。實例化完畢后轉(zhuǎn)到(6)。
  (8)引擎初始化返回消息,該流程執(zhí)行完畢。
  基于此工作流引擎方案的業(yè)務(wù)流程管理系統(tǒng)很好地滿足了客戶的需求,并已在某省公司成功上線運行及在其他地市級公司全面推廣。此方案的優(yōu)點為:
  (1)簡單快速。各任務(wù)節(jié)點被抽象后,開發(fā)階段就不用過多考慮任務(wù)類型的細(xì)節(jié)問題,這樣整個開發(fā)過程被大大縮短,從得到需求到流程上線運行只需一兩天時間。
  (2)靈活穩(wěn)定。強大的代碼支持功能可以靈活地根據(jù)需求很快地對流程做出相應(yīng)調(diào)整,并且不影響系統(tǒng)的正常運行,使系統(tǒng)的穩(wěn)定性得到有效保證。
參考文獻(xiàn)
1 蒲 春,陳淳鑫.工作流系統(tǒng)中系統(tǒng)管理模塊的設(shè)計與實現(xiàn)[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評估指南[R].http://www.eu.microsoft.com/china/biztalk/community/Product/a3.asp

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。