Abstract:The rapid growth of Internet/Intranet usage and development of Web technologies,provides a ideal platform to construct a Web_based workflow management.And the Web_based workflow management service provides condition for distributed working and inter-enterprise corporatin ,and it has become the characteristic of the next-generation workflow management.The WFMS prototype which this paper researched on combines the Web technologies and XML ,and provides a method of designing and implementing xml_based process definition language and workflow engine.
keywords:Workflow ,workflow management systems ,XML,Integration、Workflow Engine
1、引言
工作流的概念起源于生產(chǎn)制造業(yè)與辦公自動(dòng)化領(lǐng)域。工作流是一類能夠完全或部分自動(dòng)執(zhí)行的經(jīng)營(yíng)過(guò)程,根據(jù)一系列過(guò)程規(guī)則,文檔、信息或任務(wù)在不同的執(zhí)行者之間傳遞、執(zhí)行。工作流的目的是通過(guò)將工作分解成定義良好的任務(wù)、角色,按照一定的規(guī)則和過(guò)程來(lái)執(zhí)行這些任務(wù)并對(duì)它們進(jìn)行監(jiān)控,達(dá)到提高辦事效率、降低生產(chǎn)成本,提高企業(yè)生產(chǎn)經(jīng)營(yíng)管理水平和企業(yè)競(jìng)爭(zhēng)力,實(shí)現(xiàn)現(xiàn)代企業(yè)經(jīng)營(yíng)過(guò)程重組(BRP)、經(jīng)營(yíng)過(guò)程自動(dòng)化。
根據(jù)工作流系統(tǒng)所采用的任務(wù)項(xiàng)傳遞機(jī)制的不同,工作流管理系統(tǒng)主要有三種方式:(1)、基于文件的工作流管理系統(tǒng)——以共享文件的方式來(lái)完成任務(wù)。這種類型的產(chǎn)品是產(chǎn)生最早、發(fā)展最成熟、最具多樣性的,通常包含有Client/Server模式的圖像、文檔與數(shù)據(jù)庫(kù)管理系統(tǒng)。(2)、基于消息的工作流管理系統(tǒng)——通過(guò)用戶的電子郵件系統(tǒng)來(lái)傳遞文檔信息。這種產(chǎn)品都實(shí)現(xiàn)了一種或多種電子郵件系統(tǒng)的集成。(3)基于Web的工作流管理系統(tǒng)——隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展和Internet應(yīng)用的不斷普及,Web技術(shù)因其界面的一致、簡(jiǎn)單及與平臺(tái)的無(wú)關(guān)性,在其出現(xiàn)之后就得了迅速發(fā)展。同時(shí)Internet的發(fā)展及企業(yè)Intranet的建構(gòu)為人們提供一個(gè)理想的協(xié)同工作環(huán)境,同時(shí)也使基于Web的工作流管理系統(tǒng)成為可能。
Web應(yīng)用程序開(kāi)放、跨平臺(tái)的特性使基于Web的工作管理系統(tǒng)已經(jīng)成為一種必然的發(fā)展趨勢(shì)。但目前因?yàn)椴煌难芯空?、廠商使用不同的工作流的描述方法,這樣就造成了不同的工作流產(chǎn)品之間不能進(jìn)行互操作,因而在很大程度上阻礙了工作流技術(shù)的推廣與應(yīng)用。
為了使工作流管理系統(tǒng)具有的良好的互操作性,本文研究開(kāi)發(fā)了一個(gè)基于Web的工作流管理系統(tǒng),其中工作流過(guò)程定義采用了基于XML的過(guò)程定義語(yǔ)言。XML是用來(lái)描述文檔的組織結(jié)構(gòu),XML具有簡(jiǎn)單、自定義的優(yōu)點(diǎn),可以實(shí)現(xiàn)不同產(chǎn)商之間的工作流產(chǎn)品之間的互操作性,實(shí)現(xiàn)異構(gòu)信息的集成。
本文首先介紹了當(dāng)前工作流管理系統(tǒng)的一些相關(guān)概念,分析了在本系統(tǒng)中的一些關(guān)鍵技術(shù),包括系統(tǒng)的體系結(jié)構(gòu),工作流模型中的主要實(shí)體的XML描述及工作流執(zhí)行機(jī)的設(shè)計(jì)與實(shí)現(xiàn)等。
2、工作流管理系統(tǒng)的介紹
基于Web的工作流管理技術(shù)是實(shí)現(xiàn)企業(yè)協(xié)同工作環(huán)境的一個(gè)良好方法,它能方便的與企業(yè)內(nèi)原有的應(yīng)用、信息集成。
為了實(shí)現(xiàn)對(duì)業(yè)務(wù)過(guò)程的工作流管理,需要相應(yīng)的軟件系統(tǒng)的支撐。此種軟件系統(tǒng)為工作流管理系統(tǒng)(Workflow Management System,WfMS)。根據(jù)WfMC 的定義,工作流管理系統(tǒng)是“一種在工作流形式化表示的驅(qū)動(dòng)下,通過(guò)軟件的執(zhí)行而完成工作流定義、管理及執(zhí)行的系統(tǒng)”,其主要目標(biāo)是對(duì)業(yè)務(wù)過(guò)程中各活動(dòng)發(fā)生的發(fā)后次序及同活動(dòng)相關(guān)的相應(yīng)人力或信息資源的調(diào)用,進(jìn)行管理而實(shí)現(xiàn)業(yè)務(wù)過(guò)程的自動(dòng)化。工作流的過(guò)程定義是指對(duì)業(yè)務(wù)過(guò)程的形式化表示,它定義了過(guò)程運(yùn)行中的活動(dòng)和所涉及到的各種信息。這些信息包括過(guò)程的開(kāi)始和完成條件、構(gòu)成過(guò)程的活動(dòng)以及進(jìn)行活動(dòng)間導(dǎo)航的規(guī)則、用戶所需要完成的任務(wù)、可能被調(diào)用的應(yīng)用、工作流機(jī)的引用關(guān)系以及與工作流數(shù)據(jù)的定義。其中活動(dòng)指的是工作流中的一個(gè)邏輯步驟;工作流實(shí)例指的是工作流的一次執(zhí)行過(guò)程;工作流機(jī)是一個(gè)為工作流實(shí)例的執(zhí)行提供運(yùn)行服務(wù)環(huán)境的軟件或“引擎”,它是工作流執(zhí)行服務(wù)的核心,負(fù)責(zé)對(duì)解釋過(guò)程定義、控制過(guò)程實(shí)例的執(zhí)行、控制工作流中各個(gè)活動(dòng)的執(zhí)行順序、并完成與其它工作流機(jī)的交互與通訊。
1994年11月,工作流管理聯(lián)盟發(fā)布了工作流管理系統(tǒng)的參考模型(見(jiàn)圖1),該模型定義了一個(gè)基本的工作流管理系統(tǒng)所需要的6個(gè)基本模塊,并制定了各模塊之間的接口標(biāo)準(zhǔn)。其基本的模塊功能如下:
1) 過(guò)程定義工具:為用戶提供一種對(duì)實(shí)際業(yè)務(wù)過(guò)程進(jìn)行分析、建模的手段,并生成業(yè)務(wù)過(guò)程的可被計(jì)算機(jī)處理的形式化描述。
2) 工作流執(zhí)行服務(wù):它借助于一個(gè)或多個(gè)工作流機(jī),激活并解釋過(guò)程定義的全部或部分,并同外部的應(yīng)用程序進(jìn)行交互,完成工作流過(guò)程實(shí)例的創(chuàng)建、執(zhí)行與管理,為工作流程的運(yùn)行提供一個(gè)運(yùn)行時(shí)環(huán)境。
3) 其他工作流執(zhí)行服務(wù):在大型的WfMS中,工作流可能需要多個(gè)工作流機(jī)共同完成,甚至需要其他異質(zhì)的工作流執(zhí)行服務(wù)來(lái)輔助來(lái)完成,這涉及到WfMS系統(tǒng)之間的互聯(lián)。
4) 客戶應(yīng)用程序:它給用戶提供一種手段,以處理過(guò)程實(shí)例運(yùn)行過(guò)程中需要人工干預(yù)的任務(wù)。每一個(gè)這樣的任務(wù)就被稱為一個(gè)工作項(xiàng)。WfMS為每一個(gè)用戶維護(hù)一個(gè)工作項(xiàng)列表,它表示當(dāng)前需要該用戶處理的所有任務(wù)。
5) 被調(diào)應(yīng)用程序:指工作流執(zhí)行服務(wù)在過(guò)程實(shí)例的運(yùn)行過(guò)程中,調(diào)用的、用以對(duì)應(yīng)用數(shù)據(jù)進(jìn)行處理的程序。在過(guò)程定義中包含這種應(yīng)用程序的詳細(xì)信息,如類型、地址等。
6) 管理及監(jiān)控工具:其功能是對(duì)WfMS中過(guò)程實(shí)例的狀態(tài)進(jìn)行監(jiān)控與管理,如用戶管理、角色管理、審計(jì)管理、資源控制等。
3、基于Web的工作流管理系統(tǒng)的總體結(jié)構(gòu)
體系結(jié)構(gòu)的設(shè)計(jì)主要遵循如下3條原則:
(1)、基于Internet/Intranet分布式計(jì)算環(huán)境,面向跨部門、跨企業(yè)的分布式工作流管理。
(2)、集成已有的各種信息資源,如電子郵件、文檔管理、圖形瀏覽、資源管理等,充分發(fā)揮這些資源的綜合潛力。
(3)、與工作流管理聯(lián)盟參考模型保持一致,其中過(guò)程定義語(yǔ)言采用XML-WPDL(基于XML的過(guò)程定義語(yǔ)言),以利于實(shí)現(xiàn)不同企業(yè)的WfMS系統(tǒng)的互操作。
按照上述原則所設(shè)計(jì)的Web_WfMS的體系結(jié)構(gòu)如圖2所示:
整個(gè)系統(tǒng)的工作方式如下:
(1)、工作流應(yīng)用建模人員通過(guò)Web瀏覽器將過(guò)程及表單定義工具從Web服務(wù)器上下載下來(lái),完成應(yīng)用系統(tǒng)的建模,即實(shí)際工作流程的定義。建模結(jié)果以XML-WPDL文檔保存在服務(wù)器中,并可反復(fù)修改。
(2)、客戶端用戶通過(guò)瀏覽器登錄到Web服務(wù)器,此時(shí)可以啟動(dòng)新的流程、處理其工作項(xiàng)等。每個(gè)工作項(xiàng)都與一個(gè)表單對(duì)應(yīng)。在表單中以各種不同的方式表示需要處理的數(shù)據(jù)。用戶可以通過(guò)客戶端所提供的各種工具(如CAD系統(tǒng)、CAPP系統(tǒng)、字處理系統(tǒng))對(duì)這些數(shù)據(jù)進(jìn)行處理。在此過(guò)程中可以與數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行交互,如查詢數(shù)據(jù)庫(kù)中信息,或?qū)⒛承?yīng)用數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中等。處理完成之后可將其提交,然后工作流執(zhí)行機(jī)將根據(jù)表單中數(shù)據(jù)生成下一個(gè)工作項(xiàng),并通知相應(yīng)的用戶進(jìn)行處理,如此直至整個(gè)流程的完成。
(3)、管理人員使用工作流管理監(jiān)控工具對(duì)工作流的運(yùn)行實(shí)例、活動(dòng)實(shí)例的狀態(tài)情況進(jìn)行監(jiān)控和管理,如掛起、重啟動(dòng)、終止某個(gè)過(guò)程實(shí)例。
4、基于Web的工作流管理系統(tǒng)的設(shè)計(jì)原理與實(shí)現(xiàn)機(jī)制
基于Web_WfMS的總體設(shè)計(jì),將從工作流模型、工作流執(zhí)行機(jī)、安全權(quán)限控制等3個(gè)方面討論本系統(tǒng)的實(shí)現(xiàn)機(jī)制。
4.1 工作流模型
工作流模型是整個(gè)工作流系統(tǒng)設(shè)計(jì)的基礎(chǔ),也是過(guò)程定義人員進(jìn)行系統(tǒng)二次開(kāi)發(fā)的基礎(chǔ),模型描述能力的強(qiáng)弱決定了系統(tǒng)所支持應(yīng)用范圍以及系統(tǒng)的靈活度。在工作流模型方面,工作流管理聯(lián)盟定義的過(guò)程元模型定義了6個(gè)基本實(shí)體:過(guò)程定義、活動(dòng)、轉(zhuǎn)換條件、工作流相關(guān)數(shù)據(jù)、角色、需要激活的應(yīng)用程序。
各種不同的建模工具僅是對(duì)工作流模型的一種形式化的描述,為了實(shí)現(xiàn)不同的WfMS的過(guò)程定義能相互交互,在本系統(tǒng)中采用了其于XML的過(guò)程定義語(yǔ)言對(duì)過(guò)程建模進(jìn)行描述(如圖3)。
下面將分別介紹XML_WPDL的過(guò)程定義、活動(dòng)和轉(zhuǎn)換條件三種實(shí)體的描述。
① 過(guò)程定義
② 活動(dòng)定義
③ 轉(zhuǎn)移條件
4.2 工作流機(jī)的實(shí)現(xiàn)與異常處理機(jī)制
4.2.1 工作流機(jī)的實(shí)現(xiàn)
工作流執(zhí)行服務(wù)是工作流管理系統(tǒng)的核心。工作流執(zhí)行服務(wù)由一個(gè)或多個(gè)工作流機(jī)組成。工作流機(jī)實(shí)際上是企業(yè)經(jīng)營(yíng)過(guò)程的任務(wù)調(diào)度器,在某種程序上還是企業(yè)資源的分配器。在采用工作流管理系統(tǒng)支持經(jīng)營(yíng)過(guò)程運(yùn)行的企業(yè)中,工作流機(jī)可以看成是企業(yè)的業(yè)務(wù)操作系統(tǒng)(BOS)。工作流機(jī)的主要功能是:解釋過(guò)程定義、負(fù)責(zé)調(diào)試流程的運(yùn)行、即創(chuàng)建和管理過(guò)程實(shí)例運(yùn)行、調(diào)度活動(dòng)的運(yùn)行并創(chuàng)建要處理的工作項(xiàng)、維護(hù)工作流控制數(shù)據(jù)和相關(guān)數(shù)據(jù)、維護(hù)用戶的工作列表。工作流執(zhí)行機(jī)的結(jié)構(gòu)如圖4所示:
圖4 工作流執(zhí)行服務(wù)的結(jié)構(gòu)圖
其具體的執(zhí)行過(guò)程:工作流機(jī)接受從外部接口發(fā)送過(guò)來(lái)有關(guān)過(guò)程控制的請(qǐng)求(如過(guò)程初始化、獲取活動(dòng)以及結(jié)束活動(dòng)等),然后根據(jù)不同的請(qǐng)求類型調(diào)用相應(yīng)的處理模塊完成與本次請(qǐng)求相關(guān)的操作并將結(jié)果返回。事實(shí)上可以將工作流機(jī)看成一個(gè)多線程的并發(fā)服務(wù)器,它可以對(duì)多個(gè)外部請(qǐng)求提供并發(fā)服務(wù)。對(duì)外部請(qǐng)求的處理過(guò)程中肯定會(huì)涉及到對(duì)工作流相關(guān)數(shù)據(jù)的讀寫和更改操作,同時(shí)工作流機(jī)還維護(hù)著工作流的控制數(shù)據(jù),通過(guò)工作流控制數(shù)據(jù)來(lái)辨別每個(gè)過(guò)程或活動(dòng)實(shí)例的狀態(tài),并推動(dòng)著工作流過(guò)程的執(zhí)行。
過(guò)程、活動(dòng)、工作項(xiàng)構(gòu)成了工作流機(jī)的主要邏輯。在我們的系統(tǒng)中采用了對(duì)象的封裝和繼承的方法,把它包裝為普通的C#類。三個(gè)類的定義如下:
(1)、public class WEProInstanceManager {} //工作流執(zhí)行機(jī)的過(guò)程實(shí)例的管理類
(2)、public class WEActInstanceManager {} //工作流執(zhí)行機(jī)的活動(dòng)實(shí)例的管理類
(3)、public class WEWorkItemManager {} //工作流工作列表管理類
4.2.2 工作流機(jī)的異常處理
工作流的錯(cuò)誤包含兩種錯(cuò)誤,一是流程錯(cuò)誤,如活動(dòng)的執(zhí)行者不存在,活動(dòng)的應(yīng)用程序定義錯(cuò)誤等;另一類是系統(tǒng)的錯(cuò)誤,如:網(wǎng)絡(luò)不通,數(shù)據(jù)庫(kù)系統(tǒng)異常。對(duì)于工作流執(zhí)行機(jī)來(lái)說(shuō),前類異常是屬于無(wú)法處理的錯(cuò)誤,只能進(jìn)行錯(cuò)誤的通知;后者是執(zhí)行機(jī)可以處理的錯(cuò)誤,如數(shù)據(jù)庫(kù)異常或連接臨時(shí)中斷等等,執(zhí)行機(jī)可以進(jìn)行容錯(cuò)處理,例如:在數(shù)據(jù)庫(kù)恢復(fù)后自動(dòng)重新建立連接。執(zhí)行機(jī)對(duì)可能出現(xiàn)的錯(cuò)誤進(jìn)行編碼,并附有對(duì)應(yīng)的描述信息。
在我們的系統(tǒng)中采用了C#的異常處理思想(在C#的編程思想中,系統(tǒng)的錯(cuò)誤是通過(guò)捕獲異常來(lái)實(shí)現(xiàn)的),拋出的異常通過(guò)異常類WEException來(lái)描述。WEException類繼承了C#的異常處理類Exception。并覆蓋了Exception類的屬性Message(){get{}},其中WEException類中保存了可識(shí)別的異常對(duì)照表。在C#的異常處理中,在出錯(cuò)的地方將異常拋出,不進(jìn)行處理。異常被拋到更高的層次,直到某個(gè)層次能夠進(jìn)行這種異常的處理。
4.3、工作流管理系統(tǒng)的安全權(quán)限控制
工作流管理系統(tǒng)對(duì)安全性要求較高,為了達(dá)到要求,必須做到充分的安全控制。在我們的系統(tǒng)中,共設(shè)置了5層安全控制級(jí)別。
1)、用戶鑒定:用戶登陸系統(tǒng),需要用戶輸入用戶名和密碼,以便確認(rèn)和登記。
2)、服務(wù)器訪問(wèn)控制:保證只有授權(quán)用戶,才可登陸指定的服務(wù)器。
3)、數(shù)據(jù)庫(kù)訪問(wèn)控制:對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)進(jìn)行控制
4)、文檔訪問(wèn)控制:對(duì)數(shù)據(jù)庫(kù)中的文檔進(jìn)行權(quán)限控制。
5)、文檔中的域訪問(wèn)控制:對(duì)文檔中的部分內(nèi)容進(jìn)行控制。
通過(guò)以上五層安全控制再加上一些安全機(jī)制如:系統(tǒng)級(jí)權(quán)限控制、電子簽名和加密等,使得整個(gè)安全機(jī)制達(dá)到了系統(tǒng)對(duì)安全的需要。
5、結(jié)束語(yǔ):
以Web作為工作流管理系統(tǒng)的底層通訊支持使系統(tǒng)具有開(kāi)放、一致和方便使用的特點(diǎn),使企業(yè)中處于孤島的信息能相互集成。本系統(tǒng)采用的基于XML的過(guò)程定義語(yǔ)言的工作流管理系統(tǒng),不僅適應(yīng)分布辦公,更以系統(tǒng)開(kāi)放的環(huán)境為實(shí)現(xiàn)跨部門、跨企業(yè)的供應(yīng)鏈的不同工作流互操作打下了基礎(chǔ),使客戶、供應(yīng)商、或合作者都可以方便的參與企業(yè)的工作流,提高工作效率。
參考文獻(xiàn)
[1]WfMC,"The Workflow Reference Model".(WfMC-TC00-1003),Technical Report,Workflow Management Coalition,Hamnshire.1995.
[2]史美林、楊光信、向勇等。WFMS:工作流管理系統(tǒng)[J]。計(jì)算機(jī)學(xué)報(bào),1999(3):326~328。
[3]范玉順。工作流管理技術(shù)基礎(chǔ)—實(shí)現(xiàn)企業(yè)經(jīng)營(yíng)過(guò)程重組與經(jīng)營(yíng)過(guò)程自動(dòng)化的核心技術(shù)[M].北京:清華大學(xué)出版社,2001。
[4]Mohan C.Recent Trendsin Workflow Management Products,Standards, and Research
.URL:http://www.almaden.ibm.com/cs/exotica/wfnat097.ps
[5]、Workflow Management Coalition.Interface 1:process definition interchange and process model[EB/OL].WFMC-TC-1016-P, http://www.,1999-10