Spring Boot 集成 Activiti7(7.20)
一、集依赖
在具体的业务子模块(vehicle-cove-business)的 pom.xml 中引入 Activiti7 的依赖
<!--添加activiti和SpringBoot整合的依赖
MyBatis版本会有冲突,所以需要排除-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.0.0.SR1</version>
<exclusions>
<exclusion>
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
</exclusions>
</dependency>
<!--activiti可以绘制流程的的依赖-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-image-generator</artifactId>
<version>7.0.0.SR1</version>
</dependency>
二、配置application.yml配置文件
在application.yml配置文件中添加Activiti7的配置信息
spring:
activiti:
database-schema-update: true
db-history-used: true
history-level: full
check-process-definitions: false
use-strong-uuids: false
-
database-schema-update属性
1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常 2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建 3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表) 4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎) -
db-history-used
检测历史表是否存在 activiti7默认没有开启数据库历史记录,true启动数据库历史记录 -
history-level
#记录历史等级 可配置的历史级别有none, activity, audit, full 1.none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。 2.activity:级别高于none,保存流程实例与流程行为,其他数据不保存。 3.audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。 4.full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。 -
check-process-definitions
#校验流程文件,默认校验resources下的processes文件夹里的流程文件 -
use-strong-uuids
是否使用UUID作为主键生成策略
三、解决冲突
(1)解决 Spring Bean 定义冲突
由于 Activiti7 内部自带了一套 Spring Security 配置,而若依(RuoYi)等基础框架本身也包含完善的安全配置,两者同时加载时会导致同名的 Bean(如 methodSecurityInterceptor)在 Spring 容器中发生冲突。
解决方案:在 application.yml 中开启允许 Bean 覆盖的配置,允许后加载的 Bean 覆盖先加载的同名 Bean。
spring:
main:
allow-bean-definition-overriding: true
(2)解决 MySQL 8.x 驱动导致的自动建表失败问题
在 MySQL 8.x 版本的驱动中,Activiti 启动时默认会扫描整个 MySQL 服务器上所有数据库的元数据。如果检测到任意一个库中已经存在 ACT_ 开头的表,Activiti 就会误判“表已存在”,从而跳过自动建表逻辑。这会导致当前连接的数据库中因缺少表而报 Table doesn't exist 错误。
解决方案:在数据库连接 URL 中追加 nullCatalogMeansCurrent=true 参数。
该参数会限制驱动只查询当前连接的数据库(Schema),确保 Activiti 能准确判断当前库是否需要自动建表。
浙公网安备 33010602011771号