Ss點擊上方“ 搜雲庫技術團隊 ”關注,選擇“ 設爲星標

回覆“ 1024 ”或 面試題 獲取 4T架構師 資料

什麼是Activiti?

Activiti是一個開源的工作流引擎,它實現了BPMN 2.0規範,可以發佈設計好的流程定義,並通過api進行流程調度。Activiti 作爲一個遵從 Apache 許可的工作流和業務流程管理開源平臺,其核心是基於 Java 的超快速、超穩定的 BPMN2.0 流程引擎,強調流程服務的可嵌入性和可擴展性,同時更加強調面向業務人員。

說白了activiti是一個業務流程管理引擎,會沿着設計者設計好的流程,一步一步的執行下去,直到終點。

依賴:

新建springBoot項目時勾選activiti,或者在已建立的springBoot項目添加以下依賴:

配置:

數據源和activiti配置:

在activiti的默認配置中,process-definition-location-prefix 是指定activiti流程描述文件的前綴(即路徑),啓動時,activiti就會去尋找此路徑下的流程描述文件,並且自動部署;suffix 是一個String數組,表示描述文件的默認後綴名,默認以上兩種。

springMVC配置:

這裏配置靜態資源和直接訪問的頁面:在本示例項目中,添加了thymeleaf依賴解析視圖,主要採用異步方式獲取數據,通過angularJS進行前端數據的處理和展示。

使用activiti:

配置了數據源和activiti後,啓動項目,activiti 的各個服務組件就已經被加入到spring容器中了,所以就可以直接注入使用了。如果在未自動配置的spring環境中,可以使用通過指定bean的init-method來配置activiti的服務組件。

案例:

以以下請假流程爲例:

1. 開始流程並“申請請假”(員工)

在此方法中,Vaction 是申請時的具體信息,在完成“申請請假”任務時,可以將這些信息設置成參數。

2. 審批請假(老闆)

(1)查詢需要自己審批的請假

老闆查詢自己當前需要審批的任務,並且將任務和參數設置到一個VacTask對象,用於頁面的展示。

(2)審批請假

同理,result是審批的結果,也是在完成審批任務時需要傳入的參數;taskId是剛纔老闆查詢到的當前需要自己完成的審批任務ID。(如果流程在這裏設置分支,可以通過判斷result的值來跳轉到不同的任務)

3. 查詢記錄

由於已完成的請假在數據庫runtime表中查不到(runtime表只保存正在進行的流程示例信息),所以需要在history表中查詢。

(1) 查詢請假記錄

請假記錄即查出歷史流程實例,再查出關聯的歷史參數,將歷史流程實例和歷史參數設置到Vcation對象(VO對象)中去,即可返回,用來展示。

此外,以上是查詢歷史流程實例和歷史參數後,設置VO對象的通用方法:可以根據參數列表中的參數,將與VO對象屬性同名的參數設置到VO對象中去。

4. 前端展示和操作

(1)審批列表和審批操作示例

以上是個SpringBoot 與 activiti 6.0 整合的示例項目的部分代碼與說明,完整的項目代碼在:

https://gitee.com/yawensilence/activiti-demo6-springboot 。

近期技術熱文

相關文章