Intalio Tempo研究一(架構設計)

Intalio Tempo架構設計

1. 文檔編寫目的

該文檔通過對Tempo這個開源工作流引擎的架構設計進行描述,學習其設計方法,重要的是瞭解其對於BPEL4People規範的實現機制,以其在後續的項目開發中可以集成到BPEL引擎中。

本文檔主要分爲以下幾個部分,首先是對Tempo的總體架構的一個簡單描述,再就是對於其各個子模塊進行描述,其中着重瞭解其BPEL4People的實現方式,最後,對於TempoODE的集成提出自己的看法。

2. Tempo系統架構

Tempo是一個具有很高模塊化的軟件,它以此來給開發人員提供最大限度的靈活性,開發人員可以根據自己的不同需求來替換或修改任何其中的模塊。

從一個較高層次來看,Tempo可以分成三層結構,以top-down的方式主要有以下幾個方面:

1)        終端用戶用來管理他們的任務列表的用戶接口(界面)。Tempo有兩個模塊提供最終用戶接口:用戶接口框架(User Interface Framework)和XForms管理器(XForms Manager)。

2)        管理任務生存週期的工作流邏輯。這部分是由一組WS-BPEL流程來實現的,叫做任務管理流程(Task Management Processes),這些流程可以一個Web Service接口來訪問。

3)        負責以一個安全的方式,來負責持久化任務屬性的持久化層。這部分是通過任務管理服務(Task Management Service),通過Web Service接口進行訪問。

其他的組件提供了額外的/可選的功能,這些功能可以來完成Tempo與一個BPEL環境的集成工作以及Tempo的管理。

1)        安全框架是一個基於角色的訪問控制框架(授權、認證、單點登錄)。

2)        任務附件服務(Task Attachment Service)是一個接口,用來將附件存儲到數據存儲或者內容管理系統中。

3)        表單調度服務(Form Dispatcher Service)就像一個代理,它位於任務管理流程(Task Management Processes)和用戶接口框架(User Interface Framework)之間。

4)        工作流部署服務(Workflow Deployment Service)提供一個接口來在工作流數據庫中部署工作流組件,並且提供其他方法來訪問這些組件。

最終,任務對象模型(Task Object Model)定義了任務的屬性,它定義在一個通用包中,其他模塊都可以重用該對象。

下圖描述了這些模塊是怎樣一起協同工作的:

 

 

1 創建和完成一個完整任務

3. Tempo模塊

該部分更細緻的介紹上面提到的各個組件

3.1   XForms ManagerXFM

XFM負責提供XForms的代碼,並且提供與這些表單對應的工作流操作(workflow actions)。這些是通過User Interface Framework所調用的,當用戶在自己的任務列表上點擊相應任務時,便會發生對於XFM的調用,當然這些任務對應的表單就是一個XForms document。接着XFM調用TMSTask Management Service)來取得對應的任務數據,並通過WPSWorkflow Deployment Service)取得XForms表單。當用戶在其任務列表上選擇一個任務時便會生成一個表單。XFM同樣可以爲工作流操作中添加工具,例如一個提交/完成一個任務的按鈕,一個用來管理附件的工具等等。這個機制允許在不影響表單代碼的前提下,添加新的操作。事實上,工作流操作是在Form Manager中進行編碼的,而不是在表單中。表單開發人員可以專注於表單的開發而不需要擔心工作流動作。而XFM只是處理XForms形式的表單以及用於這些表單上的工作流動作。尤其是,它不提供任務列表也不提供任何其他形式的表單。

XFM使用了Orbeon Presentation Serverhttp://www.orbeon.com/)來支持XForms。還需要了XPL語言用來實現工作流動作以及調用TMSTask Management Service)和暴露爲Web服務的BPEL流程。

XFM幾乎可以以一個war包的形式部署在所有的J2EE應用服務器中,或者一個Servlet容器,像是Apache Geronimohttp://geronimo.apache.org/)。

3.2   User Interface FrameworkUIFW

用戶接口框架(UIFW)是一個以web應用程序,用戶通過它來訪問工作流系統。它提供了一個登錄界面和工作列表。當用戶選擇一個任務時,由它負責提供一個合適的表單管理器。在這一點上,UIFW僅僅支持XForms Manager,它是負責XForms 表單的,但是其他的管理其他類型表單的表單管理器可以plug in到系統中。表單管理器可以基於表單的URL來自動選擇,表單URL是每一個任務的元屬性。根據不同的表單URL,不同的表單管理器將被調用來生產相應的表單來支持所選擇的任務。

UIFW使用了Spring框架來進行實現,同樣也可以以一個WAR包的形式部署在幾乎所有的J2EE應用服務器上,或者Servlet容器像是Apache Geronimo

3.3   Task Management ProcessesTMP

任務管理流程(TMP)工作流任務的生存週期,從一個任務被創建的那一刻知道該任務完成。在這些流程中,它負責根據一定的規則和定義好的用戶交互來變更任務的狀態。TMP調用TMSTask Management Service)以一種可靠的安全的方式來改變任務的狀態。它提供一些服務來讓用戶執行工作流動作。同時在用到工作流活動的地方還與BPEL流程進行交互,這些都是通過Form Dispatcher Service來完成的。

TMP是用WS-BPEL2.0實現,它可以部署在幾乎所有的WS-BPEL2.0引擎中,例如Apache ODE

3.4   Task Management ServiceTMS

任務管理服務(TMS)將任務數據持久存儲到底層數據庫中,並且以一種安全的方式提供客戶端程序訪問和改變任務數據的服務。TMSUser Interface Framework用來去取得任務列表,XForms Manger用它來取得任務數據,還有TMP用它來改變任務狀態。

TMS是使用Java實現的一個Axis2的服務,它可以部署在Apache Axis2中。

3.5   Security FrameworkSFW

安全框架給安全系統提供一個基於角色的訪問控制接口,主要包括授權、認證和單點登錄。它被User Interface Framework用來在用戶login的時候鑑定用戶身份,同時被Task Management Service用來給任何的TMS調用授權。對於該接口的不同實現可以加入到Tempo中,以此來集成不同的安全系統。Tempo提供了一個默認實現,使用XML文件來定義用戶和角色。該框架同樣支持從一個LDAP目錄服務器中取得用戶和角色組織結構。

SFW是用Java實現,以JAR包的方式部署。

3.6   Task Attachment ServiceTAS

TAS是一個將附件持久化地鏈接到任務的服務。它的API支持添加和刪除附件(二進制文件)、還有一些描述和內容類型。

TAS是用Java-Servlet實現,以一個WAR文件部署。

3.7   Form Dispatcher ServiceFDS

FDS可以對用戶流程的消息表示和任務管理流程的消息表示進行相互轉換。有必要提供一個具體任務的創建/完成模式(schemas)給用戶流程,同時給任務管理流程提供處理任何任務類型的能力。

FDS是用Java Servlet實現,部署爲一個WAR文件。

3.8   工作流部署服務(WDS

工作流部署服務允許設計時間和自動化工具來遠程部署任務描述以及表單內容。WDS將存在的和可用的任務定義註冊到Task Object Model持久化存儲中。

WDSJava Servlet實現,部署爲一個WAR文件。

3.9   Task Object ModelTOM

任務對象模型(TOM)是一個數據訪問層,用來創建、查詢和管理任務定義和任務實例。

TOM實現爲一個Java libraryjar文件)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章