SpringBoot整合Activiti7实现工作流审批

2,516 阅读2分钟

概述

Activiti是一个工作流引擎,Activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言(BPMN2.0)进行定义,业务系统按照预先定义的流程进行执行,实现了业务系统的业务流程由Activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量。

BPMN(Business Process Model And Notation)业务流程模型与符号。是由BPMI开发的一套标准的业务流程建模符号,使用BPMN提供的符号可以创建业务流程。

image.png

image.png

  1. startEvent:业务流程的开始事件
  2. user Task:业务流程审批岗位
  3. Gateways:Exclusive gateway排他网关、parallel gateway平行网关
  4. End Event:业务流程的结束事件

一、环境准备

JDKSpringBootActiviti
jdk-8u2112.3.6RELEASE7.1.0.M6

idea中安装插件BPMN visualizer image.png

二、项目结构

项目使用Maven构建,使用IntelliJ IDEA 2022.1.4开发,实现的主要功能点:流程节点创建部署、开启流程实例、流程节点审批、查询任务流程列表 image.png

Maven依赖

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter</artifactId>
    <version>7.1.0.M6</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.9</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

bootstrap.yml

server:
  port: 8084
spring:
  application:
    name: spring-activiti
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/study?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT
    username: root
    password: root
  jpa:
    show-sql: true
  activiti:
    history-level: full
    db-history-used: true
    check-process-definitions: true
    database-schema-update: false

三、接口代码实现

1. resource目录下新建测试审批流程.bpmn20.xml image.png 2. 使用插件打开bpmn视图编辑器,设置岗位名称、审批人。审批候选人等审批节点信息 image.png

微服务启动,Activiti7会根据配置信息自动创建25张数据库表,有些版本的Activiti是17张表,而在配置信息中:database-schema-update表示服务启动更新数据库操作

数据库表分三类:act_hi_为历史节点信息表;act_ru_为运行中任务信息表;其他的都是Activiti配置信息表

image.png

代码测试:

  1. 部署流程:部署成功,生成流程部署ID image.png
  2. 开启流程实例:流程实例ID是流程部署生成的,数据库表查询 image.png
  3. 审批流程任务 image.png
  4. 查询任务列表 image.png

四、小结

设置一个审批流程,并且可以将接口与页面结合使用,实现简单的基础功能,但是对于单行网关或者并行网关,流程中的信息参数初始化,可以单独定义初始化信息,后续补上,官方文档可参考学习:www.activiti.org/userguide/