工作流引擎:jbpm和activiti

zhang_study_it發表於2015-09-09

目前流行的工作流引擎有Activiti和jBPM5,而在jBPM5釋出以前大多數專案、平臺都是基於jBPM3、jBPM4開發的。

jbpm

JBPM,全稱是Java Business Process Management(業務流程管理),它是覆蓋了業務流程管理、工作流、服務協作等領域的一個開源的、靈活的、易擴充套件的可執行流程語言框架。jBPM是公開原始碼專案,使用它要遵循 ASL(Apache License Version 2.0)和EULA(JBoss End User License Agreement)協議。

Activiti5與jBPM5技術組成對比:
Activiti jBPM5
1資料庫持久層ORM
MyBatis3 Hibernate3
2持久化標準

JPA規範
3事務管理
MyBatis機制/Spring事務控制
Bitronix,基於JTA事務管理
4資料庫連線方式
Jdbc/DataSource
Jdbc/DataSource
5支援資料庫
Oracle、SQL Server、MySQL等多數資料庫
Oracle、SQL Server、MySQL等多數資料庫
6設計模式
Command模式、觀察者模式等
7內部服務通訊
Service間通過API呼叫
基於Apache Mina非同步通訊
8整合介面
SOAP、Mule、RESTful
訊息通訊
9支援的流程格式
BPMN2、xPDL、jPDL等
目前僅只支援BPMN2 xml
10引擎核心
PVM(流程虛擬機器)
Drools
11技術前身
jBPM3、jBPM4
Drools Flow
12所屬公司
Alfresco
jBoss.org

Activiti概念

1、什麼是Activiti
activiti是一個工作流引擎,即進行工作流開發的核心元件,也可以理解為是一個工作流框架。Activiti是基於jBPM4設計的衍生版本。
進行工作流的開發,使用activiti框架開發就變的便捷,高效。
activiti可以對基於流程式控制的業務進行抽取,在不區分業務功能的前提下,對業務進行組合。無論是何種業務,都可以使用activiti進行開發。
2、工作流基本概念及實現原理
(1)基本概念
流程定義
描述流程,可以看成是類
流程例項
實際流程執行,可以看成是物件
(2)通過資料庫表理解流程定義和流程例項

3、Activiti的23張表
Activiti的表都以ACT_開頭。 第二部分是表示表的用途的兩個字母標識。 用途也和服務的API對應。
ACT_GE_*: GE表示general。通用資料, 用於不同場景下。
ACT_HI_*: ‘HI’表示history。 這些表包含歷史資料,比如歷史流程例項, 變數,任務等等。
ACT_ID_*: ‘ID’表示identity。 這些表包含身份資訊,比如使用者,組等等。
ACT_RE_*: ‘RE’表示repository。 這個字首的表包含了流程定義和流程靜態資源 (圖片,規則,等)。
ACT_RU_*: ‘RU’表示runtime。 這些執行時的表,包含流程例項,任務,變數,非同步任務,等執行中的資料。 Activiti只在流程例項執行過程中儲存這些資料, 在流程結束時就會刪除這些記錄。 這樣執行時表可以一直很小速度很快。

建立這些表有兩種方式:
(1)手工:執行資源包中的指令碼即可(不推薦)
路徑:資源包\activiti-5.14\database\create查詢對應的資料庫指令碼執行即可
(2)自動:執行activiti環境自動監測是否存在activiti資料庫環境,並完成對應資料庫表的初始化(推薦)

Activiti基本開發步驟

1、部署activiti
(1)建立java工程,新增activiti和spring 的jar包
(2)建立原始碼資料夾resource 新增配置檔案( 專案必備 )
false(預設):檢查資料庫表的版本和依賴庫的版本, 如果版本不匹配就丟擲異常
true: 構建流程引擎時,執行檢查,如果需要就執行更新. 如果表不存在,就建立
create-drop: 構建流程引擎時建立資料庫表, 關閉流程引擎時刪除這些表
drop-create:先刪除表再建立表
create: 構建流程引擎時建立資料庫表, 關閉流程引擎時不刪除這些表

(3)建立資料庫(自動建立)

2、建立activiti流程圖
(1)流程圖的標準BPMN
BPMI(Building Products Manufacturing International)組織
BPMN(Business Process Modeling Notation)業務流程模型與符號,由BPMI制定的一套標準化業務流程建模符號
現行標準:BPMN2.0
BPMN是一組開發流程的符號與連線線,通過符號連線的形式快速描述出流程,快速描述流程定義
描述的流程符號僅僅是一張圖,通過外掛完成將圖快速轉換為流程定義的表資料
Eclipse提供有對應的外掛,輔助程式設計人員快速構建模型
(2)外掛安裝
安裝activiti-designer外掛
由於建立流程資料的步驟過於繁瑣,activiti官方提供的activiti-designer外掛畫流程圖,用於定義業務流程
注意:該外掛具有相容性問題
安裝外掛後記得在首選項–activiti —save 的勾選中,用來自動產生流程圖的圖片
(3)畫流程圖
在任意原始碼包中定義流程圖

3、流程定義部署
圖我們畫好了,下面需要流程定義的部署,也就是把我們畫的圖轉化為資料儲存在資料庫中。
4、啟動業務流程
業務流程定義部署完畢後,相當於在Activiti引擎中搭建了一套全新的業務流程,但是該業務流程並沒有被執行,必須啟動後方可使用
業務流程可以被啟動多次,每次啟動對應將對應一個獨立的業務流程執行開啟
5、查詢流程任務
啟動後流程例項後,我們可以查詢目前都有哪些任務,我們可以按照以下程式碼查詢任務列表
6、完成流程任務
對應階段的任務完成後,任務將轉向下一個流程節點

相關文章