Spring Boot 集成 Activiti7(工作流引擎)完整版

Spring Boot 集成 Activiti7(工作流引擎)完整版

介绍

Activiti 是一个工作流引擎,它可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言 BPMN2.0 进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程由 Activiti 进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。(salvio修改)
升级新api (ProcessRuntime) 和(TaskRuntime)
官方网站:https://www.activiti.org/

API

工作量引擎

环境搭建

安装插件

File` -> `Settings` -> `Plugins` -> `Activiti BPMN visualizer

流程设计器

引入依赖

<dependencies>
    <!-- 引入Activiti7 -->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter</artifactId>
        <version>7.1.0.M4</version>
        <exclusions>
            <exclusion>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.activiti.dependencies</groupId>
        <artifactId>activiti-dependencies</artifactId>
        <version>7.1.0.M4</version>
        <type>pom</type>
    </dependency>
    <!-- 生成流程图 -->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-image-generator</artifactId>
        <version>7.1.0.M4</version>
    </dependency>
</dependencies>
1234567891011121314151617181920212223242526

配置文件

spring:
  # 数据源配置
  datasource:
  driver-class-name: com.mysql.cj.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/activiti?useUnicode=true&useSSL=false&serverTimezone=UTC&characterEncoding=UTF8&nullCatalogMeansCurrent=true
  username: "root"
  password: "88888888"
  type: com.zaxxer.hikari.HikariDataSource
  hikari:
    # 等待连接池分配连接的最大时间(毫秒),超过这个时长还没有可用的连接,则会抛出SQLException
    connection-timeout: 30000
    # 最小连接数
    minimum-idle: 5
    # 最大连接数
    maximum-pool-size: 20
    # 自动提交
    auto-commit: true
    # 连接超时的最大时长(毫秒),超时则会被释放(retired)
    idle-timeout: 600000
    # 连接池的名字
    pool-name: DataSourceHikariCP
    # 连接池的最大生命时长(毫秒),超时则会被释放(retired)
    max-lifetime: 18000000
  # activiti7配置
  activiti:
    # 自动部署验证设置:true-开启(默认)、false-关闭
    check-process-definitions: false
    # 保存历史数据
    history-level: full
    # 检测历史表是否存在
    db-history-used: true
    # 关闭自动部署
    deployment-mode: never-fail
    # 对数据库中所有表进行更新操作,如果表不存在,则自动创建
    # create_drop:启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)
    # drop-create:启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)
    database-schema-update: true
    # 解决频繁查询SQL问题
    async-executor-activate: false
123456789101112131415161718192021222324252627282930313233343536373839

初始化数据表

修改配置文件后,进行项目启动,项目启动成功会自动生成 25 张数据表,如下所示:

数据表

注意:7.1.0.M4 版本自动生成的表字段不全,所以还需运行如下SQL:

-- ----------------------------
-- 修复Activiti7的M4版本缺失字段Bug
-- ----------------------------
alter table ACT_RE_DEPLOYMENT add column PROJECT_RELEASE_VERSION_ varchar(255) DEFAULT NULL;
alter table ACT_RE_DEPLOYMENT add column VERSION_ varchar(255) DEFAULT NULL;
12345

数据表解读

Activiti 使用到的表都是 ACT_ 开头的,表名的第二部分表示用途。

  • ACT_GE_ (GE) 表示 general 全局通用数据及设置,各种情况都使用的数据。
  • ACT_HI_ (HI) 表示 history 历史数据表,包含着程执行的历史相关数据。
  • ACT_RE_ (RE) 表示 repository 存储,包含的是静态信息。
  • ACT_RU_ (RU) 表示 runtime 运行时,运行时的流程变量,用户任务,变量,职责(job)等运行时数据。Activiti 只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录 (salvio修改)

全局通用数据(ACT_GE_*)

表名 解释
ACT_GE_BYTEARRAY 二进制数据表,存储通用的流程定义和流程资源。
ACT_GE_PROPERTY 系统相关属性,属性数据表存储整个流程引擎级别的数据。

历史数据表(ACT_HI_*)

表名 解释
ACT_HI_ACTINST 历史节点表
ACT_HI_ATTACHMENT 历史附件表
ACT_HI_COMMENT 历史意见表
ACT_HI_DETAIL 历史详情表,提供历史变量的查询
ACT_HI_IDENTITYLINK 历史流程人员表
ACT_HI_PROCINST 历史流程实例表
ACT_HI_TASKINST 历史任务实例表
ACT_HI_VARINST 历史变量表

静态信息表(ACT_RE_*)

表名 解释
ACT_RE_DEPLOYMENT 部署信息表
ACT_RE_MODEL 流程设计模型部署表
ACT_RE_PROCDEF 流程定义数据表

运行数据(ACT_RU_*)

表名 解释
ACT_RU_DEADLETTER_JOB 无法执行工作表: 如果一个任务执行了很多次,都无法执行,那么这个任务会写到
ACT_RU_EVENT_SUBSCR 运行时事件 throwEvent、catchEvent 时间监听信息表
ACT_RU_EXECUTION 运行时流程执行实例
ACT_RU_IDENTITYLINK 运行时流程人员表,主要存储任务节点与参与者的相关信息
ACT_RU_INTEGRATION 运行时积分表
ACT_RU_JOB 运行时定时任务数据表
ACT_RU_SUSPENDED_JOB 暂停的工作,流程中有一个定时任务,如果把这个任务停止工作了,这个任务会在act_ru_suspended_job中写入数据
ACT_RU_TASK 运行时任务节点表
ACT_RU_TIMER_JOB 运行时定时器作业表
ACT_RU_VARIABLE 运行时流程变量数据表

其它表

表名 解释
ACT_EVT_LOG 事件日志
ACT_PROCDEF_INFO 流程定义的动态变更信息

快速入门

流程部署

流程部署方式分为两种:自动部署与手动部署

自动部署:将 bpmn 文件放入 resources 资源目录下的 processes 文件夹中,项目启动时则进行自动部署。(salvio修改)

spring:
  # activiti7配置
  activiti:
    # 自动部署验证设置:true-开启(默认)、false-关闭
    check-process-definitions: true
    # 保存历史数据
    history-level: full
    # 检测历史表是否存在
    db-history-used: true
    # 关闭SpringAutoDeployment
    deployment-mode: never-fail
    # 对数据库中所有表进行更新操作,如果表不存在,则自动创建
    database-schema-update: true
    # 解决频繁查询SQL问题
    async-executor-activate: false
123456789101112131415

手动部署:新建测试类,并编写流程部署测试方法。

自定流程
  1. 创建 *.bpmn20.xml 文件:New -> New Activity 6.x BPMN 2.x file
  2. 流程设计页面:选中 *.bpmn20.xml 文件,右键 view BPMN(Activity ) Diagram
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
  <process id="Part1_Deployment" name="Part1_Deployment" isExecutable="true">
    <startEvent id="sid-26d6e725-878e-411d-b23d-6df4ae3cbd24"/>
    <endEvent id="sid-03d64ced-963c-4506-a5b3-21b8a9dc4279"/>
    <userTask id
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值