Activiti6 升级到Activiti7注意事项
Activiti 6 和 Activiti 7 主要区别在于架构和使用的技术栈。Activiti 6 是基于 Spring 的 BPMN 工作流引擎,而 Activiti 7 是基于 Spring Boot 的 BPMN 工作流引擎,并使用了新的技术栈,如 Spring Cloud、Spring Cloud Stream 和 Spring Cloud Task。 Activiti 7 还加入了对 CMMN 和 DMN 标准的支持。具体activiti6和7的主要区别说清楚点儿就是表单和权限的差异。至于云部署我们的审批服务项目未涉及。
以我们审批服务为基线
· Activiti 7.1.0.M6
· Springboot 2.4.13
springboot集成activit7 .
1、activiti7版本7.1.0.M6
<dependency>
<groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artifactId> <version>7.1.0.M6</version> </dependency>
<dependency>
<groupId>org.activiti.dependencies</groupId> <artifactId>activiti-dependencies</artifactId> <version>7.1.0.M6</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.集成mybatis
mybatis:
mapper-locations:classpath:mapper/*Mapper.xml type-aliases-package: com.liurz.process.acitiviti7.entity
configuration:
map-underscore-to-camel-case: true
日志输出
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
- 操作说明
3.1 activiti7集成了SpringBootSecurity,禁用后以后老的API即可用 启动类:@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class}) 3.2mysql-connector-java版本大于8.0
3.3 activiit配置 spring: activiti: database-schema-update: true #是否每次都更新数据库:自动更新数据库结构 check-process-definitions : false # 默认为true --activti是否自动部署:自动检查、部署流程定义文件,就是在resource下的文件检查并部署;如果是false就不会自动部署 history-level: full #历史记录存储等级:full最高级别 db-history-used: true # activiti7增加的:默认不生成历史信息表,设置为true就生成历史信息表 process-defintition-location-prefix: classpath:/processes/ #实际流程存放的位置--流程定义文件存放目录 #定时事件配置 #启用作业执行器 async-executor-activate: true #启用异步执行器 job-executor-activate: true
4、Activiti7与SpringBoot整合后,默认情况下,集成了SpringSecurity安全框架,因为 Activiti7 与 SpringBoot 整合后,默认情况下,集成了 SpringSecurity 安全框架,这样我们就要去 准备 SpringSecurity 整合进来的相关用户权限配置信息。
可以查看一下整合 SpringBoot 的依赖包,发现同时也将 SpringSecurity 的依赖包也添加进项目中了

5、因为 Activiti7 与 SpringBoot 整合后,默认情况下,集成了 SpringSecurity 安全框架,这样我们就要去 准备 SpringSecurity 整合进来的相关用户权限配置信息。
可以查看一下整合 SpringBoot 的依赖包,发现同时也将 SpringSecurity 的依赖包也添加进项目中了,
5.1 添加 SecurityUtil 类
添加 SecurityUtil 类。 为了能够快速实现 SpringSecurity 安全框架的配置,所添加的一个组件。

5.2 添加 SecurityConfig 类
配置路由拦截策略 表单登录规则 注册规则 认证成功逻辑 ,认证失败逻辑。
本项目不涉及表单,故而不需引入;暂留备用;
5.3 启动类

6、启动实例

当然除此配置之外还需要更新的就是表:
不同点:activiti6是28张数据表,activiti7是25张,少了用户和组的三张表。相应的服务接口也少了俩:IdentityService和FormService。另外activiti7中对activiti6的API再次进行了封装,新增加了分布式和云部署的功能,核心没变
7、当数据库误升级到了activiti7.0还是可以回退的回退脚本如下
ALTER TABLE act_ru_task DROP COLUMN BUSINESS_KEY_, DROP COLUMN APP_VERSION_;
ALTER TABLE act_ru_execution DROP COLUMN APP_VERSION_;
ALTER TABLE act_re_procdef DROP COLUMN APP_VERSION_;
ALTER TABLE act_re_deployment DROP COLUMN VERSION_, DROP COLUMN PROJECT_RELEASE_VERSION_;
-- 更新act_ge_property表
update act_ge_property set VALUE_ = 'create(6.0.0.4)' WHERE NAME_ = 'schema.history';
update act_ge_property set VALUE_ = '6.0.0.4' WHERE NAME_ = 'schema.version';