研究背景及范圍
??? 目前,工業(yè)社會(huì)中信息處理的內(nèi)涵和外延正在快速擴(kuò)展,由計(jì)算機(jī)處理已經(jīng)成為大勢所趨。一方面,組織和技術(shù)的發(fā)展之間相輔相成,從而使得信息和通訊技術(shù)的快速發(fā)展,直接導(dǎo)致了對(duì)組織結(jié)構(gòu)及組織中的工作的巨大沖擊;另一方面,由此導(dǎo)致的激烈的市場競爭迫切地要求所有企業(yè)采用更加有效率的方法來處理他們的業(yè)務(wù)過程。這些都為工作流應(yīng)用的建立和發(fā)展提供了相應(yīng)的社會(huì)需求和必要條件。
??? 在這些新技術(shù)中,由面向?qū)ο蠹夹g(shù)發(fā)展而來的分布式組件技術(shù)逐漸成為主流。而近些年來日漸強(qiáng)大的J2EE平臺(tái),正日益成為分布式組件技術(shù)的最佳實(shí)現(xiàn)載體,其靈活的架構(gòu)和極佳的分布式計(jì)算性能,使得企業(yè)應(yīng)用可以和相關(guān)中間件平臺(tái)有機(jī)的結(jié)合在一起。在這種趨勢下,基于J2EE平臺(tái)實(shí)現(xiàn)的通用工作流中間件平臺(tái),無疑會(huì)使得用戶構(gòu)造企業(yè)流程解決方案時(shí)更加快捷和方便。
??? 根據(jù)工作流流程本身的特點(diǎn)、系統(tǒng)建模的方式、所使用的底層支撐技術(shù),以及工作流流程的執(zhí)行方式等的不同,可以將工作流管理系統(tǒng)分為很多種類,這其中比較常用的分類標(biāo)準(zhǔn)是基于工作流應(yīng)用領(lǐng)域的分類,在這種分類模式下,工作流可以被分為管理型(Administrative)、特殊型(Ad-Hoc)、協(xié)作型(Collaborative)和產(chǎn)品型(Production)四種類型,其中:管理型工作流主要面向那些流程比較規(guī)范、重復(fù)性強(qiáng)的應(yīng)用場景;特殊型工作流主要應(yīng)用在因參與者不同或受其他客觀條件所導(dǎo)致的單體流程差異較大的應(yīng)用場景;協(xié)作型工作流主要應(yīng)用在主流的群件平臺(tái)上,往往需要就某一步驟進(jìn)行多次循環(huán),直到達(dá)成一致意見才能繼續(xù)流轉(zhuǎn);產(chǎn)品型工作流是工作流管理系統(tǒng)的最高層次,經(jīng)常被應(yīng)用在面向關(guān)鍵業(yè)務(wù)領(lǐng)域的流程實(shí)現(xiàn)上面,它與管理型工作流的最主要區(qū)別體現(xiàn)在:產(chǎn)品型工作流具有更好的擴(kuò)展形、伸縮性、復(fù)雜性和高效性等方面。
??? 綜上所述,產(chǎn)品型工作流代表了工作流的高級(jí)水平(請(qǐng)見圖3中左圖),而且由于其功能上的相對(duì)完善,所以特別適合于封裝成中間件的形式,應(yīng)用在面向關(guān)鍵業(yè)務(wù)領(lǐng)域的企業(yè)流程實(shí)現(xiàn)方面。本文所討論的架構(gòu)及應(yīng)用也主要圍繞產(chǎn)品型工作流展開,圖3中右圖的陰影部分為其在商業(yè)價(jià)值和任務(wù)復(fù)雜度等指標(biāo)體系中的準(zhǔn)確定位。
??? 在明確了具體的研究目標(biāo)后,接下來我們將結(jié)合對(duì)產(chǎn)品型工作流模型的分析過程,來建立起一個(gè)合理的產(chǎn)品架構(gòu),以便為結(jié)合J2EE技術(shù)來最終實(shí)現(xiàn)工作流中間件做準(zhǔn)備。
架構(gòu)設(shè)計(jì)
1. 架構(gòu)設(shè)計(jì)的原則
在系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)過程中始終以保證系統(tǒng)具備如下性能為架構(gòu)設(shè)計(jì)的基本原則:
1)?可用性(Availability)是指當(dāng)系統(tǒng)啟動(dòng)并運(yùn)行后,能夠根據(jù)請(qǐng)求回饋正確的反應(yīng)。
2)?容錯(cuò)性(Fault Detection)是指系統(tǒng)對(duì)非正常的輸入信息或中間信息主動(dòng)進(jìn)行錯(cuò)誤規(guī)避的能力,在工作流中主要體現(xiàn)在對(duì)流程狀態(tài)的檢測、消息隊(duì)列的檢測和錯(cuò)誤識(shí)別上面。
3)?客戶端的可恢復(fù)能力(Client Recovery)是指系統(tǒng)斷連接后的恢復(fù)能力、消息隊(duì)列的客戶端持久化水平和對(duì)消息狀態(tài)的繼承能力。
4)?服務(wù)器端的可恢復(fù)能力(Server Recovery)是指系統(tǒng)能否有效的保留系統(tǒng)的關(guān)鍵數(shù)據(jù)和實(shí)體對(duì)象的關(guān)鍵狀態(tài),以及對(duì)事務(wù)的處理能力上面。
5)?伸縮性(Scalability)是指系統(tǒng)可以滿足系統(tǒng)根據(jù)業(yè)務(wù)變化的需要,動(dòng)態(tài)調(diào)整系統(tǒng)處理能力的要求。
2.?工作流中間件的架構(gòu)設(shè)計(jì)
??? 工作流應(yīng)用系統(tǒng)通常由三部分組成的:工作流客戶端、工作流服務(wù)器和介于二者之間的消息傳輸機(jī)制(請(qǐng)見圖1)。其中傳輸層和服務(wù)器端又可以進(jìn)一步進(jìn)行細(xì)分,這種細(xì)分的好處就是可以使得工作流應(yīng)用系統(tǒng)可以適應(yīng)從2層到n層的多種靈活部署方式。每種部署方式都有各自不同的應(yīng)用特征和性能指標(biāo)要求,如何合理劃分服務(wù)器和消息隊(duì)列之間、服務(wù)器和數(shù)據(jù)庫之間的操作界面并沒有唯一確定的答案,完全要看具體的應(yīng)用特點(diǎn)和應(yīng)用部署條件。
??? 在上述大的分層原則下,我們進(jìn)一步對(duì)產(chǎn)品型工作流中間件進(jìn)行了細(xì)化(如下圖所示),這種細(xì)化進(jìn)一步落實(shí)了構(gòu)成每層功能的若干子功能組件。從大的層次劃分上來看:
.Client端借助于相應(yīng)的消息傳遞機(jī)制(消息中間件或函數(shù)調(diào)用等),統(tǒng)一通過相應(yīng)的編程接口(API)來調(diào)用Server端的相應(yīng)服務(wù),同時(shí)Client也可以借助于相應(yīng)的Program Execution Agent來參與完成相應(yīng)節(jié)點(diǎn)的客戶端應(yīng)用程序調(diào)用任務(wù);
.Server端由若干個(gè)功能完全獨(dú)立的服務(wù)組成,每個(gè)服務(wù)器都完成有特定的任務(wù),如:Workflow Execution Service用于處理流程實(shí)例、驅(qū)動(dòng)節(jié)點(diǎn)路由(Activity Navigation);
?
?
?
Program Execution Service用于輔助WES完成與應(yīng)用程序的交互等。在下面內(nèi)容中還將繼續(xù)介紹其具體細(xì)節(jié)。
.從圖2可以看到,WFMS是通過Message Layer來訪問CM,而不是直接通過消息傳遞系統(tǒng)來完成上述任務(wù),這是為了屏蔽不同的消息傳遞系統(tǒng)實(shí)現(xiàn),從而保證整個(gè)WFMS的消息接口保持一致,以保證各個(gè)功能模塊的功能擴(kuò)展,增強(qiáng)接口的穩(wěn)定性。
圖2:工作流中間件的分層架構(gòu)
.從圖2可以看到,整個(gè)WFMS的可用性(Availability)和可靠性(Reliability)是由RDBMS的可用性和可靠性決定的,一個(gè)高效、穩(wěn)定的DBMS對(duì)于整個(gè)系統(tǒng)的貢獻(xiàn)是十分巨大的?;赗DBMS實(shí)現(xiàn)的WFMS一個(gè)另外的好處就是:當(dāng)系統(tǒng)開發(fā)時(shí)很多預(yù)料不到的功能點(diǎn),可以由用戶基于RDBMS結(jié)構(gòu)來直接進(jìn)行定制,當(dāng)然其前提是要了解整個(gè)WFMS的運(yùn)行機(jī)理,以避免由RDBMS數(shù)據(jù)操作失誤所帶來的系統(tǒng)故障。
??? 綜上所述,一個(gè)工作流中間件的價(jià)值主要在于是否有一個(gè)強(qiáng)壯、穩(wěn)定的工作流服務(wù)器,也即是我們常說的“工作流引擎”。引擎中的各服務(wù)互相配合,協(xié)同一致地完成每一項(xiàng)工作任務(wù),各服務(wù)之間的動(dòng)態(tài)交互關(guān)系請(qǐng)見圖3。
.工作流執(zhí)行服務(wù)(Workflow Execution Service)
工作流執(zhí)行服務(wù)是系統(tǒng)的核心部分,主要負(fù)責(zé)流程實(shí)例的運(yùn)轉(zhuǎn)和對(duì)象的狀態(tài)轉(zhuǎn)換,支持群集運(yùn)算。
.管理/監(jiān)控服務(wù)(Admin Service)
負(fù)責(zé)對(duì)各服務(wù)的監(jiān)控,管理各服務(wù)的狀態(tài),可自動(dòng)對(duì)異常狀況進(jìn)行報(bào)告。
.定時(shí)服務(wù)(Scheduling Service)
定時(shí)服務(wù)根據(jù)系統(tǒng)的配置,周期性的啟動(dòng)或調(diào)度相應(yīng)的系統(tǒng)進(jìn)程來完成某些特殊的任務(wù)。如間隔一定的時(shí)間,檢測流程中是否有已經(jīng)超時(shí)的節(jié)點(diǎn)、更新應(yīng)用服務(wù)的注冊(cè)信息、與業(yè)務(wù)系統(tǒng)交換數(shù)據(jù)等等。
.?歸檔服務(wù)(Archive Service)
歸檔服務(wù)是將已完成的流程實(shí)例及其日志記錄從當(dāng)前運(yùn)行庫導(dǎo)出的過程。用戶也可以選擇導(dǎo)出‘某時(shí)刻以前啟動(dòng)的所有流程實(shí)例’。歸檔服務(wù)通過保證引擎數(shù)據(jù)庫工作在一個(gè)健康的記錄數(shù)內(nèi),來保障數(shù)據(jù)安全和引擎的運(yùn)行效率。
.網(wǎng)關(guān)服務(wù)(Gateway Service)
網(wǎng)關(guān)服務(wù)是對(duì)消息傳遞系統(tǒng)的補(bǔ)充。我們知道,不是所有發(fā)生在工作流管理系統(tǒng)和其他外部系統(tǒng)之間的通信都可以借助于消息隊(duì)列來完成的,對(duì)于某些如電子郵件這樣的系統(tǒng)間數(shù)據(jù),需要有相應(yīng)的服務(wù)來將其“翻譯”成工作流管理系統(tǒng)內(nèi)部可以傳遞和處理的格式,網(wǎng)關(guān)服務(wù)就是用來完成這一功能的。
.清理服務(wù)(Cleanup Server)
功能與歸檔服務(wù)類似,不同點(diǎn)主要體現(xiàn)在兩方面:一方面是處理的結(jié)果,歸檔服務(wù)將系統(tǒng)數(shù)據(jù)導(dǎo)出成持久化文件或轉(zhuǎn)移到別的數(shù)據(jù)庫中,以便進(jìn)行數(shù)據(jù)備份和統(tǒng)計(jì),而清理服務(wù)只是將一些系統(tǒng)內(nèi)的無效數(shù)據(jù)(如一些中間狀態(tài)結(jié)果)直接刪除;另一方面,清理服務(wù)還要根據(jù)一定的規(guī)則,對(duì)一些被意外遭到破壞的數(shù)據(jù)進(jìn)行恢復(fù),以保證WFMS的正常運(yùn)行。
.?日志服務(wù)(Log Server)
日志是工作流運(yùn)行時(shí)相關(guān)信息的記錄,記錄信息包括兩部分:對(duì)象日志和事件日志。
一個(gè)基于J2EE技術(shù)的產(chǎn)品型工作流實(shí)現(xiàn)案例
??? 前面對(duì)產(chǎn)品型工作流的架構(gòu)進(jìn)行了扼要的分析,從中我們初步了解了類似的工作流產(chǎn)品的基本組成和特點(diǎn),基于該架構(gòu)可以有多種技術(shù)實(shí)現(xiàn)方案,在對(duì)包括.Net和J2EE等技術(shù)進(jìn)行綜合比對(duì)后,我們發(fā)現(xiàn)J2EE平臺(tái)的開發(fā)性和規(guī)范性更加有利于工作流中間件的實(shí)現(xiàn)。下面就結(jié)合東軟的產(chǎn)品型工作流中間件——NEUSoft UniFlowTM 來具體介紹一下如何有效、合理地利用J2EE的技術(shù)優(yōu)勢,來實(shí)現(xiàn)完善的產(chǎn)品型工作流中間件。
.數(shù)據(jù)訪問服務(wù)(Data Access Service)中廣泛使用了基于JDBC的數(shù)據(jù)庫連接池技術(shù):應(yīng)用請(qǐng)求建立數(shù)據(jù)庫連接是一個(gè)比較耗時(shí)的工作,為了支持并發(fā)用戶訪問,UniFlow接口采用了基于JDBC的數(shù)據(jù)庫連接池技術(shù)。數(shù)據(jù)庫連接池同時(shí)建立了多個(gè)可供接口使用得數(shù)據(jù)庫連接,當(dāng)有應(yīng)用請(qǐng)求數(shù)據(jù)庫連接的時(shí)候,可以直接從連接池中取得數(shù)據(jù)庫連接進(jìn)行使用,以減少應(yīng)用建立數(shù)據(jù)庫連接的耗時(shí)。連接池克服了數(shù)據(jù)庫連接上的瓶頸,使多個(gè)請(qǐng)求可以并發(fā)訪問數(shù)據(jù)庫的資源,充分利用數(shù)據(jù)庫支持多連接的功能,提高了工作流系統(tǒng)的運(yùn)行效率。
n?基于Java RMI的負(fù)載均衡技術(shù)和組件通信技術(shù):由前述可知,一個(gè)完整的工作流應(yīng)用平臺(tái)是由若干子服務(wù)構(gòu)成的,因而各子服務(wù)之間的交互手段就顯得比較重要。在本產(chǎn)品中,我們選用Java RMI作為標(biāo)準(zhǔn)通信技術(shù),各組件通過RMI來和中央任務(wù)派發(fā)服務(wù)進(jìn)行交互,并由該服務(wù)完成負(fù)載監(jiān)控、任務(wù)分配、多引擎任務(wù)調(diào)度等復(fù)雜功能。Java RMI協(xié)議穩(wěn)定、高效的處理性能保障了上述功能的實(shí)現(xiàn)。
.基于Web Service技術(shù)的多渠道(Multi-Channel)接入實(shí)現(xiàn):工作流的管理監(jiān)控工具和辦理客戶端提供了web辦理方式,它使得用戶管理工作流系統(tǒng)、辦理工作流任務(wù)已經(jīng)不再局限于局域網(wǎng)內(nèi)部,可以在Internet上的任意一處訪問工作流系統(tǒng)。在UniFlow工作流管理系統(tǒng)中,主要重點(diǎn)結(jié)合servlet技術(shù)、xml技術(shù)、soap技術(shù)和jsp技術(shù)來實(shí)現(xiàn)上述功能。
.規(guī)則解析技術(shù):在工作流中存在著眾多的業(yè)務(wù)規(guī)則,UniFlow在解析這些業(yè)務(wù)規(guī)則時(shí)充分利用了Java語言中的正則表達(dá)式、腳本框架等技術(shù),保證了規(guī)則的動(dòng)態(tài)添加和高效解析,從而實(shí)現(xiàn)了基于規(guī)則的條件路由、任務(wù)辦理等功能。
.?Java圖形技術(shù):工作流的圖形化流程定義工具、組織機(jī)構(gòu)定義工具使用了計(jì)算機(jī)圖形學(xué)中的一些關(guān)鍵技術(shù),如圖形的繪制(主要是二維圖形)、圖形的布局、分層和規(guī)避(避免圖形的重疊和線的交叉)等等。所有的工具都可以借助于Java Web Start技術(shù)實(shí)現(xiàn)基于Internet的自動(dòng)下載和版本更新。
.?中間件技術(shù):作為孤立的工作流中間件,是無法勝任復(fù)雜的工作流應(yīng)用系統(tǒng)的,其必須和包括消息中間件、事務(wù)中間件等在內(nèi)的眾多中間件進(jìn)行交互。J2EE的一個(gè)巨大貢獻(xiàn)就是,從規(guī)范的角度定義了相關(guān)中間件的交互接口,如JMS規(guī)范、JTA規(guī)范、JCA規(guī)范等等,這使得工作流中間件只要實(shí)現(xiàn)相關(guān)的規(guī)范接口就可以了,不必為每個(gè)中間件供應(yīng)商進(jìn)行單獨(dú)定制。尤其是JMS規(guī)范,實(shí)現(xiàn)了工作流引擎間以及工作流內(nèi)部各遠(yuǎn)程服務(wù)間消息傳遞的透明。
小結(jié)
??? 工作流是當(dāng)前發(fā)展比較快的中間件技術(shù),尤其是產(chǎn)品型工作流有著廣泛的市場需求,J2EE平臺(tái)強(qiáng)大功能特性以及標(biāo)準(zhǔn)化的接口,為工作流應(yīng)用平臺(tái)的實(shí)現(xiàn)提供了巨大的技術(shù)便利,通過結(jié)合二者的優(yōu)勢而實(shí)現(xiàn)出的基于J2EE平臺(tái)的工作流應(yīng)用解決方案,可以為包括電子政務(wù)、電子商務(wù)在內(nèi)的很多高端工作流應(yīng)用提供更加便捷的開發(fā)、部署和維護(hù)手段。本文在重點(diǎn)討論了產(chǎn)品型工作流中間件系統(tǒng)架構(gòu)的基礎(chǔ)上,分析了如何合理采用J2EE技術(shù)來實(shí)現(xiàn)該架構(gòu)模型,并在最后結(jié)合一個(gè)具體的實(shí)現(xiàn)案例來進(jìn)一步驗(yàn)證了方案的可行性。
??? 隨著工作流理論模型的日臻完善,以及J2EE標(biāo)準(zhǔn)的不斷升級(jí),結(jié)合二者優(yōu)勢的工作流應(yīng)用平臺(tái)也會(huì)更加顯示出其不可替代的優(yōu)勢。
?