和SpringBoot项目整合
首先我们来实现Activiti7和SpringBoot的整合。便于我们后续相关知识内容的讲解。我们在此处使用的环境版本是:
- Activiti7:7.1.0.M2
- SpringBoot:2.4.2
- JDK的版本是:1.8
要注意Activiti7和SpringBoot的版本要对应。不然会出现很多的错误。
具体的相关依赖如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- druid连接 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
然后我们需要在application.properties
中配置数据源和Activiti的基础配置
# 应用服务 WEB 访问端口
server.port=8080
# 配置Spring的数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/activiti7?characterEncoding=utf-8&nullCatalogMeansCurrent=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
# activiti的配置
#1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常
#2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建
#3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)
#4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)
spring.activiti.database-schema-update=true
# 检测历史表是否存在, Activiti7中默认是没有开启数据库历史记录的,启动数据库历史记录
spring.activiti.db-history-used=true
#记录历史等级 可配置的历史级别有none, activity, audit, full
#none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
#activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
#audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
#full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
spring.activiti.history-level=full
# 校验流程文件,默认校验resouces下的 process 文件夹里的流程文件
spring.activiti.check-process-definitions=false
在Activiti7中内置了SpringSecurity
来作为认证和授权的框架。我们暂时使用不到。可以排除掉。这块在启动类中排除即可
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
public class Activiti7Demo01Application {
public static void main(String[] args) {
SpringApplication.run(Activiti7Demo01Application.class, args);
}
}
然后通过单元测试检查效果如下
@SpringBootTest(classes = Activiti7Demo01Application.class)
public class SpringBootTest01 {
@Autowired
private ProcessEngine processEngine;
@Test
public void test1(){
TaskService taskService = processEngine.getTaskService();
List<Task> list = taskService.createTaskQuery().list();
for (Task task : list) {
System.out.println(task);
}
}
}
看到如下的结果表示整合成功