摘 要: 介紹工作流管理系統(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ā)展,,信息管理變得越來越重要,。尤其是在企業(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),,這些功能通過一組軟件的執(zhí)行來實(shí)現(xiàn),,而這組軟件的執(zhí)行順序由一種計(jì)算機(jī)化的工作流邏輯表示來完成。工作流是一項(xiàng)快速發(fā)展的技術(shù),各種行業(yè)都在逐漸地采用工作流技術(shù),。其主要特點(diǎn)是過程的自動(dòng)化處理,,特別是對(duì)那些與IT應(yīng)用程序和工具交互相關(guān)的過程進(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ù)這些信息,,由引擎來執(zhí)行當(dāng)前任務(wù)。XML文件解析器所負(fù)責(zé)的工作應(yīng)該是屬于工作流執(zhí)行服務(wù)的一個(gè)組成部分,。
工作流引擎是FlowStep系統(tǒng)的核心部分,直接對(duì)應(yīng)著參考模型體系結(jié)構(gòu)中的工作流執(zhí)行服務(wù)部分,,它的部分功能分給了XML文件解析器去完成,。工作流引擎是過程定義的解釋器,它是工作流執(zhí)行服務(wù)的核心,。其主要功能包括:解釋過程定義,;創(chuàng)建過程實(shí)例并控制其執(zhí)行;調(diào)度各項(xiàng)活動(dòng),,控制過程實(shí)例間的轉(zhuǎn)換,,包括串行或并行的操作、工作流相關(guān)數(shù)據(jù)的解釋等,;為用戶工作表添加工作項(xiàng)等,。
2 現(xiàn)有工作流管理系統(tǒng)的缺陷
目前市場(chǎng)上很多工作流管理系統(tǒng)并沒有實(shí)現(xiàn)真正的分布式引擎。集中式引擎已經(jīng)過時(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é)作來完成整個(gè)工作流實(shí)例的執(zhí)行,。每個(gè)工作流引擎完成其中一部分實(shí)例的執(zhí)行,不同工作流引擎之間通過可靠的通信機(jī)制實(shí)現(xiàn)協(xié)作,。分布式的工作流執(zhí)行服務(wù)中,,每個(gè)工作流引擎只控制過程執(zhí)行的一部分,并與這部分過程中的活動(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舉例說明自動(dòng)執(zhí)行分布式引擎的實(shí)現(xiàn),。對(duì)于一個(gè)企業(yè)來說,,企業(yè)數(shù)據(jù)可能包含文檔、人員和聯(lián)系郵件,,因此可以將文檔管理,、人員管理、郵件管理分為三個(gè)引擎分別放在client1,、client2,、client3三臺(tái)主機(jī)上,各自執(zhí)行不同的任務(wù),。在client0上設(shè)置一個(gè)master主控工作流引擎,,用戶使用建模工具所定義的工作流過程將統(tǒng)一以數(shù)據(jù)庫(kù)的形式保存在服務(wù)器上,master工作流引擎也布置在這個(gè)服務(wù)器上,,管理工作流定義數(shù)據(jù)庫(kù),。建模得到的流程定義需要轉(zhuǎn)換為XML語言表示的文件才可以被工作流引擎解釋執(zhí)行。若無建模工具,,則直接由XML語言進(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ù)和消息過濾等機(jī)制,。JMS(Java Messaging Service)的工作機(jī)制為:一個(gè)發(fā)送者將消息發(fā)送到一個(gè)目的地;另一個(gè)接收者從這個(gè)目的地得到這個(gè)消息,,該目的地充當(dāng)橋梁的作用。發(fā)送者和接收者不需要知道對(duì)方的信息,,只需要知道消息的目的地和消息的格式,。JMS的目的就是要提供給消息系統(tǒng)用戶一個(gè)固定的接口,與消息提供者無關(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)聽消息端口,,而是可以自由地完成當(dāng)前的任務(wù),,直到隊(duì)列中沒有新的消息激活該模塊為止。
master工作流引擎主要用來記錄各個(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í)符來表示。如果第一個(gè)要執(zhí)行的任務(wù)是文檔方面的(如圖3所示),, master工作流引擎解析得到<docmanage>后,,將流程XML文件傳遞給client1的文檔管理引擎,由文檔管理引擎來執(zhí)行,。文檔管理引擎內(nèi)部根據(jù)需要也定義了子引擎,,如文檔編輯、文檔處理,、文檔屬性,,分別標(biāo)識(shí)為<docedit>、<doc>,、<docpropertity>,。文檔管理引擎解析XML文件的過程中,識(shí)別到這些標(biāo)識(shí)符之后,,便交由相應(yīng)子引擎來執(zhí)行,,一旦文檔引擎識(shí)別到</docmanage>,則說明當(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ù)主要用來存儲(chǔ)各個(gè)引擎處理的數(shù)據(jù),。使用一個(gè)集中的數(shù)據(jù)庫(kù)而不是在各個(gè)引擎上分別建立數(shù)據(jù)庫(kù),,以便使引擎之間可以互相訪問各自數(shù)據(jù)庫(kù)并且方便數(shù)據(jù)庫(kù)的維護(hù)。
5 總體流程
(1)web瀏覽器提供一個(gè)可視化界面,,使用戶可以清晰地看到工作流的過程,。
(2)master工作流引擎先將得到的建模定義轉(zhuǎn)化為XML文件(可以為直接的過程定義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í)行過程中都會(huì)訪問底層數(shù)據(jù)庫(kù)服務(wù)器,,進(jìn)行數(shù)據(jù)的讀取和存儲(chǔ)。
6 總 結(jié)
隨著經(jīng)濟(jì)的發(fā)展,,企業(yè)對(duì)管理系統(tǒng)的要求也越來越高,,自動(dòng)執(zhí)行分布式引擎的管理系統(tǒng)才是真正可以適應(yīng)現(xiàn)代企業(yè)需求的。對(duì)于一個(gè)企業(yè)來說,,能夠快速方便的增加或者刪除任務(wù)處理引擎是比較重要的,。這樣,隨著企業(yè)機(jī)構(gòu)及職能的變化,,可以及時(shí)更新管理系統(tǒng),,快速投入使用,節(jié)約時(shí)間和成本,,使得企業(yè)管理更加靈活,。
參考文獻(xiàn)
1 范玉順,羅海濱,,林慧蘋等.工作流管理技術(shù)基礎(chǔ)——實(shí)現(xiàn)企業(yè)業(yè)務(wù)過程重組,、過程管理與過程自動(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)用開發(fā).北京:電子工業(yè)出版社,,2004
5 方美琪.XML及其在電子商務(wù)中的應(yīng)用.北京:清華大學(xué)出版社,,2003