一. 背景
現(xiàn)在很多項(xiàng)目流程上比較復(fù)雜,業(yè)務(wù)上不復(fù)雜,對(duì)于這種項(xiàng)目,引入流程引擎會(huì)比較合適,流程有流程引擎去做管理,讓設(shè)計(jì)更合理,開發(fā)更簡(jiǎn)單。市面上有很多款流程引擎,本人選用了使用率比較廣的流程引擎activiti。
activiti現(xiàn)在最高版本已經(jīng)到7,springboot最高版本是6,由于網(wǎng)絡(luò)上5.22版本資料最多,所以選用了5.22版本作為項(xiàng)目集成。
二. activiti自帶表介紹

不同版本的activiti自帶表是不一樣的,其實(shí)我們也不用去關(guān)心不同版本的activiti需要那些表,只要配置好數(shù)據(jù)源,系統(tǒng)啟動(dòng)的時(shí)候,會(huì)去檢查數(shù)據(jù)庫(kù)是否包含這些數(shù)據(jù)庫(kù)表,如果沒有會(huì)自動(dòng)去創(chuàng)建這些表。下面先介紹簡(jiǎn)單介紹一下,這些表的含義。
表含義介紹博客(引用):https://blog.csdn.net/jack_eusong/article/details/79411053
表關(guān)系圖介博客(引用):https://blog.csdn.net/claram/article/details/73277358
日志表:
1. act_evt_log 存儲(chǔ)事件處理日志,方便管理員跟蹤處理。
通用數(shù)據(jù)表
2. act_ge_bytearray 二進(jìn)制數(shù)據(jù)表,一些文件存在這個(gè)表。
3. act_ge_property 屬性數(shù)據(jù)表存儲(chǔ)整個(gè)流程引擎級(jí)別的數(shù)據(jù),初始化表結(jié)構(gòu)時(shí),會(huì)默認(rèn)插入三條記錄
歷史數(shù)據(jù)表
4. act_hi_actinst 歷史節(jié)點(diǎn)表
5. act_hi_attachment 歷史附件表
6. act_hi_comment 歷史意見表
7. act_hi_detail 歷史詳情表,提供歷史變量的查詢
8. act_hi_identitylink 歷史流程人員表
9. act_hi_procinst 歷史流程實(shí)例表
10.act_hi_taskinst 歷史任務(wù)實(shí)例表
11.act_hi_varinst 歷史變量表
用戶組織表
12.act_id_group 用戶組信息表
13.act_id_info 用戶擴(kuò)展信息表
14.act_id_membership 用戶與用戶組對(duì)應(yīng)信息表
15.act_id_user 用戶信息表
資源流程規(guī)則表
16.act_procdef_info 流程定義信息
17.act_re_deployment 部署信息表
18.act_re_model 流程設(shè)計(jì)模型部署表
19.act_re_procdef 流程定義數(shù)據(jù)表
運(yùn)行時(shí)數(shù)據(jù)庫(kù)表
20.act_ru_event_subscr 監(jiān)聽表
21.act_ru_execution 運(yùn)行時(shí)流程執(zhí)行實(shí)例表
22.act_ru_identitylink 運(yùn)行時(shí)流程人員表,主要存儲(chǔ)任務(wù)節(jié)點(diǎn)與參與者的相關(guān)信息
23.act_ru_job 運(yùn)行時(shí)定時(shí)任務(wù)數(shù)據(jù)表
24.act_ru_task 運(yùn)行時(shí)任務(wù)節(jié)點(diǎn)表
25.act_ru_variable 運(yùn)行時(shí)流程變量數(shù)據(jù)表
三. activiti與springboot集成
項(xiàng)目通過maven構(gòu)建,所以去要引入activiti相關(guān)jar。
<groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <artifactId>mysql-connector-java</artifactId>
在定義activiti配置
public class ActivitiConfig implements ProcessEngineConfigurationConfigurer { public void configure(SpringProcessEngineConfiguration processEngineConfiguration) { processEngineConfiguration.setActivityFontName("宋體"); processEngineConfiguration.setLabelFontName("宋體"); processEngineConfiguration.setAnnotationFontName("宋體"); processEngineConfiguration.setDbIdentityUsed(false); processEngineConfiguration.setDatabaseSchemaUpdate("true");
processEngineConfiguration.setDbIdentityUsed(false);
這段代碼表示是否使用activiti自帶用戶組織表,如果是,這里為true,如果不是,這里為false。由于本項(xiàng)目使用了視圖的方式代替了原有的用戶組織表,所以這里設(shè)置為false,這樣啟動(dòng)就不用去檢查用戶組織表是否存在。
processEngineConfiguration.setDatabaseSchemaUpdate("true");
這段代碼表示啟動(dòng)的時(shí)候是否去創(chuàng)建表,如果第一次啟動(dòng)這里必須設(shè)置為true
然后再springboot全局配置文件application.yml 配置,表示關(guān)閉驗(yàn)證自動(dòng)部署,不關(guān)閉每次啟動(dòng)都會(huì)去部署resources/processes文件夾下面的所有資源文件
check-process-definitions: false
以上就是springboot和activiti的集成了,啟動(dòng)springboot后,activiti也會(huì)相應(yīng)的運(yùn)行起來。
四. activiti畫圖工具的集成
1. 可以在eclipse中集成Activiti Designer插件,然后可以進(jìn)行畫圖
插件安裝博客(引用):https://www.cnblogs.com/strinkbug/p/4876819.html

2. 可以引入官方的畫圖工具,然后進(jìn)行畫圖
官方的畫圖工具集成博客(引用):http:///activiti/126.html

個(gè)人建議引入官方畫圖工具,這樣畫圖信息是存在activiti自有表中,如果要發(fā)布也是比較簡(jiǎn)單的,直接點(diǎn)擊發(fā)布即可。

點(diǎn)擊發(fā)布過,會(huì)在流程資源中出現(xiàn)相應(yīng)的資源信息

如果在其他途徑畫的圖,比如eclipse,可以把相應(yīng)的資源文件直接導(dǎo)入即可

五. 官方畫圖工具的集成
上面給出了官方畫圖工具集成的博客,這里有幾個(gè)地方需要注意的,如果權(quán)限組件沒有集成spring-security,需要排除相關(guān)引用
<groupId>org.activiti</groupId> <artifactId>activiti-modeler</artifactId> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <groupId>org.springframework.security</groupId> <artifactId>spring-security-crypto</artifactId> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <groupId>org.activiti</groupId> <artifactId>activiti-diagram-rest</artifactId> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <groupId>org.springframework.security</groupId> <artifactId>spring-security-crypto</artifactId> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId>
且,springboot啟動(dòng)的時(shí)候,需要加上@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@SpringBootApplication(exclude = SecurityAutoConfiguration.class) @EnableTransactionManagement //啟用事務(wù) @ComponentScan(basePackages = "yui") public class ActivitiWebApplication { public static void main(String[] args) { ApplicationContext app = SpringApplication.run(ActivitiWebApplication.class, args); SpringContextUtils.setApplicationContext(app);
總結(jié)
流程引擎使用的時(shí)候會(huì)帶來便利性,但是使用不當(dāng)也會(huì)帶來復(fù)雜度。
|