《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于J2EE平臺的產(chǎn)品型工作流中間件架構(gòu)研究及實現(xiàn)機(jī)制

基于J2EE平臺的產(chǎn)品型工作流中間件架構(gòu)研究及實現(xiàn)機(jī)制

2009-01-05
作者:紀(jì)勇 邸曉明 趙大哲

研究背景及范圍
??? 目前,,工業(yè)社會中信息處理的內(nèi)涵和外延正在快速擴(kuò)展,,由計算機(jī)處理已經(jīng)成為大勢所趨,。一方面,,組織和技術(shù)的發(fā)展之間相輔相成,,從而使得信息和通訊技術(shù)的快速發(fā)展,,直接導(dǎo)致了對組織結(jié)構(gòu)及組織中的工作的巨大沖擊,;另一方面,,由此導(dǎo)致的激烈的市場競爭迫切地要求所有企業(yè)采用更加有效率的方法來處理他們的業(yè)務(wù)過程,。這些都為工作流應(yīng)用的建立和發(fā)展提供了相應(yīng)的社會需求和必要條件,。
??? 在這些新技術(shù)中,由面向?qū)ο蠹夹g(shù)發(fā)展而來的分布式組件技術(shù)逐漸成為主流,。而近些年來日漸強大的J2EE平臺,,正日益成為分布式組件技術(shù)的最佳實現(xiàn)載體,其靈活的架構(gòu)和極佳的分布式計算性能,,使得企業(yè)應(yīng)用可以和相關(guān)中間件平臺有機(jī)的結(jié)合在一起,。在這種趨勢下,基于J2EE平臺實現(xiàn)的通用工作流中間件平臺,,無疑會使得用戶構(gòu)造企業(yè)流程解決方案時更加快捷和方便,。
??? 根據(jù)工作流流程本身的特點、系統(tǒng)建模的方式,、所使用的底層支撐技術(shù),,以及工作流流程的執(zhí)行方式等的不同,可以將工作流管理系統(tǒng)分為很多種類,,這其中比較常用的分類標(biāo)準(zhǔn)是基于工作流應(yīng)用領(lǐng)域的分類,,在這種分類模式下,工作流可以被分為管理型(Administrative)、特殊型(Ad-Hoc),、協(xié)作型(Collaborative)和產(chǎn)品型(Production)四種類型,,其中:管理型工作流主要面向那些流程比較規(guī)范、重復(fù)性強的應(yīng)用場景,;特殊型工作流主要應(yīng)用在因參與者不同或受其他客觀條件所導(dǎo)致的單體流程差異較大的應(yīng)用場景,;協(xié)作型工作流主要應(yīng)用在主流的群件平臺上,往往需要就某一步驟進(jìn)行多次循環(huán),,直到達(dá)成一致意見才能繼續(xù)流轉(zhuǎn),;產(chǎn)品型工作流是工作流管理系統(tǒng)的最高層次,經(jīng)常被應(yīng)用在面向關(guān)鍵業(yè)務(wù)領(lǐng)域的流程實現(xiàn)上面,,它與管理型工作流的最主要區(qū)別體現(xiàn)在:產(chǎn)品型工作流具有更好的擴(kuò)展形,、伸縮性、復(fù)雜性和高效性等方面,。
??? 綜上所述,,產(chǎn)品型工作流代表了工作流的高級水平(請見圖3中左圖),而且由于其功能上的相對完善,,所以特別適合于封裝成中間件的形式,,應(yīng)用在面向關(guān)鍵業(yè)務(wù)領(lǐng)域的企業(yè)流程實現(xiàn)方面。本文所討論的架構(gòu)及應(yīng)用也主要圍繞產(chǎn)品型工作流展開,,圖3中右圖的陰影部分為其在商業(yè)價值和任務(wù)復(fù)雜度等指標(biāo)體系中的準(zhǔn)確定位,。

??? 在明確了具體的研究目標(biāo)后,接下來我們將結(jié)合對產(chǎn)品型工作流模型的分析過程,,來建立起一個合理的產(chǎn)品架構(gòu),,以便為結(jié)合J2EE技術(shù)來最終實現(xiàn)工作流中間件做準(zhǔn)備。


