版本
-
SpringCloud (或 SpringBoot)
-
Activiti 6.0.0
集成步骤
- Activiti 为SpringCloud/SpringBoot提供了开箱即用的Starter,只需要在pom中引用即可。
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
- 修改yml配置文件,添加Acticity相关配置
spring:
activiti:
check-process-definitions: false # 默认不检查process资源文件
database-schema-update: true # 自动更新数据库
history-level: full # 历史记录级别
db-history-used: true # 是否记录历史
- 启动Boot的Application类,理论上会自动创建act_打头的数据库表,即为集成成功。
坑点
- 与SpringSecurity冲突
如果项目内使用的是SpringSecurity作为安全框架,Activiti内也自己集成了这个,需要在启动类上排除一个
import org.activiti.spring.boot.SecurityAutoConfiguration;
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
- 与mybaits冲突
如果项目原本就使用mybaits持久化,也可能会与activiti冲突,表现为:
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location: org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:564)
The following method did not exist:
org.apache.ibatis.session.Configuration.setDefaultEnumTypeHandler(Ljava/lang/Class;)V
The method's class, org.apache.ibatis.session.Configuration, is available from the following locations: jar:file:/C:/Users/pactera/.m2/repository/org/mybatis/mybatis/3.4.2/mybatis-3.4.2.jar!/org/apache/ibatis/session/Configuration.class
The class hierarchy was loaded from the following locations:
org.apache.ibatis.session.Configuration:file:/C:/Users/pactera/.m2/repository/org/mybatis/mybatis/3.4.2/mybatis-3.4.2.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of org.apache.ibatis.session.Configuration
解决办法是在引用Activiti时排除其自身带的包
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>${activiti.version}</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
<!-- <exclusion>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
</exclusion>-->
</exclusions>
</dependency>
- el-api 冲突:原理与上面类似,排除包即可
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>${activiti.version}</version>
<exclusions>
<exclusion>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
</exclusion>
</exclusions>
</dependency>
- 不自动建表
理论上初次启动SpringBootApplication时会自动创建表,但是Oracle试了好像不可以,不自动创建的话自己手动去源码包里运行下脚本