董 娜, 高級軟件工程師, IBM
董娜, 高級軟件工程師,就職於 IBM 中國軟件開發中心(CSDL),從事 IBM 企業內容管理 (Enterprise Content Manager) 軟件的系統測試以及測試工具的開發工作,她對 ECM 產品的測試,數據庫系統的調優以及 Java 應用程序開發有著豐富的經驗。
狄 浩, 高級軟件工程師, IBM
狄浩,高級軟件工程師,主要從事 IBM 企業內容管理產品的相關工作,興趣廣泛。
張 曉籬, 軟件工程師, IBM
張曉籬,中國科學院畢業,2011 年加入 IBM,從事 IBM SPSS Modeler 研發工作。
簡介: Activiti 作為一個遵從 Apache 許可的工作流和業務流程管理開源平台,其核心是基於 Java 的超快速、超穩定的 BPMN 2.0 流程引擎,強調流程服務的可嵌入性和可擴展性,同時更加強調面向業務人員。本文主要介紹 Activiti 的背景和基礎知識,包括 Activiti 結構、基本服務和功能簡介,開發環境的搭建以及主要功能的代碼示例。
背景介紹
- Activiti 其核心是 BPMN 2.0 的流程引擎。BPMN 是目前被各 BPM 廠商廣泛接受的 BPM 標准,全稱為 Business Process Model and Notation,由 OMG 組織進行維護,2011 年 1 月份發布了其 2.0 的正式版。BPMN 2.0 對比於第一個版本,其最重要的變化在於其定義了流程的元模型和執行語義,即它自己解決了存儲、交換和執行的問題。這代表著 BPMN 2.0 流程定義模型不僅僅可以在任何兼容 BPMN 2.0 的引擎中執行,而且也可以在圖形編輯器間交換。作為一個標准,BPMN 2.0 統一了工作流社區。
- Activiti 是由 jBPM 的創建者 Tom Baeyens 離開 JBoss 之後建立的項目,構建在開發 jBPM 版本 1 到 4 時積累的多年經驗的基礎之上,旨在創建下一代的 BPM 解決方案。同時 Activiti 選擇了 Apache 許可,一方面是希望 Activiti 能有更長久的生命力,因為它不受任何個人或是公司的控制而是屬於整個社區,另一方面更是希望這個寬松的許可能夠讓 Activiti BPM 引擎和 BPMN2.0 被更廣泛的采納、使用和商業化。
- 對於 Java 開發者來說,Activiti 的首席架構師 Tom Baeyens 曾提到,Activiti 的首個目標就是要獲得開發者的青睐。首先它在使用時極為方便,只是個 jar 文件,使用時僅需要將其放在類路徑中,當然,Activiti 也可以作為獨立服務器的方式使用;同時 Activiti 提供了很多 BPM 高級工具,其中還包括開發了協作工具,使得開發人員、業務人員和運維人員能夠更好的協同工作。
- 本文將會介紹 Activiti 的基本概念,同時通過示例來介紹如何通過搭建 Activiti 開發環境和 Activiti API 使用,同時也會接觸到 Activiti 的一些工具,希望通過閱讀這篇文章,Activiti 能成為您在開發 BPM 系統時的一個選擇。
Activiti 基本架構和服務組件介紹
Activiti 流程引擎重點關注在系統開發的易用性和輕量性上。每一項 BPM 業務功能 Activiti 流程引擎都以服務的形式提供給開發人員。通過使用這些服務,開發人員能夠構建出功能豐富、輕便且高效的 BPM 應用程序。
圖 1.Activiti 系統服務結構圖
圖 1 是 Activiti 引擎的系統服務結構圖,該圖顯示了引擎提供的所有功能組件,以下為各個服務的功能簡介:
- RepositoryService: Activiti 中每一個不同版本的業務流程的定義都需要使用一些定義文件,部署文件和支持數據 ( 例如 BPMN2.0 XML 文件,表單定義文件,流程定義圖像文件等 ),這些文件都存儲在 Activiti 內建的 Repository 中。Repository Service 提供了對 repository 的存取服務。
- RuntimeService:在 Activiti 中,每當一個流程定義被啟動一次之後,都會生成一個相應的流程對象實例。Runtime Service 提供了啟動流程、查詢流程實例、設置獲取流程實例變量等功能。此外它還提供了對流程部署,流程定義和流程實例的存取服務。
- TaskService:在 Activiti 中業務流程定義中的每一個執行節點被稱為一個 Task,對流程中的數據存取,狀態變更等操作均需要在 Task 中完成。Task Service 提供了對用戶 Task 和 Form 相關的操作。它提供了運行時任務查詢、領取、完成、刪除以及變量設置等功能。
- IdentityService:Activiti 中內置了用戶以及組管理的功能,必須使用這些用戶和組的信息才能獲取到相應的 Task。Identity Service 提供了對 Activiti 系統中的用戶和組的管理功能。
- ManagementService:Management Service 提供了對 Activiti 流程引擎的管理和維護功能,這些功能不在工作流驅動的應用程序中使用,主要用於 Activiti 系統的日常維護。
- HistoryService: History Service 用於獲取正在運行或已經完成的流程實例的信息,與 Runtime Service 中獲取的流程信息不同,歷史信息包含已經持久化存儲的永久信息,並已經被針對查詢優化。
- FormService: Activiti 中的流程和狀態 Task 均可以關聯業務相關的數據。通過使用 Form Service 可以存取啟動和完成任務所需的表單數據並且根據需要來渲染表單。