2023最新版本Activiti7系列-整合SpringBoot

2023-07-24 19:14:18 浏览数 (2)

和SpringBoot项目整合

  首先我们来实现Activiti7和SpringBoot的整合。便于我们后续相关知识内容的讲解。我们在此处使用的环境版本是:

  • Activiti7:7.1.0.M2
  • SpringBoot:2.4.2
  • JDK的版本是:1.8

  要注意Activiti7和SpringBoot的版本要对应。不然会出现很多的错误。

具体的相关依赖如下:

代码语言:javascript复制
<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的基础配置

代码语言:javascript复制
# 应用服务 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来作为认证和授权的框架。我们暂时使用不到。可以排除掉。这块在启动类中排除即可

代码语言:javascript复制
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
public class Activiti7Demo01Application {

    public static void main(String[] args) {
        SpringApplication.run(Activiti7Demo01Application.class, args);
    }

}

然后通过单元测试检查效果如下

代码语言:javascript复制
@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);
        }
    }
}

看到如下的结果表示整合成功

0 人点赞