架構(gòu)設(shè)計
1. 架構(gòu)設(shè)計的原則
在系統(tǒng)的設(shè)計與實現(xiàn)過程中始終以保證系統(tǒng)具備如下性能為架構(gòu)設(shè)計的基本原則:
1)?可用性(Availability)是指當(dāng)系統(tǒng)啟動并運行后,,能夠根據(jù)請求回饋正確的反應(yīng),。
2)?容錯性(Fault Detection)是指系統(tǒng)對非正常的輸入信息或中間信息主動進(jìn)行錯誤規(guī)避的能力,在工作流中主要體現(xiàn)在對流程狀態(tài)的檢測,、消息隊列的檢測和錯誤識別上面,。
3)?客戶端的可恢復(fù)能力(Client Recovery)是指系統(tǒng)斷連接后的恢復(fù)能力、消息隊列的客戶端持久化水平和對消息狀態(tài)的繼承能力,。
4)?服務(wù)器端的可恢復(fù)能力(Server Recovery)是指系統(tǒng)能否有效的保留系統(tǒng)的關(guān)鍵數(shù)據(jù)和實體對象的關(guān)鍵狀態(tài),,以及對事務(wù)的處理能力上面,。
5)?伸縮性(Scalability)是指系統(tǒng)可以滿足系統(tǒng)根據(jù)業(yè)務(wù)變化的需要,,動態(tài)調(diào)整系統(tǒng)處理能力的要求。
2.?工作流中間件的架構(gòu)設(shè)計

??? 工作流應(yīng)用系統(tǒng)通常由三部分組成的:工作流客戶端,、工作流服務(wù)器和介于二者之間的消息傳輸機(jī)制(請見圖1),。其中傳輸層和服務(wù)器端又可以進(jìn)一步進(jìn)行細(xì)分,這種細(xì)分的好處就是可以使得工作流應(yīng)用系統(tǒng)可以適應(yīng)從2層到n層的多種靈活部署方式。每種部署方式都有各自不同的應(yīng)用特征和性能指標(biāo)要求,,如何合理劃分服務(wù)器和消息隊列之間,、服務(wù)器和數(shù)據(jù)庫之間的操作界面并沒有唯一確定的答案,完全要看具體的應(yīng)用特點和應(yīng)用部署條件,。

??? 在上述大的分層原則下,,我們進(jìn)一步對產(chǎn)品型工作流中間件進(jìn)行了細(xì)化(如下圖所示),這種細(xì)化進(jìn)一步落實了構(gòu)成每層功能的若干子功能組件,。從大的層次劃分上來看:
.Client端借助于相應(yīng)的消息傳遞機(jī)制(消息中間件或函數(shù)調(diào)用等),,統(tǒng)一通過相應(yīng)的編程接口(API)來調(diào)用Server端的相應(yīng)服務(wù),同時Client也可以借助于相應(yīng)的Program Execution Agent來參與完成相應(yīng)節(jié)點的客戶端應(yīng)用程序調(diào)用任務(wù),;


.Server端由若干個功能完全獨立的服務(wù)組成,,每個服務(wù)器都完成有特定的任務(wù),如:Workflow Execution Service用于處理流程實例,、驅(qū)動節(jié)點路由(Activity Navigation),;

?

?

?

Program Execution Service用于輔助WES完成與應(yīng)用程序的交互等。在下面內(nèi)容中還將繼續(xù)介紹其具體細(xì)節(jié),。
.從圖2可以看到,,WFMS是通過Message Layer來訪問CM,而不是直接通過消息傳遞系統(tǒng)來完成上述任務(wù),,這是為了屏蔽不同的消息傳遞系統(tǒng)實現(xiàn),,從而保證整個WFMS的消息接口保持一致,以保證各個功能模塊的功能擴(kuò)展,,增強接口的穩(wěn)定性,。
圖2:工作流中間件的分層架構(gòu)
.從圖2可以看到,整個WFMS的可用性(Availability)和可靠性(Reliability)是由RDBMS的可用性和可靠性決定的,,一個高效,、穩(wěn)定的DBMS對于整個系統(tǒng)的貢獻(xiàn)是十分巨大的?;赗DBMS實現(xiàn)的WFMS一個另外的好處就是:當(dāng)系統(tǒng)開發(fā)時很多預(yù)料不到的功能點,,可以由用戶基于RDBMS結(jié)構(gòu)來直接進(jìn)行定制,當(dāng)然其前提是要了解整個WFMS的運行機(jī)理,,以避免由RDBMS數(shù)據(jù)操作失誤所帶來的系統(tǒng)故障,。
??? 綜上所述,一個工作流中間件的價值主要在于是否有一個強壯,、穩(wěn)定的工作流服務(wù)器,,也即是我們常說的“工作流引擎”。引擎中的各服務(wù)互相配合,,協(xié)同一致地完成每一項工作任務(wù),,各服務(wù)之間的動態(tài)交互關(guān)系請見圖3,。

