springboot2.12集成Activiti5.22
工作中遇到项目业务中有复杂的流程体系,于是考虑引入工作流。对比了几款开源工作流引擎,最终选择activiti。在版本选择上选择了比较稳定用的最多的5.22版本。6.0版本以后对activiti进行重构,用法变化较大,以后有机会再研究。
activiti 5.22 集成springboot2.2.1
前提:项目已有web服务基础,可以对外提供restful接口,并能查询MySQL数据库获取数据。
1、引入activiti5.22依赖包,只需要这一个包
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>5.22</version>
</dependency>
若是新起服务,无web服务基础和MySQL数据库查询则还需引入以下依赖包:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
2、增加application.properties配置
#自动检查、部署流程定义文件
spring.activiti.check-process-definitions=false
3、增加activiti配置文件
@Component
public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {
@Override
public void configure(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
springProcessEngineConfiguration.setActivityFontName("宋体");
springProcessEngineConfiguration.setLabelFontName("宋体");
springProcessEngineConfiguration.setAnnotationFontName("宋体");
springProcessEngineConfiguration.setDbIdentityUsed(true);
springProcessEngineConfiguration.setDatabaseSchemaUpdate("true");
}
}
其中, springProcessEngineConfiguration.setDbIdentityUsed(true); 如果使用工作流自带用户表结构则需要设置为true,否则,不会生成工作流相关用户表。
4、启动服务
服务启动时会去检查工作流相关表是否存在,若不存在则创建。
若启动时报错,显示工作流相关表不存在,但自己当前库里确实没有这些表,则因为你可能在当前数据库服务器下某个库中已经创建了相关表。只需将已经创建的相关表备份删除再次启动服务即可。
打开数据库发现已新增28张表:
则springboot2.12与Activiti5.22就集成好了。工作流一个很核心的就是业务流程图绘制,后续文档将集成在线流程图绘制工具,请持续关注。
5、结论
本来觉得activiti发展这么久,找个教程集成到springboot应该很简单,没想到实际却花了大半天时间。本文参考几篇文章,经过亲自尝试,汇总如上,仅做记录,供后续翻找用,以节约时间。
6、参考文章