springboot+activiti工作流的搭建

目录

activiti工作流的搭建

项目搭建

新建启动类文件并配置


activiti工作流的搭建

项目搭建

pom.xml依赖
因为上面引入了mybatis-plus 而activiti内部包含mybatis,所以引入activit引擎依赖时需排除mybatis否则会导致项目报错

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>org.example.activiti</groupId>
    <artifactId>ttoa</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.4</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!-- thymeleaf和springSecurity的扩展依赖-->
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity5</artifactId>
        </dependency>

        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.4.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>

        <!-- mybatis-plus代码生成器依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.1.2</version>
        </dependency>

        <!-- 默认模板引擎 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.1</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.1.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>25.1-jre</version>
        </dependency>
        <!-- easypoi导入导出依赖 -->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>4.4.0</version>
        </dependency>

        <!-- 远程操作服务器 -->
        <!-- jsch依赖 -->
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.55</version>
        </dependency>

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
            </exclusions>
            <version>7.0.0.SR1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-core</artifactId>
            <version>1.28.4</version>
        </dependency>

        <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-words</artifactId>
            <version>15.8.0</version>
            <scope>system</scope>
            <!--路径是aspose-words-15.8.0-jdk16包放的路径-->
            <systemPath>${project.basedir}/src/main/resources/lib/aspose-words-15.8.0-jdk16.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-cells</artifactId>
            <version>9.0.0</version>
            <scope>system</scope>
            <!--路径是aspose-cells-9.0.0.jar包放的路径-->
            <systemPath>${project.basedir}/src/main/resources/lib/aspose-cells-9.0.0.jar</systemPath>
        </dependency>

        <!-- 数据库session管理依赖 -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.54</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-image-generator</artifactId>
            <version>5.19.0</version>
        </dependency>
        <!-- Activiti modeler 可视化依赖 -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-modeler</artifactId>
            <version>5.23.0</version>
        </dependency>

        <!-- Activity6 集成 Modeler 需要 jar 包 -->
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-all</artifactId>
            <version>1.10</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-codec</artifactId>
            <version>1.8</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-json-converter</artifactId>
            <version>6.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.5.4</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.6.3</version>
        </dependency>

        <!--httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
            <version>4.4.0</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <defaultGoal>package</defaultGoal>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <!-- 如果加了上面的配置,必须加入这个配置,不然resources目录下的东西不会进编译目录 -->
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                    <!-- 指定该Main Class为全局的唯一入口 -->
                    <mainClass>com.example.ActivitiApplication</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>9</source>
                    <target>9</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

新建启动类文件并配置

启动时排除spring security否则会带来登录的问题

@SpringBootApplication(
        exclude = {
                org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
                org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class
        }
)
@EnableTransactionManagement // 启用注解式事务管理
@MapperScan("com.example.db.dao")
@EnableKnife4j
public class ActivitiApplication {

    public static void main(String[] args) {
        SpringApplication.run(ActivitiApplication.class,args);
        System.out.println("springboot启动成功!");
    }
}

配置application.yml
记得加 main:
allow-bean-definition-overriding: true
否则启动会报错The bean ‘methodSecurityInterceptor’, defined in class path resource [org/activiti/spring/boot/MethodSecurityConfig.class], could not be registered.
history-level:full对应的是历史记录保存到何种粒度

spring:
  #缓存
  cache:
    type: caffeine
  jmx:
    #关闭jmx,因为用不到
    enabled: false
  mvc:
    async:
      #接口访问超时时间
      request-timeout: 5000
  jackson:
    #设置时区
    time-zone: GMT+8
  activiti:
    database-schema-update: true
    # 自动部署验证设置:true-开启(默认)、false-关闭
    check-process-definitions: false
    db-history-used: true
    history-level: full
  main:
    allow-bean-definition-overriding: true
  application:
    name: platform
  profiles:
    active:
      - local
  lifecycle:
    #设置缓冲期,最大等待时间
    timeout-per-shutdown-phase: 30s
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB

