Activiti7 整合SpringBoot

创建SpringBoot项目:

导入activiti依赖:

由于activiti7是使用mybatis作为orm框架,我这里整合mybatis-plus,所以需要抛出mybatis

java 复制代码
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter</artifactId>
            <version>7.1.0.M6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-image-generator</artifactId>
            <version>7.1.0.M6</version>
        </dependency>

        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>

导入mybatis-plus依赖:

mysql不能忘记!!!

java 复制代码
        <!--mysql连接-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        
        <!--mybatis-plus依赖包-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>

配置:

java 复制代码
server:
  port: 8080
spring:
  output:
    ansi:
      enabled: always #启用ansi颜色输出
  datasource:
    url: jdbc:mysql://localhost:3306/activiti2?useUnicode=true&;characterEncoding=utf8&;zeroDateTimeBehavior=convertToNull&;useSSL=true&;serverTimezone=GMT%2B8&;nullCatalogMeansCurrent=true
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  activiti:
    database-schema-update: true
    history-level: full
    check-process-definitions: false #是否检查resources/processes 目录
    db-history-used: true #是否创建history表
复制代码
database-schema-update 配置项可以设置流程引擎启动和关闭时数据库执行的策略,有以下四个选项:

false:false为默认值,设置该值,Activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,这需要手动创建。

true:设置为该值后,Activiti会对数据库中所有的表进行更新,如果表不存在,则Activiti会自动创建。

create-dorp:Activiti启动时,会执行数据库表的创建操作,在Activiti关闭时,执行数据库表的删除操作。

dorp-create:Activiti启动时,执行数据库表的删除操作,在Activiti关闭时,会执行数据库表的创建操作。

复制代码
history-level 对于历史数据,保存到何种粒度,Activiti提供了history-level属性对其进行配置,有以下是个选项

none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。

activity:级别高于none,保存流程实例与流程行为,其他数据不保存。

audit:除activit级别会保存在数据外,还会保存全部的流程任务及其属性。audit为history的默认值。

full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关细节数据

复制代码
db-history-used 为true表示使用历史表,如果不匹配,则工程启动后可以检查数据库,只建立了17张表,历史表没有建立

测试部署:

java 复制代码
@SpringBootTest
class ActivitiBootApplicationTests {

    @Autowired
    RepositoryService repositoryService;

    @Autowired
    TaskService taskService;

    @Test
    void contextLoads() {
//        repositoryService.createDeploymentQuery().list().forEach(e->repositoryService.deleteDeployment(e.getId(),true));
        Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource("processes/MyDaleave-01.bpmn20.xml")
                .name("请假流程")
                .deploy();
        System.out.println("deployment.getId() = " + deployment.getId());
        System.out.println("deployment.getName() = " + deployment.getName());
    }


}
相关推荐
秋天的怀念_David8 分钟前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas10021 分钟前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin1 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
霸道流氓气质1 小时前
智能客服组件:分层意图识别、RAG Advisor 与人工转接状态机的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
captain3762 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你02142 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
步行cgn3 小时前
Spring MVC + Thymeleaf 模板解析失败:从 500 错误到页面正常显示
java·spring·mvc
lgcgkCQ3 小时前
【AI 转型实战 1】SpringAI 入门:搭建基础大模型对话能力
java·ai·agent·rag·spring ai·mcp·langchain4j
Wang's Blog4 小时前
Java 项目实战:交友项目 - 用户体系集成总结
java·开发语言·交友
学到老活到老4 小时前
第 24 集:配置文件写了 80,Spring Boot 为什么读到 90?
java·后端·spring