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