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

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

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

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


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


1 工作流參考模型
  工作流參考模型由工作流管理聯(lián)盟WFMC(Workflow Management Coalition)提出,是工作流管理系統(tǒng)的一個參考模型,。本文所提到業(yè)務流程管理系統(tǒng)仍以此參考模型作為抽象的依據(jù)框架,。其框架如圖1所示。從圖1中可知,,模型由六個組件組成:
  (1)工作流核心服務,。即工作流引擎,主要功能是讀取工作流定義,,根據(jù)工作流定義驅(qū)動工作流的流轉(zhuǎn),。
  (2)流程定義工具。實現(xiàn)以圖形化拖拽的方式定義工作流的功能,,將現(xiàn)實的各種業(yè)務流程轉(zhuǎn)化為其計算機表現(xiàn)形式,。
  (3)工作流的客戶端應用??梢允荁/S或C/S結(jié)構(gòu),。它向用戶提供一個工作界面,用來啟動,、驅(qū)動業(yè)務流程,。客戶端應用通過接口2與引擎交互,。
  (4)其他外部系統(tǒng),。在工作流運行過程中,工作流引擎還可以與外部各種應用程序交互,,這里可通過定義好的接口3來完成,。
  (5)其他工作流核心服務。指其他工作流引擎服務,。通過接口4實現(xiàn)多個工作流引擎交互與協(xié)作,。
  (6)管理與監(jiān)視工具。用于整個系統(tǒng)的管理與監(jiān)視,。
  此模型為工作流管理系統(tǒng)確立了一個基本,、合理的框架。整個管理系統(tǒng)的核心是工作流引擎,。工作流引擎是流程流動的驅(qū)動源,,它負責解釋工作流的流程定義,創(chuàng)建并初始化流程實例,,控制流程實例的運轉(zhuǎn)走向,,并記錄其狀態(tài)變化等。
2 Microsoft BizTalk Server 2004簡介
  Microsoft BizTalk Server 2004是微軟最新推出的企業(yè)應用集成平臺,,旨在促進企業(yè)內(nèi)部及企業(yè)之間電子商務流程的協(xié)作,。該產(chǎn)品構(gòu)筑在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和各種異構(gòu)系統(tǒng)互連互通。其中工作流應用系統(tǒng)由輔助工具,、系統(tǒng)管理模塊,、任務節(jié)點組件、建模輔助工具等構(gòu)成,。工作流應用系統(tǒng)中的輔助支持工具包含客戶資料管理,、知識幫助(專家資源、案例庫),、便箋,、留言板,、滾動消息等應用模塊;任務節(jié)點組件包含在Visual Studio .NET環(huán)境下開發(fā)的業(yè)務操作組件,、判斷選項組件,、查看視圖組件;建模輔助工具包含UI組件庫,、工作流模型庫,、流程任務規(guī)范定義等模塊。BizTalk工作流建模工具以圖形化拖拽的方式建立流程模型并配置屬性,。工作流引擎采用BizTalk Server2004(簡稱BTS),,是整個系統(tǒng)運轉(zhuǎn)的控制核心。它根據(jù)建模輔助工具的輸出結(jié)果,,調(diào)用任務節(jié)點組件,,利用適配器接口和各種異構(gòu)系統(tǒng)及后臺數(shù)據(jù)庫交互,實現(xiàn)了各流程穩(wěn)定流轉(zhuǎn),、各系統(tǒng)平滑互通的目標,。


3.2 通用任務節(jié)點抽象
  BTS提供了消息定義/消息轉(zhuǎn)換映射、傳輸管道創(chuàng)建,、流程/任務編排,、端口定義、傳輸協(xié)議選擇等一系列開發(fā)工具,。利用BTS做引擎的一般流程開發(fā)方法和步驟為:(1)定義各消息格式(Schema)并創(chuàng)建不同格式消息間的轉(zhuǎn)換映射(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的流程定義)能夠?qū)崿F(xiàn)對每一種類型任務的處理,,則這個Orchestration就是所有不同類型任務的共同抽象模版,,即通用任務節(jié)點抽象。這樣可以拋開BTS復雜的開發(fā)界面,,結(jié)合本業(yè)務流程管理系統(tǒng)的另一功能模塊——建模工具,,快速靈活地搭建各種類型的流程。實際運行時,,BTS只需根據(jù)任務抽象模版實例化" title="實例化">實例化一個任務并反復循環(huán),,直到流程結(jié)束。
  通用任務節(jié)點抽象如圖3所示,。


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


  (1)流程模型表WorkFlow Table

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


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

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