開源ERP技術(shù)整合系列--第17篇
用日志記錄“開源軟件”的誕生
【點(diǎn)亮星標(biāo)】----祈盼著一個(gè)鼓勵(lì)
博主開源地址:
為什么選擇Activiti
最常用的工作流引擎Activiti和JBPM楣黍,我當(dāng)初是如何選擇的呢陪腌?要考慮學(xué)習(xí)成本嘿期、現(xiàn)有功能像寒、兼容性、版本穩(wěn)定性、可擴(kuò)展性等等。
(1)Activiti的創(chuàng)始人Tom Baeyens是JBPM之前版本的核心人物驾荣,從這個(gè)層面出發(fā)Activiti工作流引擎的是站在巨人的肩膀上打造的,肯定會(huì)積累很多之前的經(jīng)驗(yàn)普泡,并解決很多之前遇到的問題播掷。
(2)Activiti使用了我們更常用的技術(shù),例如IOC撼班、AOP歧匈、MyBatis、WebService权烧、Restful眯亦,核心引擎則是基于之前版本的PVM,接口設(shè)計(jì)優(yōu)雅般码;而JBPM完全舍棄了之前的引擎,基于JBoss的Drools Flow實(shí)現(xiàn)乱顾,接口層面的設(shè)計(jì)十分混亂板祝。
(3)Activiti做了更多的擴(kuò)展功能,比如相對(duì)完整的表單設(shè)計(jì)走净,流程的熱部署券时、更加豐富的IDE插件。
Acitviti框架
下面來說說Activiti框架的核心功能
1伏伯、7個(gè)接口:工作流引擎可以想象成一個(gè)服務(wù)端橘洞,部署好以后,是需要客戶端的調(diào)用才能實(shí)現(xiàn)對(duì)工作流程的操作说搅。
RepositoryService:提供一系列管理流程部署和流程定義的API炸枣。
RuntimeService:在流程運(yùn)行時(shí)對(duì)流程實(shí)例進(jìn)行管理與控制。
TaskService:對(duì)流程任務(wù)進(jìn)行管理,例如任務(wù)提醒适肠、任務(wù)完成和創(chuàng)建任務(wù)等霍衫。
IdentityService:提供對(duì)流程角色數(shù)據(jù)進(jìn)行管理的API,這些角色數(shù)據(jù)包括用戶組侯养、用戶等敦跌。
ManagementService:提供對(duì)流程引擎進(jìn)行管理和維護(hù)的服務(wù)。
HistoryService:對(duì)流程的歷史數(shù)據(jù)進(jìn)行操作逛揩,包括查詢柠傍、刪除這些歷史數(shù)據(jù)。
FormService:表單服務(wù)辩稽。
2携兵、28張表:表記錄了用戶信息、流程信息搂誉、歷史信息等各種數(shù)據(jù)
資源庫流程規(guī)則表
act_re_deployment部署信息表
act_re_model流程設(shè)計(jì)模型部署表
act_re_procdef流程定義數(shù)據(jù)表
運(yùn)行時(shí)數(shù)據(jù)庫表
act_ru_execution運(yùn)行時(shí)流程執(zhí)行實(shí)例表
act_ru_identitylink運(yùn)行時(shí)流程人員表徐紧,主要存儲(chǔ)任務(wù)節(jié)點(diǎn)與參與者的相關(guān)信息
act_ru_task運(yùn)行時(shí)任務(wù)節(jié)點(diǎn)表
act_ru_variable運(yùn)行時(shí)流程變量數(shù)據(jù)表
歷史數(shù)據(jù)庫表
act_hi_actinst歷史節(jié)點(diǎn)表
act_hi_attachment歷史附件表
act_ih_comment歷史意見表
act_hi_identitylink歷史流程人員表
act_hi_detail歷史詳情表,提供歷史變量的查詢
act_hi_procinst歷史流程實(shí)例表
act_hi_taskinst歷史任務(wù)實(shí)例表
act_hi_varinst歷史變量表 組織機(jī)構(gòu)表
act_id_group用戶組信息表
act_id_info用戶擴(kuò)展信息表
act_id_membership用戶與用戶組對(duì)應(yīng)信息表
act_id_user用戶信息表
通用數(shù)據(jù)表
act_ge_bytearray二進(jìn)制數(shù)據(jù)表
act_ge_property屬性數(shù)據(jù)表存儲(chǔ)整個(gè)流程引擎級(jí)別的數(shù)據(jù)
3炭懊、BPMN業(yè)務(wù)流程模型:可以通過流程圖的方式配置業(yè)務(wù)流程并级、分支、條件等侮腹,最終生成引擎可識(shí)別的xml文件
BPMN2.0是一套建立工作流程模型的標(biāo)準(zhǔn)嘲碧。下面說幾個(gè)重點(diǎn)的元素和符號(hào)。
(1)事件:常用的是開始事件父阻、結(jié)束事件愈涩,用于標(biāo)識(shí)流程的開始和結(jié)束
(2)活動(dòng):常用的是任務(wù),用于描述流程節(jié)點(diǎn)中的一項(xiàng)工作
(3)網(wǎng)關(guān):常用包括并行網(wǎng)關(guān)加矛、排他網(wǎng)關(guān)履婉,并行即同時(shí)流轉(zhuǎn)多個(gè)分支,排他即只流轉(zhuǎn)其中一個(gè)分支
與SpringBoot整合
(1)修改POM添加依賴
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
(2)將BPMN2.0規(guī)范的XML文件拷貝到項(xiàng)目目錄下:/resources/processes
(3)構(gòu)建表結(jié)構(gòu)斟览,修改springBoot主配置文件application.properties
spring.activiti.database-schema-update=true
設(shè)置成true以后毁腿,會(huì)在項(xiàng)目啟動(dòng)的時(shí)候自動(dòng)創(chuàng)建Activiti表結(jié)構(gòu),首次數(shù)據(jù)表建好后建議改成false
(4)Activiti相關(guān)配置苛茂,修改springBoot主配置文件application.properties
#保存歷史數(shù)據(jù)得級(jí)別已烤,分為none、activity妓羊、audit(默認(rèn))胯究、full
spring.activiti.history-level=full
#是否校驗(yàn)流程文件,默認(rèn)校驗(yàn)resources下的processes文件夾里的流程文件
spring.activiti.check-process-definitions=false
#修改默認(rèn)的流程文件存儲(chǔ)位置
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;
后記
如果您對(duì)我們正在做的開源軟件感興趣躁绸,歡迎各種形式的合作裕循,作為貢獻(xiàn)者或直接加入我們臣嚣!讓我們一起打造一套開源的企業(yè)級(jí)信息化解決方案。
【碼云】或【GitHub】搜索“赤龍ERP”點(diǎn)擊星標(biāo)费韭,亦可加入我們茧球!?讓我們從小開始做點(diǎn)偉大的事!