開源ERP技術整合系列--第17篇
用日志記錄“開源軟件”的誕生
【點亮星標】----祈盼著一個鼓勵
博主開源地址:
為什么選擇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
privateRuntimeService runtimeService;
@Autowired
privateTaskService taskService;
@Autowired
privateIdentityService identityService;
@Autowired
privateRepositoryService repositoryService;
@Autowired
privateProcessEngine processEngine;
@Autowired
privateHistoryService historyService;
后記
如果您對我們正在做的開源軟件感興趣,歡迎各種形式的合作,作為貢獻者或直接加入我們!讓我們一起打造一套開源的企業級信息化解決方案。
【碼云】或【GitHub】搜索“赤龍ERP”點擊星標,亦可加入我們!?讓我們從小開始做點偉大的事!