集成activiti-modeler
activiti-modeler作为一个提供画流程图的工具,所以我们需将activiti-modeler引入进项目,也便于后续解决activiti每次部署流程图新增的问题。
集成activiti-modler可以参考https://blog.csdn.net/h1059141989/article/details/79870043

这样项目就集成了activit-modeler并能成功跑起来,启动成功后会自动生成actviti所用到的表。

表结构及注释请参考https://www.devdoc.cn/tag/activiti

审批/驳回/部署/分配任务至个人以及脚本请看后面的文章

### Spring Boot集成Activiti工作流的数据库表结构设计 在Spring Boot项目中集成了Activiti工作流引擎之后,会自动生成一系列用于管理流程定义、实例以及历史记录等数据的表格。这些表格的设计遵循了Activiti工作流模型需求。 #### 流程定义相关表 - **ACT_RE_DEPLOYMENT**:部署信息表,存储每次部署的内容及其元数据[^1]。 | 字段名 | 类型 | 描述 | |-------------------|--------------|--------------------| | ID_ | varchar(64) | 主键ID | | NAME_ | varchar(255) | 部署名称 | | DEPLOY_TIME_ | datetime | 部署时间 | - **ACT_RE_PROCDEF**:流程定义表,保存所有已发布的BPMN文件对应的流程定义详情。 | 字段名 | 类型 | 描述 | |--| | ID_ | varchar(64) | 唯一标识符 | | REV_ | int | 版本号 | | KEY_ | varchar(255) | 流程定义key | | VERSION_ | int | 流程版本 | | DEPLOYMENT_ID_ | varchar(64) | 所属部署ID | #### 运行时对象相关表 - **ACT_RU_EXECUTION**:执行实例表,表示当前正在运行中的流程实例或子过程实例的状态信息。 | 字段名 | 类型 | 描述 | |--|--------------------------| | ID_ | varchar(64) | 实例唯一标识符 | | PROC_INST_ID_ | varchar(64) | 关联的流程实例ID | | BUSINESS_KEY_ | varchar(255)| 业务关键字 | | PARENT_ID_ | varchar(64) | 上级执行实例ID | - **ACT_RU_TASK**:任务节点表,用来跟踪待办事项列表中的个人任务项。 | 字段名 | 类型 | 描述 | |---------------------------|------------|----------------------------| | ID_ | varchar(64)| 任务唯一标识符 | | EXECUTION_ID_ | varchar(64)| 对应的执行实例ID | | TASK_DEF_KEY_ | varchar(255)| BPMN图上的任务节点Key | | ASSIGNEE_ | varchar(255)| 负责人 | #### 历史记录相关表 当`history-level`设置为full时,在完成活动后将会把所有的事件都记录下来并存入到历史表里[^3]。 - **ACT_HI_ACTINST**:动作实例的历史记录表,记录每一个已完成的动作实例的信息。 | 字段名 | 类型 | 描述 | |--|-------------|------------------------------| | ID_ | varchar(64) | 动作实例唯一标识符 | | PROC_INST_ID_ | varchar(64) | 流程实例ID | | ACT_ID_ | varchar(255)| 当前处于哪个具体环节 | | START_TIME_ | datetime | 开始时间 | | END_TIME_ | datetime | 结束时间 | - **ACT_HI_VARINST**:变量实例的历史记录表,追踪在整个生命周期内发生的任何变化量的情况。 | 字段名 | 类型 | 描述 | |--|-------------|----------------------------------| | ID_ | varchar(64) | 变量实例唯一标识符 | | PROC_INST_ID_ | varchar(64) | 流程实例ID | | VAR_NAME_ | varchar(255)| 变量的名字 | | TEXT_VALUE_ | text | 文本类型的值 | 以上就是Spring Boot集成Activiti工作流所涉及的主要数据库表结构概述。通过合理的配置和使用,可以有效地支持复杂的企业级应用开发。 ```sql SELECT * FROM act_re_deployment; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值