.工作流執(zhí)行服務(wù)(Workflow Execution Service)
工作流執(zhí)行服務(wù)是系統(tǒng)的核心部分,主要負(fù)責(zé)流程實例的運轉(zhuǎn)和對象的狀態(tài)轉(zhuǎn)換,,支持群集運算,。
.管理/監(jiān)控服務(wù)(Admin Service)
負(fù)責(zé)對各服務(wù)的監(jiān)控,管理各服務(wù)的狀態(tài),,可自動對異常狀況進(jìn)行報告,。
.定時服務(wù)(Scheduling Service)
定時服務(wù)根據(jù)系統(tǒng)的配置,周期性的啟動或調(diào)度相應(yīng)的系統(tǒng)進(jìn)程來完成某些特殊的任務(wù),。如間隔一定的時間,,檢測流程中是否有已經(jīng)超時的節(jié)點、更新應(yīng)用服務(wù)的注冊信息,、與業(yè)務(wù)系統(tǒng)交換數(shù)據(jù)等等,。
.?歸檔服務(wù)(Archive Service)
歸檔服務(wù)是將已完成的流程實例及其日志記錄從當(dāng)前運行庫導(dǎo)出的過程。用戶也可以選擇導(dǎo)出‘某時刻以前啟動的所有流程實例’,。歸檔服務(wù)通過保證引擎數(shù)據(jù)庫工作在一個健康的記錄數(shù)內(nèi),,來保障數(shù)據(jù)安全和引擎的運行效率。
.網(wǎng)關(guān)服務(wù)(Gateway Service)
網(wǎng)關(guān)服務(wù)是對消息傳遞系統(tǒng)的補充,。我們知道,,不是所有發(fā)生在工作流管理系統(tǒng)和其他外部系統(tǒng)之間的通信都可以借助于消息隊列來完成的,對于某些如電子郵件這樣的系統(tǒng)間數(shù)據(jù),,需要有相應(yīng)的服務(wù)來將其“翻譯”成工作流管理系統(tǒng)內(nèi)部可以傳遞和處理的格式,,網(wǎng)關(guān)服務(wù)就是用來完成這一功能的。
.清理服務(wù)(Cleanup Server)
功能與歸檔服務(wù)類似,,不同點主要體現(xiàn)在兩方面:一方面是處理的結(jié)果,,歸檔服務(wù)將系統(tǒng)數(shù)據(jù)導(dǎo)出成持久化文件或轉(zhuǎn)移到別的數(shù)據(jù)庫中,以便進(jìn)行數(shù)據(jù)備份和統(tǒng)計,,而清理服務(wù)只是將一些系統(tǒng)內(nèi)的無效數(shù)據(jù)(如一些中間狀態(tài)結(jié)果)直接刪除,;另一方面,清理服務(wù)還要根據(jù)一定的規(guī)則,,對一些被意外遭到破壞的數(shù)據(jù)進(jìn)行恢復(fù),,以保證WFMS的正常運行。
.?日志服務(wù)(Log Server)
日志是工作流運行時相關(guān)信息的記錄,,記錄信息包括兩部分:對象日志和事件日志,。
一個基于J2EE技術(shù)的產(chǎn)品型工作流實現(xiàn)案例
??? 前面對產(chǎn)品型工作流的架構(gòu)進(jìn)行了扼要的分析,從中我們初步了解了類似的工作流產(chǎn)品的基本組成和特點,,基于該架構(gòu)可以有多種技術(shù)實現(xiàn)方案,,在對包括.Net和J2EE等技術(shù)進(jìn)行綜合比對后,我們發(fā)現(xiàn)J2EE平臺的開發(fā)性和規(guī)范性更加有利于工作流中間件的實現(xiàn),。下面就結(jié)合東軟的產(chǎn)品型工作流中間件——NEUSoft UniFlowTM 來具體介紹一下如何有效,、合理地利用J2EE的技術(shù)優(yōu)勢,來實現(xiàn)完善的產(chǎn)品型工作流中間件,。
.數(shù)據(jù)訪問服務(wù)(Data Access Service)中廣泛使用了基于JDBC的數(shù)據(jù)庫連接池技術(shù):應(yīng)用請求建立數(shù)據(jù)庫連接是一個比較耗時的工作,,為了支持并發(fā)用戶訪問,UniFlow接口采用了基于JDBC的數(shù)據(jù)庫連接池技術(shù),。數(shù)據(jù)庫連接池同時建立了多個可供接口使用得數(shù)據(jù)庫連接,,當(dāng)有應(yīng)用請求數(shù)據(jù)庫連接的時候,可以直接從連接池中取得數(shù)據(jù)庫連接進(jìn)行使用,,以減少應(yīng)用建立數(shù)據(jù)庫連接的耗時,。連接池克服了數(shù)據(jù)庫連接上的瓶頸,使多個請求可以并發(fā)訪問數(shù)據(jù)庫的資源,,充分利用數(shù)據(jù)庫支持多連接的功能,,提高了工作流系統(tǒng)的運行效率。
n?基于Java RMI的負(fù)載均衡技術(shù)和組件通信技術(shù):由前述可知,,一個完整的工作流應(yīng)用平臺是由若干子服務(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)定,、高效的處理性能保障了上述功能的實現(xiàn),。
.基于Web Service技術(shù)的多渠道(Multi-Channel)接入實現(xiàn):工作流的管理監(jiān)控工具和辦理客戶端提供了web辦理方式,它使得用戶管理工作流系統(tǒng),、辦理工作流任務(wù)已經(jīng)不再局限于局域網(wǎng)內(nèi)部,,可以在Internet上的任意一處訪問工作流系統(tǒng)。在UniFlow工作流管理系統(tǒng)中,,主要重點結(jié)合servlet技術(shù),、xml技術(shù)、soap技術(shù)和jsp技術(shù)來實現(xiàn)上述功能,。
.規(guī)則解析技術(shù):在工作流中存在著眾多的業(yè)務(wù)規(guī)則,,UniFlow在解析這些業(yè)務(wù)規(guī)則時充分利用了Java語言中的正則表達(dá)式、腳本框架等技術(shù),,保證了規(guī)則的動態(tài)添加和高效解析,,從而實現(xiàn)了基于規(guī)則的條件路由、任務(wù)辦理等功能,。
.?Java圖形技術(shù):工作流的圖形化流程定義工具,、組織機(jī)構(gòu)定義工具使用了計算機(jī)圖形學(xué)中的一些關(guān)鍵技術(shù),,如圖形的繪制(主要是二維圖形)、圖形的布局,、分層和規(guī)避(避免圖形的重疊和線的交叉)等等,。所有的工具都可以借助于Java Web Start技術(shù)實現(xiàn)基于Internet的自動下載和版本更新。
.?中間件技術(shù):作為孤立的工作流中間件,,是無法勝任復(fù)雜的工作流應(yīng)用系統(tǒng)的,,其必須和包括消息中間件、事務(wù)中間件等在內(nèi)的眾多中間件進(jìn)行交互,。J2EE的一個巨大貢獻(xiàn)就是,,從規(guī)范的角度定義了相關(guān)中間件的交互接口,如JMS規(guī)范,、JTA規(guī)范,、JCA規(guī)范等等,這使得工作流中間件只要實現(xiàn)相關(guān)的規(guī)范接口就可以了,,不必為每個中間件供應(yīng)商進(jìn)行單獨定制,。尤其是JMS規(guī)范,實現(xiàn)了工作流引擎間以及工作流內(nèi)部各遠(yuǎn)程服務(wù)間消息傳遞的透明,。
小結(jié)
??? 工作流是當(dāng)前發(fā)展比較快的中間件技術(shù),,尤其是產(chǎn)品型工作流有著廣泛的市場需求,J2EE平臺強大功能特性以及標(biāo)準(zhǔn)化的接口,,為工作流應(yīng)用平臺的實現(xiàn)提供了巨大的技術(shù)便利,,通過結(jié)合二者的優(yōu)勢而實現(xiàn)出的基于J2EE平臺的工作流應(yīng)用解決方案,可以為包括電子政務(wù),、電子商務(wù)在內(nèi)的很多高端工作流應(yīng)用提供更加便捷的開發(fā),、部署和維護(hù)手段。本文在重點討論了產(chǎn)品型工作流中間件系統(tǒng)架構(gòu)的基礎(chǔ)上,,分析了如何合理采用J2EE技術(shù)來實現(xiàn)該架構(gòu)模型,,并在最后結(jié)合一個具體的實現(xiàn)案例來進(jìn)一步驗證了方案的可行性。
??? 隨著工作流理論模型的日臻完善,,以及J2EE標(biāo)準(zhǔn)的不斷升級,,結(jié)合二者優(yōu)勢的工作流應(yīng)用平臺也會更加顯示出其不可替代的優(yōu)勢。

?

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。