工作流引擎的設計與實現

工作流參考模型
  工作流管理聯盟(WfMC)給出的工作流參考模型如圖1所示。

圖1工作流參考模型
  1) Work Flow Enactment Service
  工作流執行服務:由一個或多個工作流引擎組成,爲工作流實例提供運行時期的執行環境的軟件服務器。
  2)Process Definition Tool
  過程定義工具:用圖形化的方式定義工作流、構造工作流模型,通過接口1與引擎通信。
  3)Work Flow Client Application
  工作流的客戶應用:由用戶結合業務需求而開發,用它來驅動工作流。客戶端程序通過接口2與引擎交互。一般的工作流引擎用戶不需要懂引擎的實現,只要知道怎麼實現客戶端程序就可以了。
  4)Invoked Applications
  工作流直接調用的應用:在工作流運作的過程中,可能需要調用工作流引擎之外的功能,這時可通過定義好的接口3來完成。
  5)Other Work Flow Enactment Service
  其它工作流執行服務:接口4用於工作流引擎與其他工作流引擎的協作。
  6)Administration and Monitoring Tools
  工作流管理工具:接口5用於管理和監視工作流引擎。 
工作流引擎
  是工作流系統中樞,實現工作流模型解釋識別並轉換爲自定義模型,爲工作流實例提供運行時的執行環境,包括實例的創建,激活,掛起,終止,並按定義流程和數據信息導航推進實例。因此,工作流引擎設計的好壞直接關係到工作流的執行效率與可擴展性,進而影響到工作流系統的柔性以至企業的辦事效率及在市場中的競爭力。其功能包括:解釋過程定義;控制過程實例的創建、激活、掛起、終止;爲過程的活動導航,一般包含順序或平行的操作、最後時間期限、對工作流相關數據進行解釋;參與者簽名和退出;確定任務項目,實現用戶意圖,提供接口,支持用戶交互;維護工作流控制和工作流相關數據,在應用程序間或用戶間傳遞工作流相關數據;提供調用外部程序的接口,連接所有工作流相關數據;提供控制、管理和審查功能。
 柔性
  是指在工作流程不中斷執行的情況下可以改變其執行路徑、有適應能力。柔性可以分爲兩種:選擇柔性,是在工作流建模階段對可預見的情形進行說明定義,從而給用戶提供一定的自由度,工作流有許多可以替代的有效途徑,每一條途徑都是正確的,只是不同的情況下執行的途徑不同;適應柔性,是在工作流執行期間允許用戶對工作流程進行各種適應性的調整或更改,是工作流引擎可以根據具體情況靈活地改變其途徑,動態指定流程流向,臨時決定任務執行者等。其中適應柔性根據對工作流產生影響的時間的不同,又可以分爲模型調整和實例調整兩類:模型調整指對工作流的修改不影響當前運行的流程,除非整個流程從頭開始重新運行;而實例調整則意味着對工作流的修改,即時生效,其要求動態改變運行中的工作流。
 柔性工作流引擎的結構
  採用分層技術實現,在J2EE組件開發中,按功能可分爲四層。
  第一層是用戶接口層。實現工作流引擎與用戶交互功能,如用戶登陸驗證,任務列表查詢,過程實例創建及實例狀態監控等,只提供引擎與外部交互能力,需要的數據從引擎的第三層和第四層獲得,是用戶調用工作流引擎的外部接口。
  第二層是動態控制層。工作流系統的柔性主要體現在這層:(1)實現在系統的運行是有權限的用戶可以根據需要修改或補充定義原來工作流的模型;(2) 有權限的用戶在工作流執行中可以動態修改工作流實例數據,動態指定工作流的流向,臨時指定任務執行者或設置任務的完成時間等各種屬性,並負責將信息傳遞到第四層。
  第三層是過程實例層。用於描述工作流實例信息,提供工作流實例運行態的信息,如當前實例運行狀態,活動的完成情況等。該層信息具有實時性,只涉及到與過程實例相關數據,沒有涉及到工作流過程定義數據,當需要由實時信息實現過程實例推進時,調用下層過程定義邏輯導航實例運行。
  第四層是模型層。該層的主要功能(1) 描述引擎內部自定義工作流的模型和工作流過程定義用到的組件,能夠識別外部過程定義,並且根據內部活動間邏輯驅動關係實現對工作流實例運行控制,同時根據過程運行中的實時參數推進過程執行;(2) 接受第二層傳遞過來的數據,並對工作流模型進行相應的修改,並且對第三層的工作流實例信息進行相應的更新。該層是四層結構的核心部分。
關鍵部分的實現技術
 工作流過程定義接口
  2002年WfMC提出的新接口描述規範XPDL(XML Process Definition Language ),工作流引擎採用 JAXB(Java Architecture for XML Binding )技術處理Schema, 識別出這個Schema,處理符合XPDL規範的模型描述文件,由於XML標準爲高度可移植性和可重用文檔中的各種數據提供了標準的描述機制,使得數據更易於移植到任何計算機或軟件包,只要企業的工作流系統能夠解析XML文檔,將其中的元素轉換成自己的工作流流程模型,就能達到不同企業工作流系統共享工作流信息和協同工作,因此這裏把XML作爲模型描述語言,用XML schema 定義和描述XML模型文檔結構和內容模式。
用戶接口層
  採用Model-View-Controller(MVC)模式,在該模式中Servlet充當Controller角色,負責處理請求與頁面流轉,JSP充當View角色,它是數據表現層,生成用戶顯示界面. 這部分主要是響應Servlet功能調用,實現特定業務功能由工作流引擎通過JMS技術調用相應的EJB組件完成。
企業遺留系統接口實現
  通過RMI技術工作流引擎與企業遺留系統通信,使企業遺留系統成爲工作流引擎可管理的對象,供工作流引擎調用,提高了工作流系統的可擴展性和系統的柔性。
數據庫接口實現
  在與數據庫通信時採用連接池技術、用JNDI獲得數據源並通過DataSource連接工廠與數據庫連接,可以提高工作流引擎訪問數據庫的效率、操作的靈活性且增強安全性。Oracle 數據庫本身就具有事務處理能力,而且安全性健壯性能良好,在一定程度上保證了整個系統的數據安全性和一致性. 因此這裏採用數據庫ORACLE9i,管理工作流相關數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章