activiti的簡介

        Activiti 是一個遵從 Apache 許可的工作流和業務流程管理開源平臺,它的核心是基於 Java 的超快速、超穩定的 BPMN 2.0 流程引擎,強調流程服務的可嵌入性和可擴展性,同時強調面向業務人員。本文主要介紹 Activiti 的一些基礎知識,包括 Activiti 結構、基本服務和功能簡介。


背景介紹

        Activiti 核心是 BPMN 2.0 的流程引擎,全稱爲 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 流程引擎重點關注在系統開發的易用性和輕量性上。每一項 BPM 業務功能 Activiti 流程引擎都以服務的形式提供給開發人員。通過使用這些服務,開發人員能夠構建出功能豐富、輕便且高效的 BPM 應用程序。



Activiti 關鍵對象

         Deployment:流程部署對象,部署一個流程時創建。

         ProcessDefinitions:流程定義,部署成功後自動創建。

         ProcessInstances:流程實例,啓動流程時創建。 

         Task:任務,在Activiti中的Task僅指有角色參與的任務,即定義中的UserTask。 

         Execution:執行對象,流程實例和流程執行中的所有節點都是Execution,如UserTask、ServiceTask等。


Activiti服務組件介紹

       ProcessEngine是Activiti系統的核心接口,七類基礎服務接口通過ProcessEngine獲取,這些服務是:


RepositoryService:

        流程資源服務的接口,主要用於對流程定義的部署、查詢和刪除操。新流程的部署使用createDeployment().addResourceXXX().deploy()方法;已部署流程的查詢使用createDeploymentQuery()附加查詢條件的方式獲取;另外可以使用deleteDeployment和deleteDeploymentCascade方法進行流程的刪除或級聯刪除。


TaskService:

        任務服務接口,該接口暴露了管理人機交互任務的操作,如任務領取(claiming)、任務完成(completing)和任務指派(assigning),還包括對任務的創建、查詢、保存、刪除等。


RuntimeService:

        運行時服務主要用於啓動或查詢流程實例,以及流程變量、當前激活狀態活動的查詢、流程實例的刪除等。流程在運行過程中所產生的東西都可以使用該接口進行相關處理。


HistoryService:

        流程歷史的服務接口。提供對歷史流程實例、歷史任務的查詢和刪除操作,從提供的API來看,歷史流程的查詢其提供了finished和unfinished流程的查詢,也就是說,HistoryService提供了對已完成和當前正在執行流程的活動/任務查詢,這一點似乎與runtimeService提供的查詢有些衝突,但其實是有差別的,運行時的信息僅包含任意時刻活動的實際運行狀態信息(是從流程運行執行性能上考慮的),而歷史信息是對已經固化的信息做簡單查詢而優化的,其所持有的對象是不同的。


IdentityService:

        用戶、組管理服務接口,用於管理Group、User的增刪改查,並維護Membership,涉及到的API有newUser、newGroup、saveUser、saveGroup、createMembership以及相關的deleteXXX方法。


FormService:

        表單服務用於訪問表單數據以及在啓動新的流程實例時或完成任務時所需的渲染後的表單,提供UI界面輔助用戶填寫相關值以保存至流程變量。該服務在實際業務應用中並不常用,屬於引擎的非核心服務。


ManagementService:

        提供流程管理和控制操作的接口服務,和業務流程的運行沒有關聯關係,比如查詢數據庫本身的內容、Activiti的版本及序列生成ID規則等,屬於引擎的非核心服務。


總結

       知道activiti有這些對象和接口後,咱們就對部署流程、啓動流程、執行任務等操作有一個基本的概念。爲之後編寫一個簡單的單元測試,主要爲了測試activiti.cfg.xml配置的是否正確,流程是否可以被部署做好準備。

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