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