1. 程式人生 > >工作流引擎Activiti與SpringBoot2整合--開源軟體誕生17

工作流引擎Activiti與SpringBoot2整合--開源軟體誕生17

開源ERP技術整合系列--第17篇

用日誌記錄“開源軟體”的誕生

【點亮星標】----祈盼著一個鼓勵

博主開源地址:

碼雲:https://gitee.com/redragon/redragon-erp

GitHub:https://github.com/redragon1985/redragon-erp

為什麼選擇Activiti

最常用的工作流引擎Activiti和JBPM,我當初是如何選擇的呢?要考慮學習成本、現有功能、相容性、版本穩定性、可擴充套件性等等。

(1)Activiti的創始人Tom Baeyens是JBPM之前版本的核心人物,從這個層面出發Activiti工作流引擎的是站在巨人的肩膀上打造的,肯定會積累很多之前的經驗,並解決很多之前遇到的問題。

(2)Activiti使用了我們更常用的技術,例如IOC、AOP、MyBatis、WebService、Restful,核心引擎則是基於之前版本的PVM,介面設計優雅;而JBPM完全捨棄了之前的引擎,基於JBoss的Drools Flow實現,介面層面的設計十分混亂。

(3)Activiti做了更多的擴充套件功能,比如相對完整的表單設計,流程的熱部署、更加豐富的IDE外掛。

Acitviti框架

下面來說說Activiti框架的核心功能

1、7個介面:工作流引擎可以想象成一個服務端,部署好以後,是需要客戶端的呼叫才能實現對工作流程的操作。

 

  • RepositoryService:提供一系列管理流程部署和流程定義的API。
  • RuntimeService:在流程執行時對流程例項進行管理與控制。
  • TaskService:對流程任務進行管理,例如任務提醒、任務完成和建立任務等。
  • IdentityService:提供對流程角色資料進行管理的API,這些角色資料包括使用者組、使用者等。
  • ManagementService:提供對流程引擎進行管理和維護的服務。
  • HistoryService:對流程的歷史資料進行操作,包括查詢、刪除這些歷史資料。
  • FormService:表單服務。

2、28張表:表記錄了使用者資訊、流程資訊、歷史資訊等各種資料

資源庫流程規則表 
act_re_deployment 部署資訊表 
act_re_model 流程設計模型部署表 
act_re_procdef 流程定義資料表 
執行時資料庫表 
act_ru_execution 執行時流程執行例項表 
act_ru_identitylink 執行時流程人員表,主要儲存任務節點與參與者的相關資訊 
act_ru_task 執行時任務節點表 
act_ru_variable 執行時流程變數資料表 
歷史資料庫表 
act_hi_actinst 歷史節點表 
act_hi_attachment 歷史附件表 
act_ih_comment 歷史意見表 
act_hi_identitylink 歷史流程人員表 
act_hi_detail 歷史詳情表,提供歷史變數的查詢 
act_hi_procinst 歷史流程例項表 
act_hi_taskinst 歷史任務例項表 
act_hi_varinst 歷史變量表 
組織機構表 
act_id_group 使用者組資訊表 
act_id_info 使用者擴充套件資訊表 
act_id_membership 使用者與使用者組對應資訊表 
act_id_user 使用者資訊表 
通用資料表 
act_ge_bytearray 二進位制資料表 
act_ge_property 屬性資料表儲存整個流程引擎級別的資料

3、BPMN業務流程模型:可以通過流程圖的方式配置業務流程、分支、條件等,最終生成引擎可識別的xml檔案

 

BPMN2.0是一套建立工作流程模型的標準。下面說幾個重點的元素和符號。

(1)事件:常用的是開始事件、結束事件,用於標識流程的開始和結束

(2)活動:常用的是任務,用於描述流程節點中的一項工作

(3)閘道器:常用包括並行閘道器、排他閘道器,並行即同時流轉多個分支,排他即只流轉其中一個分支

與SpringBoot整合

(1)修改POM新增依賴

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter-basic</artifactId>
    <version>6.0.0</version>
</dependency>

(2)將BPMN2.0規範的XML檔案拷貝到專案目錄下:/resources/processes

(3)構建表結構,修改springBoot主配置檔案application.properties

spring.activiti.database-schema-update=true

設定成true以後,會在專案啟動的時候自動建立Activiti表結構,首次資料表建好後建議改成false

(4)Activiti相關配置,修改springBoot主配置檔案application.properties

#儲存歷史資料得級別,分為none、activity、audit(預設)、full
spring.activiti.history-level=full
#是否校驗流程檔案,預設校驗resources下的processes資料夾裡的流程檔案
spring.activiti.check-process-definitions=false
#修改預設的流程檔案儲存位置
spring.activiti.process-definition-location-prefix=classpath:/processes/

(5)通過註解方式訪問常用介面

@Autowired
private RuntimeService runtimeService;
 @Autowired
private TaskService taskService;
 @Autowired
private IdentityService identityService;
 @Autowired
private RepositoryService repositoryService;
 @Autowired
private ProcessEngine processEngine;
 @Autowired
private HistoryService historyService;

後記

如果您對我們正在做的開源軟體感興趣,歡迎各種形式的合作,作為貢獻者或直接加入我們!讓我們一起打造一套開源的企業級資訊化解決方案。

 

【碼雲】或【GitHub】搜尋“赤龍ERP”點選星標,亦可加入我們! 讓我們從小開始做點偉大的事!與開發者交流 kzca2000