研究背景及范圍
??? 目前,工業(yè)社會中信息處理的內(nèi)涵和外延正在快速擴展,由計算機處理已經(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)中間件平臺有機的結(jié)合在一起。在這種趨勢下,基于J2EE平臺實現(xiàn)的通用工作流中間件平臺,無疑會使得用戶構(gòu)造企業(yè)流程解決方案時更加快捷和方便。
??? 根據(jù)工作流流程本身的特點、系統(tǒng)建模的方式、所使用的底層支撐技術(shù),以及工作流流程的執(zhí)行方式等的不同,可以將工作流管理系統(tǒng)分為很多種類,這其中比較常用的分類標準是基于工作流應(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)用在主流的群件平臺上,往往需要就某一步驟進行多次循環(huán),直到達成一致意見才能繼續(xù)流轉(zhuǎn);產(chǎn)品型工作流是工作流管理系統(tǒng)的最高層次,經(jīng)常被應(yīng)用在面向關(guān)鍵業(yè)務(wù)領(lǐng)域的流程實現(xiàn)上面,它與管理型工作流的最主要區(qū)別體現(xiàn)在:產(chǎn)品型工作流具有更好的擴展形、伸縮性、復(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ù)雜度等指標體系中的準確定位。
??? 在明確了具體的研究目標后,接下來我們將結(jié)合對產(chǎn)品型工作流模型的分析過程,來建立起一個合理的產(chǎn)品架構(gòu),以便為結(jié)合J2EE技術(shù)來最終實現(xià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)對非正常的輸入信息或中間信息主動進行錯誤規(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ù)器和介于二者之間的消息傳輸機制(請見圖1)。其中傳輸層和服務(wù)器端又可以進一步進行細分,這種細分的好處就是可以使得工作流應(yīng)用系統(tǒng)可以適應(yīng)從2層到n層的多種靈活部署方式。每種部署方式都有各自不同的應(yīng)用特征和性能指標要求,如何合理劃分服務(wù)器和消息隊列之間、服務(wù)器和數(shù)據(jù)庫之間的操作界面并沒有唯一確定的答案,完全要看具體的應(yīng)用特點和應(yīng)用部署條件。
??? 在上述大的分層原則下,我們進一步對產(chǎn)品型工作流中間件進行了細化(如下圖所示),這種細化進一步落實了構(gòu)成每層功能的若干子功能組件。從大的層次劃分上來看:
.Client端借助于相應(yīng)的消息傳遞機制(消息中間件或函數(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ù)介紹其具體細節(jié)。
.從圖2可以看到,WFMS是通過Message Layer來訪問CM,而不是直接通過消息傳遞系統(tǒng)來完成上述任務(wù),這是為了屏蔽不同的消息傳遞系統(tǒng)實現(xiàn),從而保證整個WFMS的消息接口保持一致,以保證各個功能模塊的功能擴展,增強接口的穩(wěn)定性。
圖2:工作流中間件的分層架構(gòu)
.從圖2可以看到,整個WFMS的可用性(Availability)和可靠性(Reliability)是由RDBMS的可用性和可靠性決定的,一個高效、穩(wěn)定的DBMS對于整個系統(tǒng)的貢獻是十分巨大的。基于RDBMS實現(xiàn)的WFMS一個另外的好處就是:當(dāng)系統(tǒng)開發(fā)時很多預(yù)料不到的功能點,可以由用戶基于RDBMS結(jié)構(gòu)來直接進行定制,當(dāng)然其前提是要了解整個WFMS的運行機理,以避免由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)的核心部分,主要負責(zé)流程實例的運轉(zhuǎn)和對象的狀態(tài)轉(zhuǎn)換,支持群集運算。
.管理/監(jiān)控服務(wù)(Admin Service)
負責(zé)對各服務(wù)的監(jiān)控,管理各服務(wù)的狀態(tài),可自動對異常狀況進行報告。
.定時服務(wù)(Scheduling Service)
定時服務(wù)根據(jù)系統(tǒng)的配置,周期性的啟動或調(diào)度相應(yīng)的系統(tǒng)進程來完成某些特殊的任務(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ù)庫中,以便進行數(shù)據(jù)備份和統(tǒng)計,而清理服務(wù)只是將一些系統(tǒng)內(nèi)的無效數(shù)據(jù)(如一些中間狀態(tài)結(jié)果)直接刪除;另一方面,清理服務(wù)還要根據(jù)一定的規(guī)則,對一些被意外遭到破壞的數(shù)據(jù)進行恢復(fù),以保證WFMS的正常運行。
.?日志服務(wù)(Log Server)
日志是工作流運行時相關(guān)信息的記錄,記錄信息包括兩部分:對象日志和事件日志。
一個基于J2EE技術(shù)的產(chǎn)品型工作流實現(xiàn)案例
??? 前面對產(chǎn)品型工作流的架構(gòu)進行了扼要的分析,從中我們初步了解了類似的工作流產(chǎn)品的基本組成和特點,基于該架構(gòu)可以有多種技術(shù)實現(xiàn)方案,在對包括.Net和J2EE等技術(shù)進行綜合比對后,我們發(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ù)庫連接進行使用,以減少應(yīng)用建立數(shù)據(jù)庫連接的耗時。連接池克服了數(shù)據(jù)庫連接上的瓶頸,使多個請求可以并發(fā)訪問數(shù)據(jù)庫的資源,充分利用數(shù)據(jù)庫支持多連接的功能,提高了工作流系統(tǒng)的運行效率。
n?基于Java RMI的負載均衡技術(shù)和組件通信技術(shù):由前述可知,一個完整的工作流應(yīng)用平臺是由若干子服務(wù)構(gòu)成的,因而各子服務(wù)之間的交互手段就顯得比較重要。在本產(chǎn)品中,我們選用Java RMI作為標準通信技術(shù),各組件通過RMI來和中央任務(wù)派發(fā)服務(wù)進行交互,并由該服務(wù)完成負載監(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語言中的正則表達式、腳本框架等技術(shù),保證了規(guī)則的動態(tài)添加和高效解析,從而實現(xiàn)了基于規(guī)則的條件路由、任務(wù)辦理等功能。
.?Java圖形技術(shù):工作流的圖形化流程定義工具、組織機構(gòu)定義工具使用了計算機圖形學(xué)中的一些關(guān)鍵技術(shù),如圖形的繪制(主要是二維圖形)、圖形的布局、分層和規(guī)避(避免圖形的重疊和線的交叉)等等。所有的工具都可以借助于Java Web Start技術(shù)實現(xiàn)基于Internet的自動下載和版本更新。
.?中間件技術(shù):作為孤立的工作流中間件,是無法勝任復(fù)雜的工作流應(yīng)用系統(tǒng)的,其必須和包括消息中間件、事務(wù)中間件等在內(nèi)的眾多中間件進行交互。J2EE的一個巨大貢獻就是,從規(guī)范的角度定義了相關(guān)中間件的交互接口,如JMS規(guī)范、JTA規(guī)范、JCA規(guī)范等等,這使得工作流中間件只要實現(xiàn)相關(guān)的規(guī)范接口就可以了,不必為每個中間件供應(yīng)商進行單獨定制。尤其是JMS規(guī)范,實現(xiàn)了工作流引擎間以及工作流內(nèi)部各遠程服務(wù)間消息傳遞的透明。
小結(jié)
??? 工作流是當(dāng)前發(fā)展比較快的中間件技術(shù),尤其是產(chǎn)品型工作流有著廣泛的市場需求,J2EE平臺強大功能特性以及標準化的接口,為工作流應(yīng)用平臺的實現(xiàn)提供了巨大的技術(shù)便利,通過結(jié)合二者的優(yōu)勢而實現(xiàn)出的基于J2EE平臺的工作流應(yīng)用解決方案,可以為包括電子政務(wù)、電子商務(wù)在內(nèi)的很多高端工作流應(yīng)用提供更加便捷的開發(fā)、部署和維護手段。本文在重點討論了產(chǎn)品型工作流中間件系統(tǒng)架構(gòu)的基礎(chǔ)上,分析了如何合理采用J2EE技術(shù)來實現(xiàn)該架構(gòu)模型,并在最后結(jié)合一個具體的實現(xiàn)案例來進一步驗證了方案的可行性。
??? 隨著工作流理論模型的日臻完善,以及J2EE標準的不斷升級,結(jié)合二者優(yōu)勢的工作流應(yīng)用平臺也會更加顯示出其不可替代的優(yōu)勢。
?