activiti的簡介

Danna_Danna發表於2015-09-28

        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配置的是否正確,流程是否可以被部署做好準備。

相關文章