摘 要: 介紹工作流管理系統(tǒng)中自動執(zhí)行分布式引擎的實現及總體流程。
關鍵詞: WFMS 分布式引擎 自動執(zhí)行 XML 解析器
隨著網絡技術和市場經濟的發(fā)展,信息管理變得越來越重要。尤其是在企業(yè)管理中,由于資源的擴充,員工的增加,情況的變動,使企業(yè)時刻處于變化中,所以就需要有一種管理系統(tǒng)使得企業(yè)具有自適應和重配置的能力,于是工作流技術應運而生。工作流就是業(yè)務流程的計算機化或自動化,必須有一種對工作流進行管理和控制的工具,即工作流管理系統(tǒng)。工作流管理系統(tǒng)是一種能夠完整地定義、管理和執(zhí)行工作流的系統(tǒng),這些功能通過一組軟件的執(zhí)行來實現,而這組軟件的執(zhí)行順序由一種計算機化的工作流邏輯表示來完成。工作流是一項快速發(fā)展的技術,各種行業(yè)都在逐漸地采用工作流技術。其主要特點是過程的自動化處理,特別是對那些與IT應用程序和工具交互相關的過程進行自動處理。工作流技術正廣泛用于保險、銀行、法院和行政管理等環(huán)境。
1 FlowStep介紹
FlowStep是一個基于Web的分布式工作流管理系統(tǒng)。主要由工作流控制臺、XML文件解析器和工作流引擎三個部分組成。這三個組成部分部署于一個共同的分布式環(huán)境中。
工作流控制臺是FlowStep系統(tǒng)提供給各類用戶的基于Web瀏覽器的管理界面。工作流控制臺具備在任務表中顯示、處理和刪除任務項的功能。任務表中的各條記錄對應著每一次實例化后某一手工型活動的實例,即任務。
不管是使用建模工具,還是直接進行工作流程定義,都要生成XML文件,其中的每個任務都成為一個活動,被分解為步幅XML文件。最主要的作用是對當前要執(zhí)行的任務的XML文件進行解析,從中取得這次任務的參數信息,根據這些信息,由引擎來執(zhí)行當前任務。XML文件解析器所負責的工作應該是屬于工作流執(zhí)行服務的一個組成部分。
工作流引擎是FlowStep系統(tǒng)的核心部分,直接對應著參考模型體系結構中的工作流執(zhí)行服務部分,它的部分功能分給了XML文件解析器去完成。工作流引擎是過程定義的解釋器,它是工作流執(zhí)行服務的核心。其主要功能包括:解釋過程定義;創(chuàng)建過程實例并控制其執(zhí)行;調度各項活動,控制過程實例間的轉換,包括串行或并行的操作、工作流相關數據的解釋等;為用戶工作表添加工作項等。
2 現有工作流管理系統(tǒng)的缺陷
目前市場上很多工作流管理系統(tǒng)并沒有實現真正的分布式引擎。集中式引擎已經過時,不能滿足現代企業(yè)的要求,還有一些略帶分布式性質的工作流管理系統(tǒng),如:工作流引擎惟一存在于一臺主機,流程處理器收到任務信息,根據任務類型,將任務分發(fā)給相應的處理引擎線程,這些引擎都存在于一臺主機上,增加了服務器的負擔。由于各個線程都在運行,隨時準備接收任務,也使得系統(tǒng)變得更加復雜。
對于一個大型企業(yè)(或者是跨國公司),其銷售部、研發(fā)部、客戶支持部可能分布在不同的城市(甚至是不同的國家)。若有一個業(yè)務流程需要這三個部門協(xié)作完成,三個部門的相關資源都在自己的部門,則集中式的工作流引擎便不能完成這項工作, 因此工作流必然向分布式發(fā)展。
3 分布式引擎的概念和不足
分布式引擎使用一組分布在不同節(jié)點上的工作流引擎共同協(xié)作來完成整個工作流實例的執(zhí)行。每個工作流引擎完成其中一部分實例的執(zhí)行,不同工作流引擎之間通過可靠的通信機制實現協(xié)作。分布式的工作流執(zhí)行服務中,每個工作流引擎只控制過程執(zhí)行的一部分,并與這部分過程中的活動所涉及的用戶及應用工具進行交互。實現分布式引擎,企業(yè)就可以根據部門劃分引擎,使得各個部門之間即合作又不互相干擾。
但是,目前的工作流管理系統(tǒng)WFMS中除了要實現分布式引擎,還需要實現任務的自動順序執(zhí)行。因為每個工作流程中都存在很多不同類型的任務,如圖1所示。如果分布式引擎只是執(zhí)行完相應的任務,再由主引擎繼續(xù)分配任務給相應引擎,這樣就增加了很多消息的傳送,不但增加了流程執(zhí)行時間,還給系統(tǒng)增加了復雜度,所以采用一種自動執(zhí)行任務的機制是很有必要的。
4 自動執(zhí)行分布式引擎的實現
如圖2所示,結合FlowStep舉例說明自動執(zhí)行分布式引擎的實現。對于一個企業(yè)來說,企業(yè)數據可能包含文檔、人員和聯(lián)系郵件,因此可以將文檔管理、人員管理、郵件管理分為三個引擎分別放在client1、client2、client3三臺主機上,各自執(zhí)行不同的任務。在client0上設置一個master主控工作流引擎,用戶使用建模工具所定義的工作流過程將統(tǒng)一以數據庫的形式保存在服務器上,master工作流引擎也布置在這個服務器上,管理工作流定義數據庫。建模得到的流程定義需要轉換為XML語言表示的文件才可以被工作流引擎解釋執(zhí)行。若無建模工具,則直接由XML語言進行工作流程定義。
在自動執(zhí)行分布式引擎的實現中,消息傳遞是一個比較重要的機制。實現了分布式,就意味著除了用戶與引擎之間外,引擎與引擎之間的消息傳遞變得比較頻繁,FlowStep直接采用JMS的消息傳遞方式。
Java消息服務(JMS)是SUN提出的旨在統(tǒng)一各種MOM系統(tǒng)接口的規(guī)范,它包含點對點(Point to Point,PTP)和發(fā)布/訂閱(Publish/Subscribe,Pub/Sub)兩種消息模型,提供可靠消息傳輸、事務和消息過濾等機制。JMS(Java Messaging Service)的工作機制為:一個發(fā)送者將消息發(fā)送到一個目的地;另一個接收者從這個目的地得到這個消息,該目的地充當橋梁的作用。發(fā)送者和接收者不需要知道對方的信息,只需要知道消息的目的地和消息的格式。JMS的目的就是要提供給消息系統(tǒng)用戶一個固定的接口,與消息提供者無關。這樣,客戶端的應用程序可以在不同的機器和操作系統(tǒng)中使用。
FlowStep采用的JMS消息傳輸是點對點隊列方式,即消息從一個發(fā)送者發(fā)送到一個接收者。WebLogic服務器會充當消息服務器,在收到新消息后將其保存到一個文件中;消息的接收方沒有必要一直監(jiān)聽消息端口,而是可以自由地完成當前的任務,直到隊列中沒有新的消息激活該模塊為止。
master工作流引擎主要用來記錄各個執(zhí)行工作流引擎的配置情況,并對執(zhí)行工作流引擎的狀態(tài)進行監(jiān)控,另外還應具有故障處理的能力。需要注意的是master和slave工作流引擎必須具有對XML文件進行解析的功能,這樣才能對任務進行識別并執(zhí)行。
當工作流程被定義的時候,主控工作流引擎解析流程XML文件,得到第一個要執(zhí)行的任務,不同的任務由不同的標識符來表示。如果第一個要執(zhí)行的任務是文檔方面的(如圖3所示), master工作流引擎解析得到<docmanage>后,將流程XML文件傳遞給client1的文檔管理引擎,由文檔管理引擎來執(zhí)行。文檔管理引擎內部根據需要也定義了子引擎,如文檔編輯、文檔處理、文檔屬性,分別標識為<docedit>、<doc>、<docpropertity>。文檔管理引擎解析XML文件的過程中,識別到這些標識符之后,便交由相應子引擎來執(zhí)行,一旦文檔引擎識別到</docmanage>,則說明當前任務結束。繼續(xù)識別到下一個標識符為<mailmanage>,于是向郵件管理引擎發(fā)送消息,并將流程XML文件傳送給郵件管理引擎繼續(xù)解析執(zhí)行,一直執(zhí)行下去,直到整個流程文件執(zhí)行完畢,向master工作流引擎返回成功消息。中間如果發(fā)生錯誤,則向主引擎發(fā)送消息,由主引擎進行處理。
圖4顯示的底層數據庫主要用來存儲各個引擎處理的數據。使用一個集中的數據庫而不是在各個引擎上分別建立數據庫,以便使引擎之間可以互相訪問各自數據庫并且方便數據庫的維護。
5 總體流程
(1)web瀏覽器提供一個可視化界面,使用戶可以清晰地看到工作流的過程。
(2)master工作流引擎先將得到的建模定義轉化為XML文件(可以為直接的過程定義XML文件),然后根據解析得到的任務類型,將XML文件和任務分配到首先要執(zhí)行的任務引擎。
(3)相應引擎執(zhí)行任務,執(zhí)行完畢后根據下一個任務標識符將XML文件發(fā)送到下一個引擎執(zhí)行。
(4)每個引擎執(zhí)行過程中都會訪問底層數據庫服務器,進行數據的讀取和存儲。
6 總 結
隨著經濟的發(fā)展,企業(yè)對管理系統(tǒng)的要求也越來越高,自動執(zhí)行分布式引擎的管理系統(tǒng)才是真正可以適應現代企業(yè)需求的。對于一個企業(yè)來說,能夠快速方便的增加或者刪除任務處理引擎是比較重要的。這樣,隨著企業(yè)機構及職能的變化,可以及時更新管理系統(tǒng),快速投入使用,節(jié)約時間和成本,使得企業(yè)管理更加靈活。
參考文獻
1 范玉順,羅海濱,林慧蘋等.工作流管理技術基礎——實現企業(yè)業(yè)務過程重組、過程管理與過程自動化的核心技術.北京:清華大學出版社,施普林格出版社,2001
2 陳鵬飛,張鋼,王慶節(jié).工作流管理原型系統(tǒng)的設計與實現. 微處理機,2003;(5)
3 Tolksdorf R.Workspaces:A Web-Based Workflow Management System.IEEE Internet Computing,2002;(9)
4 張宏展,蔡宗琰,吳欣.實戰(zhàn)J2EE與WebLogic Server應用開發(fā).北京:電子工業(yè)出版社,2004
5 方美琪.XML及其在電子商務中的應用.北京:清華大學出版社,2003