企業(yè)應用開發(fā)過程中不可避免的會遇到工作流,OA流程,審批流程等,activiti是一個開源的流程引擎,可以幫助我們處理更加復雜,并且更加可靠的流程實現(xiàn)。
Activiti 7
Activiti 7是目前最新的版本,對Spring Boot 2.x有著很好的支持,本文使用7.0.0.SR1。Activiti 7和Spring Boot整合非常簡單,直接引入一個starter即可。
pom.xml
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.0.0.SR1</version>
</dependency>
引入后,配置application.yml
spring:
activiti:
#Activiti記錄歷史任務數(shù)據(jù)級別,full是最全的,方便日后查詢使用
history-level: full
#創(chuàng)建數(shù)據(jù)庫歷史數(shù)據(jù)表
db-history-used: true
以上完成后,運行應用,只要你的應用有配置好的DataSource,啟動后會在數(shù)據(jù)庫創(chuàng)建一些Activiti的基礎數(shù)據(jù)表。大概是以下的樣子,每個表都有不同的用處。

Activiti 6
Activiti 6是一個很早期的版本了,目前已經不再維護,和Spring Boot 2.x兼容不是很好,但目前還在使用6.0.0的應該還有很多。整合Activiti 6其實也不難,稍微調整一下就可以用了。
pom.xml
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
application.yml這個不用配置db-history-used: true,6.0.0默認就是true
spring:
activiti:
#Activiti記錄歷史任務數(shù)據(jù)級別,full是最全的,方便日后查詢使用
history-level: full
完成上面后還不能啟動應用,會報錯,需要在Spring Boot啟動類注解上面,增加以下代碼,排除Activiti的安全配置org.activiti.spring.boot.SecurityAutoConfiguration。
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
現(xiàn)在還是不可以啟動應用,6.0.0默認會從classpath:/processes/掃描流程定義文件**.bpmn20.xml,"**.bpmn,所以需要先創(chuàng)建這個目錄,要不然會報目錄不存在的錯誤,為了確保能目錄生效,請至少在目錄放一個文件,甚至放一個空文件也可以(7版本沒有這個問題)。
現(xiàn)在,終于可以啟動應用了,啟動完成后同樣會在數(shù)據(jù)庫創(chuàng)建一些基礎表。
使用
Activiti經過上面步驟就算整合完成了,在代碼里面直接注入Activiti的服務實例就可以開心的玩耍了。ProcessEngine是Activiti的核心,可以用來控制Activiti的所有功能。Activiti 官方用戶手冊
@Autowired
private ProcessEngine processEngine;
@Autowired
private RepositoryService repositoryService;
@Autowired
private HistoryService historyService;
@Autowired
private TaskService taskService;
@Autowired
private RuntimeService runtimeService;
關鍵類
下面列出兩個關鍵的類,Activiti能夠自動初始化,加載配置全部在這兩個類中。
Activiti 7
ProcessEngineAutoConfiguration自動配置類
Activiti 6
DataSourceProcessEngineAutoConfiguration自動配置類
