1、按照上一篇博客,新建好springboot項目后,在項目pom.xml文件中添加activity依賴
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>6.0.0</version> </dependency>
2、修改啟動類,此時啟動會發現有報錯
原因:springboot2.0不能與activiti6.0.0直接集成使用,因為activiti6.0.0出來的時候springboot2.0還沒有出來,activiti6.0.0 支持springboot1.2.6以上,2.0.0以下的版本。
解決辦法:修改springboot啟動類,詳見https://www.jianshu.com/p/085580b3dda8
3、流程文件
可以在配置文件中配置spring.activiti.check-process-definitions=false,設置為不校驗,這樣就不會報錯。參考 https://www.jianshu.com/p/085580b3dda8
(2).傳統的spring在配置文件中添加idGenerator屬性:
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<!-- UUID作為主鍵生成策略 -->
<property name="idGenerator" ref="idGen" />
</bean>
(3).springboot中在配置類中修改idGenerator。
activity也內置了一個實現類org.activiti.engine.impl.persistence.StrongUuidGenerator,生成的uuid是帶'-'的
package com.mycompany.myapp.config; import org.activiti.spring.SpringProcessEngineConfiguration; import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer; import org.springframework.context.annotation.Configuration; import com.mycompany.myapp.utils.IdGen; /** * @author xuzhipeng * @date 2018-11-09 10:26:47 * @since 1.0 */ @Configuration public class ActivitiConfig implements ProcessEngineConfigurationConfigurer { @Override public void configure(SpringProcessEngineConfiguration springProcessEngineConfiguration) { springProcessEngineConfiguration.setIdGenerator(new IdGen()); } }
package com.mycompany.myapp.utils; import java.util.UUID; import org.activiti.engine.impl.cfg.IdGenerator; /** * @author xuzhipeng * @date 2018-11-09 10:47:59 * @since 1.0 */ public class IdGen implements IdGenerator{ /** * 封裝JDK自帶的UUID, 通過Random數字生成, 中間無-分割. */ public static String uuid() { return UUID.randomUUID().toString().replaceAll("-", ""); } /** * Activiti ID 生成 */ @Override public String getNextId() { return IdGen.uuid(); } }
5、配置文件屬性
(1)spring.activiti.database-schema-update
databaseSchemaUpdate配置項可以設置流程引擎啟動和關閉時數據庫執行的策略。 databaseSchemaUpdate有以下四個值:
false:false為默認值,設置為該值后,Activiti在啟動時,會對比數據庫表中保存的版本,如果版本不匹配時,將在啟動時拋出異常。 true:設置為該值后,Activiti會對數據庫中所有的表進行更新,如果表不存在,則Activiti會自動創建。 create-drop:Activiti啟動時,會執行數據庫表的創建操作,在Activiti關閉時,執行數據庫表的刪除操作。 drop-create:Activiti啟動時,執行數據庫表的刪除操作在Activiti關閉時,會執行數據庫表的創建操作。
設置為true后啟動應用,會在數據庫里創建28張表,表創建好之后停止應用,設置為false,每次應用啟動不檢查Activiti數據表是否存在及版本號是否匹配,以提升應用啟動速度
(2)spring.activiti.history-level
#保存歷史數據級別設置為full最高級別,便於歷史數據的追溯
spring.activiti.history-level=full
對於歷史數據,保存到何種粒度,Activiti提供了history-level屬性對其進行配置。history-level屬性有點像log4j的日志輸出級別,該屬性有以下四個值:
none:不保存任何的歷史數據,因此,在流程執行過程中,這是最高效的。
activity:級別高於none,保存流程實例與流程行為,其他數據不保存。
audit:除activity級別會保存的數據外,還會保存全部的流程任務及其屬性。audit為history的默認值。
full:保存歷史數據的最高級別,除了會保存audit級別的數據外,還會保存其他全部流程相關的細節數據,包括一些流程參數等。
(3)spring.activiti.check-process-definitions
#關閉activiti自動部署(使用流程設計器部署,不使用具體文件訪問方式) spring.activiti.check-process-definitions=false
6、集成在線流程設計器Activiti Modeler。
(1)pom文件添加activiti-modeler依賴。
<!-- https://mvnrepository.com/artifact/org.activiti/activiti-modeler --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-modeler</artifactId> <version>5.22.0</version> <exclusions> <exclusion> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-model</artifactId> </exclusion> </exclusions> </dependency>
(2)下載activiti5.22.0源碼https://github.com/Activiti/Activiti/tree/activiti-5.22.0。