SpringBoot 整合Activiti 7.X 从入门到精通 您所在的位置:网站首页 项目集成使用Activiti工作流API完全使用详解 SpringBoot 整合Activiti 7.X 从入门到精通

SpringBoot 整合Activiti 7.X 从入门到精通

2024-04-16 15:45| 来源: 网络整理| 查看: 265

简介

  Activiti 是一个轻量级工作流程和业务流程管理 (BPM) 平台,面向业务人员、开发人员和系统管理员。其核心是一个超快且坚如磐石的 Java BPMN 2 流程引擎。它是开源的,并根据 Apache 许可证分发。Activiti 可以在任何 Java 应用程序、服务器、集群或云中运行。它与 Spring 完美集成,非常轻量级并且基于简单的概念。

Idea 设计器

绘制一个简单流程图

SpringBoot整合Activiti 7.X 添加依赖 org.activiti activiti-spring-boot-starter 7.0.0.GA org.mybatis mybatis mysql mysql-connector-java

完整依赖

4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.5 com.ybchen ybchen-activiti7 0.0.1-SNAPSHOT ybchen-activiti7 SpringBoot 整合Activiti 7.X 1.8 org.springframework.boot spring-boot-starter-web org.projectlombok lombok org.springframework.boot spring-boot-starter-test org.activiti activiti-spring-boot-starter 7.0.0.GA org.mybatis mybatis mysql mysql-connector-java com.baomidou mybatis-plus-boot-starter 3.4.0 org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok pom.xml 配置类 server.port=18080 # 数据库链接信息 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/activiti?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=rootroot # 配置mybatis plus打印sql日志 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl # activiti配置 ## 检测历史表是否存在 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 ## 1.false:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常 ## 2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建 ## 3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表) ## 4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎) spring.activiti.database-schema-update=true # 校验流程文件,默认校验resources下的processes文件夹里的流程文件 spring.activiti.check-process-definitions=false

启动类 package com.ybchen; import org.springframework.boot.SpringApplication; import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; @SpringBootApplication(exclude = { //activiti 默认整合security,屏蔽Security认证 SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class }) public class ActivitiApplication { public static void main(String[] args) { SpringApplication.run(ActivitiApplication.class, args); } }

 

Activiti表介绍

Activiti 的表都以 ACT_ 开头。

Activiti 使用到的表都是 ACT_ 开头的。表名的第二部分用两个字母表明表的用途。

ACT_GE_ (GE) 表示 general 全局通用数据及设置,各种情况都使用的数据。 ACT_HI_ (HI) 表示 history 历史数据表,包含着程执行的历史相关数据,如结束的流程实例,变量,任务,等等 ACT_ID_ (ID) 表示 identity 组织机构,用户记录,流程中使用到的用户和组。这些表包含标识的信息,如用户,用户组,等等。 ACT_RE_ (RE) 表示 repository 存储,包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。 ACT_RU_ (RU) 表示 runtime 运行时,运行时的流程变量,用户任务,变量,职责(job)等运行时的数据。Activiti 只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。 数据表介绍

表分类

表名

解释

一般数据

 

 

 

[ACT_GE_BYTEARRAY]

二进制数据表,存储通用的流程定义和流程资源。

 

[ACT_GE_PROPERTY]

系统相关属性,属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录。

流程历史记录

 

 

 

[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_DEPLOYMENT]

部署单元信息

 

[ACT_RE_MODEL]

模型信息

 

[ACT_RE_PROCDEF]

已部署的流程定义

运行实例表

 

 

 

[ACT_RU_EVENT_SUBSCR]

运行时事件

 

[ACT_RU_EXECUTION]

运行时流程执行实例

 

[ACT_RU_IDENTITYLINK]

运行时用户关系信息,存储任务节点与参与者的相关信息

 

[ACT_RU_JOB]

运行时作业

 

[ACT_RU_TASK]

运行时任务

 

[ACT_RU_VARIABLE]

运行时变量表

act_ge_bytearray 二进制数据表,存储通用的流程定义和流程资源

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

Y

 

主键ID

REV_

乐观锁

int

 

Y

Version(版本)

NAME_

名称

nvarchar(255)

 

Y

部署的文件名称,如:leave.bpmn.png,leave.bpmn20.xml

DEPLOYMENT_ID_

部署ID

nvarchar(64)

 

Y

部署表ID

BYTES_

字节

varbinary(max)

 

Y

部署文件

GENERATED_

是否是引擎生成

tinyint

 

Y

0为用户生成,1为activiti生成

act_ge_property 属性数据表:属性数据表。存储整个流程引擎级别的数据。

字段名称

字段描述

数据类型

主键

为空

取值说明

NAME_

名称

nvarchar(64)

   

VALUE_

nvarchar(300)

 

5.create(5.)

REV_

乐观锁

int

 

version

act_hi_actinst 历史节点表:历史活动信息。这里记录流程流转过的所有节点,与HI_TASKINST不同的是,taskinst只记录usertask内容

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

   

PROC_DEF_ID_

流程定义ID

nvarchar(64)

     

PROC_INST_ID_

流程实例ID

nvarchar(64)

     

EXECUTION_ID_

执行实例ID

nvarchar(64)

     

ACT_ID_

节点ID

nvarchar(225)

   

节点定义ID

TASK_ID_

任务实例ID

nvarchar(64)

 

任务实例ID 其他节点类型实例ID在这里为空

CALL_PROC_INST_ID_

调用外部的流程实例ID

nvarchar(64)

 

调用外部流程的流程实例ID’

ACT_NAME_

节点名称

nvarchar(225)

 

节点定义名称

ACT_TYPE_

节点类型

nvarchar(225)

   

如startEvent、userTask

ASSIGNEE_

签收人

nvarchar(64)

 

节点签收人

START_TIME_

开始时间

datetime

     

END_TIME_

结束时间

datetime

 

 

DURATION_

耗时

numeric(19,0)

 

毫秒值

DELETE_REASON_

 

nvarchar(4000)

     

TENANT_ID_

 

nvarchar(225)

      act_hi_attachment 历史附件表

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

主键ID

REV_

乐观锁

integer

 

Version

USER_ID_

用户ID

nvarchar(255)

 

用户ID

NAME_

名称

nvarchar(255)

 

附件名称

DESCRIPTION_

描述

nvarchar(4000)

 

描述

TYPE_

类型

nvarchar(255)

 

附件类型

TASK_ID_

任务实例ID

nvarchar(64)

 

节点实例ID

PROC_INST_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

URL_

URL_

nvarchar(4000)

 

附件地址

CONTENT_ID_

字节表的ID

nvarchar(64)

 

ACT_GE_BYTEARRAY的ID

TIME_

 

datetime

 

  act_hi_comment 历史意见表

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

主键ID

TYPE_

类型

nvarchar(255)

 

类型:event(事件)comment(意见)

TIME_

时间

datetime

   

填写时间’

USER_ID_

用户ID

nvarchar(64)

 

填写人

TASK_ID_

节点任务ID

nvarchar(64)

 

节点实例ID

PROC_INST_ID_

流程实例ID

nvarchar(255)

 

流程实例ID

ACTION_

行为类型

nvarchar(64)

 

见备注1

MESSAGE_

基本内容

nvarchar(4000)

 

用于存放流程产生的信息,比如审批意见

FULL_MSG_

全部内容

varbinary(max)

 

附件地址

act_hi_detail  历史详情表:流程中产生的变量详细,包括控制流程流转的变量,业务表单中填写的流程需要用到的变量等。

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

主键

TYPE_

类型

nvarchar(255)

   

见备注2

PROC_INST_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

EXECUTION_ID_

执行实例ID

nvarchar(64)

 

执行实例ID

TASK_ID_

任务实例ID

nvarchar(64)

 

任务实例ID

ACT_INST_ID_

节点实例ID

nvarchar(64)

 

ACT_HI_ACTINST表的ID

NAME_

名称

nvarchar(255)

   

名称

VAR_TYPE_

参数类型

nvarchar(255)

 

见备注3

REV_

乐观锁

int

 

Version

TIME_

时间戳

datetime

   

创建时间

BYTEARRAY_ID_

字节表ID

nvarchar

 

ACT_GE_BYTEARRAY表的ID

DOUBLE_

DOUBLE_

double precision

 

存储变量类型为Double

LONG_

LONG_

numeric

 

存储变量类型为long

TEXT_

TEXT_

nvarchar

 

存储变量值类型为String

TEXT2_

TEXT2_

nvarchar

 

此处存储的是JPA持久化对象时,才会有值。此值为对象ID

act_ru_identitylink  历史流程人员表:任务参与者数据表。主要存储历史节点参与者的信息

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

ID_

GROUP_ID_

组ID

nvarchar(255)

 

组ID

TYPE_

类型

nvarchar(255)

 

备注4

USER_ID_

用户ID

nvarchar(255)

 

用户ID

TASK_ID_

节点实例ID

nvarchar(64)

 

节点实例ID

PROC_INST_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

act_hi_procinst 历史流程实例表

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

主键ID

PROC_INST_ID_

流程实例ID

nvarchar(64)

   

流程实例ID

BUSINESS_KEY_

业务主键

nvarchar(255)

 

业务主键,业务表单的ID

PROC_DEF_ID_

流程定义ID

nvarchar(64)

   

流程定义ID

START_TIME_

开始时间

datetime

   

开始时间

END_TIME_

结束时间

datetime

 

结束时间

DURATION_

耗时

Numeric(19)

 

耗时

START_USER_ID_

起草人

nvarchar(255)

 

起草人

START_ACT_ID_

开始节点ID

nvarchar(255)

 

起草环节ID

END_ACT_ID_

结束节点ID

nvarchar(255)

 

结束环节ID

SUPER_PROCESS_INSTANCE_ID_

父流程实例ID

nvarchar(64)

 

父流程实例ID

DELETE_REASON_

删除原因

nvarchar(4000)

 

删除原因

TENANT_ID_

 

nvarchar(255)

     

NAME_

 

nvarchar(255)

      act_hi_taskinst 历史任务实例表

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

主键ID

PROC_DEF_ID_

流程定义ID

nvarchar(64)

 

流程定义ID

TASK_DEF_KEY_

节点定义ID

nvarchar(255)

 

节点定义ID

PROC_INST_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

EXECUTION_ID_

执行实例ID

nvarchar(64)

 

执行实例ID

NAME_

名称

varchar(255)

 

名称

PARENT_TASK_ID_

父节点实例ID

nvarchar(64)

 

父节点实例ID

DESCRIPTION_

描述

nvarchar(400)

 

描述

OWNER_

实际签收人 任务的拥有者

nvarchar(255)

 

签收人(默认为空,只有在委托时才有值)

ASSIGNEE_

签收人或被委托

nvarchar(255)

 

签收人或被委托

START_TIME_

开始时间

datetime

   

开始时间

CLAIM_TIME_

提醒时间

datetime

 

提醒时间

END_TIME_

结束时间

datetime

 

结束时间

DURATION_

耗时

numeric(19)

 

耗时

DELETE_REASON_

删除原因

nvarchar(4000)

 

删除原因(completed,deleted)

PRIORITY_

优先级别

int

 

优先级别

DUE_DATE_

过期时间

datetime

 

过期时间,表明任务应在多长时间内完成

FORM_KEY_

节点定义的formkey

nvarchar(255)

 

desinger节点定义的form_key属性

CATEGORY_

 

varchar(255)

 

 

TENANT_ID_

 

varchar(255)

 

  act_hi_varinst 历史变量表

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

ID_

PROC_INST_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

EXECUTION_ID_

执行实例ID

nvarchar(255)

 

执行实例ID

TASK_ID_

任务实例ID

nvarchar(64)

 

任务实例ID

NAME_

名称

nvarchar(64)

   

参数名称(英文)

VAR_TYPE_

参数类型

varchar(255)

 

备注5

REV_

乐观锁

nvarchar(64)

 

乐观锁 Version

BYTEARRAY_ID_

字节表ID

nvarchar(400)

 

ACT_GE_BYTEARRAY表的主键

DOUBLE_

DOUBLE_

nvarchar(255)

 

存储DoubleType类型的数据

LONG_

LONG_

nvarchar(255)

 

存储LongType类型的数据

TEXT_

TEXT_

datetime

 

备注6

TEXT2_

TEXT2_

datetime

 

此处存储的是JPA持久化对象时,才会有值。此值为对象ID

CREATE_TIME_

 

datetime

     

LAST_UPDATED_TIME_

 

datetime

      act_re_deployment  部署信息表:部署流程定义时需要被持久化保存下来的信息。

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

主键ID

NAME_

部署名称

nvarchar(255)

 

部署文件名

CATEGORY_

分类

nvarchar(255)

 

类别

KEY_

         

TENANT_ID_

         

DEPLOY_TIME_

部署时间

datetime

 

部署时间

ENGINE_VERSION_

          act_re_model 流程设计模型部署表:流程设计器设计流程后,保存数据到该表。

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

ID_

REV_

乐观锁

int

 

乐观锁

NAME_

名称

nvarchar(255)

 

名称

KEY_

KEY_

nvarchar(255)

 

key

CATEGORY_

分类

nvarchar(255)

 

分类

CREATE_TIME_

创建时间

datetime

 

创建时间

LAST_UPDATE_TIME_

最新修改时间

datetime

 

最新修改时间

VERSION_

版本

int

 

版本

META_INFO_

META_INFO_

nvarchar(255)

 

以json格式保存流程定义的信息

DEPLOYMENT_ID_

部署ID

varchar(64)

 

部署ID

EDITOR_SOURCE_VALUE_ID_

 

varchar(64)

 

 

EDITOR_SOURCE_EXTRA_VALUE_ID_

 

varchar(64)

 

 

TENANT_ID_

 

varchar(255)

      act_re_procdef  流程定义数据表:业务流程定义数据表。此表和 ACT_RE_DEPLOYMENT 是多对一的关系,即,一个部署的bar包里可能包含多个流程定义文件,每个流程定义文件都会有一条记录在 ACT_REPROCDEF 表内,每个流程定义的数据,都会对于 ACT_GE_BYTEARRAY 表内的一个资源文件和 PNG 图片文件。和 ACT_GE_BYTEARRAY 的关联是通过程序用ACT_GE_BYTEARRAY.NAME 与 ACT_RE_PROCDEF.NAME 完成的,在数据库表结构中没有体现。

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

ID_

REV_

乐观锁

int

 

乐观锁

CATEGORY_

分类

nvarchar(255)

 

流程定义的Namespace就是类别

NAME_

名称

nvarchar(255)

 

名称

KEY_

定义的KEY

nvarchar(255)

   

流程定义ID

VERSION_

版本

int

   

版本

DEPLOYMENT_ID_

部署表ID

nvarchar(64)

 

部署表ID

RESOURCE_NAME_

bpmn文件名称

nvarchar(4000)

 

流程bpmn文件名称

DGRM_RESOURCE_NAME_

png图片名称

nvarchar(4000)

 

流程图片名称

DESCRIPTION_

描述

nvarchar(4000)

 

描述

HAS_START_FORM_KEY

是否存在开始节点formKey

tinyint

 

start节点是否存在formKey 0否 1是

SUSPENSION_STATE_

是否挂起

tinyint

 

1 激活 2挂起

HAS_GRAPHICAL_NOTATION_

 

tinyint

 

 

TENANT_ID_

 

varchar(255)

     

ENGINE_VERSION_

 

varchar(255)

      act_ru_deadletter_job

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

varchar(64)

 

ID_

REV_

 

int

     

TYPE_

 

varchar(255)

 

 

EXCLUSIVE_

 

tinyint(1)

 

 

EXECUTION_ID_

 

varchar(64)

 

 

PROCESS_INSTANCE_ID_

 

varchar(64)

 

 

PROC_DEF_ID_

 

varchar(64)

 

 

EXCEPTION_STACK_ID_

 

varchar(64)

 

 

EXCEPTION_MSG_

 

varchar(4000)

 

 

DUEDATE_

 

timestamp

 

 

REPEAT_

 

varchar(255)

 

 

HANDLER_TYPE_

 

varchar(255)

 

 

HANDLER_CFG_

 

varchar(4000)

 

 

TENANT_ID_

 

varchar(255)

 

  act_ru_event_subscr

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

事件ID

nvarchar(64)

 

事件ID

REV_

版本

int

 

乐观锁Version

EVENT_TYPE_

事件类型

nvarchar(255)

   

事件类型

EVENT_NAME_

事件名称

nvarchar(255)

 

事件名称

EXECUTION_ID_

执行实例ID

nvarchar(64)

 

执行实例ID

PROC_INST_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

ACTIVITY_ID_

活动实例ID

nvarchar(64)

 

活动实例ID

CONFIGURATION_

配置

nvarchar(255)

 

配置

CREATED_

是否创建

datetime

   

默认值 当前系统时间戳CURRENT_TIMESTAMP

PROC_DEF_ID_

 

varchar(64)

 

 

TENANT_ID_

 

varchar(255)

 

  act_ru_execution 运行时流程执行实例表

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

事件ID

nvarchar(64)

 

事件ID

REV_

版本

int

 

乐观锁Version

EVENT_TYPE_

事件类型

nvarchar(255)

   

事件类型

EVENT_NAME_

事件名称

nvarchar(255)

 

事件名称

EXECUTION_ID_

执行实例ID

nvarchar(64)

 

执行实例ID

PROC_INST_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

ACTIVITY_ID_

活动实例ID

nvarchar(64)

 

活动实例ID

CONFIGURATION_

配置

nvarchar(255)

 

配置

CREATED_

是否创建

datetime

   

默认值 当前系统时间戳CURRENT_TIMESTAMP

PROC_DEF_ID_

 

varchar(64)

 

 

TENANT_ID_

 

varchar(255)

 

  act_ru_identitylink 运行时流程人员表:任务参与者数据表。主要存储当前节点参与者的信息。

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

ID_

REV_

乐观锁

int

 

乐观锁

GROUP_ID_

组ID

nvarchar(64)

 

组ID

TYPE_

类型

nvarchar(255)

 

备注7

USER_ID_

用户ID

nvarchar(64)

 

用户ID

TASK_ID_

节点实例ID

nvarchar(64)

 

节点实例ID

PROC_INST_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

PROC_DEF_ID_

流程定义ID

nvarchar(255)

 

流程定义ID

act_ru_integration

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

 

varchar(64)

   

EXECUTION_ID_

 

varchar(64)

 

 

PROCESS_INSTANCE_ID_

 

varchar(64)

 

 

PROC_DEF_ID_

 

varchar(64)

 

 

FLOW_NODE_ID_

 

varchar(64)

 

 

CREATED_DATE_

 

timestamp

 

  act_ru_job 运行时定时任务数据表( act_ru_job )

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

标识

nvarchar(64)

 

标识

REV_

版本

int

 

版本

TYPE_

类型

nvarchar(255)

   

类型

LOCK_EXP_TIME_

锁定释放时间

锁定释放时间

 

锁定释放时间

LOCK_OWNER_

挂起者

nvarchar(255)

 

挂起者

EXCLUSIVE_

 

bit

 

 

EXECUTION_ID_

执行实例ID

nvarchar(64)

 

执行实例ID

PROCESS_INSTANCE_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

PROC_DEF_ID_

流程定义ID

nvarchar(64)

 

流程定义ID

RETRIES_

 

int

 

 

EXCEPTION_STACK_ID_

异常信息ID

varchar(64)

 

异常信息ID

EXCEPTION_MSG_

异常信息

nvarchar(4000)

 

异常信息

DUEDATE_

到期时间

datetime

 

到期时间

REPEAT_

重复

nvarchar(255)

 

重复

HANDLER_TYPE_

处理类型

nvarchar(255)

 

处理类型

HANDLER_CFG_

 

nvarchar(4000)

 

标识

TENANT_ID_

 

nvarchar(255)

      act_ru_suspended_job

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

 

varchar(64)

   

REV_

 

int

 

 

TYPE_

 

varchar(255)

     

EXCLUSIVE_

 

tinyint(1)

 

 

EXECUTION_ID_

 

varchar(64)

 

 

PROCESS_INSTANCE_ID_

 

varchar(64)

 

 

PROC_DEF_ID_

 

varchar(64)

 

 

RETRIES_

 

int

 

 

EXCEPTION_STACK_ID_

 

varchar(64)

 

 

EXCEPTION_MSG_

 

varchar(4000)

 

 

DUEDATE_

 

timestamp

 

 

REPEAT_

 

varchar(255)

 

 

HANDLER_TYPE_

 

varchar(255)

 

 

HANDLER_CFG_

 

varchar(4000)

 

 

TENANT_ID_

 

varchar(255)

 

  act_ru_task  运行时任务节点表

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

ID_

REV_

乐观锁

int

 

乐观锁

EXECUTION_ID_

执行实例ID

nvarchar(64)

 

执行实例ID

PROC_INST_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

PROC_DEF_ID_

流程定义ID

nvarchar(64)

 

流程定义ID

NAME_

节点定义名称

nvarchar(255)

 

节点定义名称

PARENT_TASK_ID_

父节点实例ID

nvarchar(64)

 

父节点实例ID

DESCRIPTION_

节点定义描述

nvarchar(4000)

 

节点定义描述

TASK_DEF_KEY_

节点定义的KEY

nvarchar(255)

 

任务定义的ID

OWNER_

实际签收人

nvarchar(255)

 

拥有者(一般情况下为空,只有在委托时才有值)

ASSIGNEE_

签收人或委托人

nvarchar(255)

 

签收人或委托人

DELEGATION_

委托类型

nvarchar(64)

 

备注8

PRIORITY_

优先级别

int

 

优先级别,默认为:50

CREATE_TIME_

创建时间

datetime

 

创建时间

DUE_DATE_

过期时间

datetime

 

耗时

CATEGORY_

 

varchar(255)

 

 

SUSPENSION_STATE_

是否挂起

int

 

1代表激活 2代表挂起

TENANT_ID_

 

varchar(255)

 

 

FORM_KEY_

节点表单KEY

varchar(255)

 

节点表单key

CLAIM_TIME_

 

datetime

 

  act_ru_timer_job

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

 

varchar(64)

     

REV_

 

int

     

TYPE_

 

varchar(255)

     

LOCK_EXP_TIME_

 

timestamp

     

LOCK_OWNER_

 

varchar(255)

     

EXCLUSIVE_

 

tinyint(1)

     

EXECUTION_ID_

 

varchar(64)

     

PROCESS_INSTANCE_ID_

 

varchar(64)

     

PROC_DEF_ID_

 

varchar(64)

     

RETRIES_

 

int

     

EXCEPTION_STACK_ID_

 

varchar(64)

     

EXCEPTION_MSG_

 

varchar(4000)

     

DUEDATE_

 

timestamp

     

REPEAT_

 

varchar(255)

     

HANDLER_TYPE_

 

varchar(255)

     

HANDLER_CFG_

 

varchar(4000)

     

TENANT_ID_

 

varchar(255)

      act_ru_variable  运行时流程变量数据表

字段名称

字段描述

数据类型

主键

为空

取值说明

ID_

ID_

nvarchar(64)

 

主键标识

REV_

乐观锁

int

 

乐观锁

TYPE_

类型

nvarchar(255)

   

备注9

NAME_

名称

nvarchar(255)

   

变量名称

EXECUTION_ID_

执行实例ID

nvarchar(64)

 

执行的ID

PROC_INST_ID_

流程实例ID

nvarchar(64)

 

流程实例ID

TASK_ID_

节点实例ID

nvarchar(64)

 

节点实例ID(Local)

BYTEARRAY_ID_

字节表ID

nvarchar(64)

 

字节表的ID(ACT_GE_BYTEARRAY)

DOUBLE_

DOUBLE_

float

 

存储变量类型为Double

LONG_

LONG_

numeric(19)

 

存储变量类型为long

TEXT_

TEXT_

nvarchar(4000)

 

‘存储变量值类型为String 如此处存储持久化对象时,值jpa对象的class

TEXT2_

TEXT2_

nvarchar(4000)

 

此处存储的是JPA持久化对象时,才会有值。此值为对象ID

通过zip部署流程 //提供对流程定义和部署存储库的访问服务 @Autowired RepositoryService repositoryService; /** * 部署流程 *

* 1、设计器设计流程xml/png * 2、部署流程 * 3、发起流程 * 4、执行流程 * * @param file 上传流程压缩包 */ @ApiOperation("zip部署流程") @PostMapping("deploy") public ReturnData deploy(@RequestPart("file") MultipartFile file){ try { if (file.isEmpty()) { throw new NullPointerException("部署压缩包不能为空"); } DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); //压缩流 ZipInputStream zip = new ZipInputStream(file.getInputStream()); deploymentBuilder.addZipInputStream(zip); //设置部署流程名称 deploymentBuilder.name("请假审批"); //部署流程 Deployment deploy = deploymentBuilder.deploy(); return ReturnData.buildSuccess(deploy); }catch (Exception e){ e.printStackTrace(); return ReturnData.buildError(e.toString()); } } 画流程图&保存png图片

压缩zip&部署流程

2023-08-20 19:10:39.112 INFO 39701 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@17e8caf2' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2023-08-20 19:10:39.115 INFO 39701 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'methodSecurityConfig' of type [org.activiti.spring.boot.MethodSecurityConfig$$EnhancerBySpringCGLIB$$a8f968cd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2023-08-20 19:10:39.123 INFO 39701 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2023-08-20 19:10:39.408 INFO 39701 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 18080 (http) 2023-08-20 19:10:39.418 INFO 39701 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2023-08-20 19:10:39.418 INFO 39701 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.53] 2023-08-20 19:10:39.500 INFO 39701 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2023-08-20 19:10:39.501 INFO 39701 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2084 ms 2023-08-20 19:10:39.726 INFO 39701 --- [ main] .s.s.UserDetailsServiceAutoConfiguration : Using generated security password: 044aa1fe-2275-4b80-8959-303f5c589ddb 2023-08-20 19:10:40.026 INFO 39701 --- [ main] o.a.e.i.c.ProcessEngineConfigurationImpl : Found 1 Process Engine Configurators in total: 2023-08-20 19:10:40.027 INFO 39701 --- [ main] o.a.e.i.c.ProcessEngineConfigurationImpl : class org.activiti.spring.process.autoconfigure.ProcessExtensionsConfiguratorAutoConfiguration$$EnhancerBySpringCGLIB$$f9f5906b (priority:10000) 2023-08-20 19:10:40.028 INFO 39701 --- [ main] o.a.e.i.c.ProcessEngineConfigurationImpl : Executing beforeInit() of class org.activiti.spring.process.autoconfigure.ProcessExtensionsConfiguratorAutoConfiguration$$EnhancerBySpringCGLIB$$f9f5906b (priority:10000) 2023-08-20 19:10:40.038 INFO 39701 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2023-08-20 19:10:40.203 INFO 39701 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2023-08-20 19:10:40.862 INFO 39701 --- [ main] o.a.e.i.c.ProcessEngineConfigurationImpl : Executing configure() of class org.activiti.spring.process.autoconfigure.ProcessExtensionsConfiguratorAutoConfiguration$$EnhancerBySpringCGLIB$$f9f5906b (priority:10000) 2023-08-20 19:10:40.905 INFO 39701 --- [ main] o.activiti.engine.impl.db.DbSqlSession : performing create on engine with resource org/activiti/db/create/activiti.mysql.create.engine.sql 2023-08-20 19:10:40.906 INFO 39701 --- [ main] o.activiti.engine.impl.db.DbSqlSession : Found MySQL: majorVersion=8 minorVersion=0 2023-08-20 19:10:41.974 INFO 39701 --- [ main] o.activiti.engine.impl.db.DbSqlSession : performing create on history with resource org/activiti/db/create/activiti.mysql.create.history.sql 2023-08-20 19:10:41.974 INFO 39701 --- [ main] o.activiti.engine.impl.db.DbSqlSession : Found MySQL: majorVersion=8 minorVersion=0 2023-08-20 19:10:42.145 INFO 39701 --- [ main] o.a.engine.impl.ProcessEngineImpl : ProcessEngine default created 2023-08-20 19:10:42.162 DEBUG 39701 --- [ main] o.a.e.i.p.e.P.selectProperty : ==> Preparing: select * from ACT_GE_PROPERTY where NAME_ = ? 2023-08-20 19:10:42.180 DEBUG 39701 --- [ main] o.a.e.i.p.e.P.selectProperty : ==> Parameters: cfg.execution-related-entities-count(String) 2023-08-20 19:10:42.198 DEBUG 39701 --- [ main] o.a.e.i.p.e.P.selectProperty : Preparing: insert into ACT_GE_PROPERTY ( NAME_, VALUE_, REV_ ) values ( ?, ?, 1 ) 2023-08-20 19:10:42.202 DEBUG 39701 --- [ main] o.a.e.i.p.e.P.insertProperty : ==> Parameters: cfg.execution-related-entities-count(String), false(String) 2023-08-20 19:10:42.204 DEBUG 39701 --- [ main] o.a.e.i.p.e.P.insertProperty : Preparing: select distinct RES.* from ACT_RE_PROCDEF RES order by RES.ID_ asc LIMIT ? OFFSET ? 2023-08-20 19:10:43.784 DEBUG 39701 --- [ main] .selectProcessDefinitionsByQueryCriteria : ==> Parameters: 2147483647(Integer), 0(Integer) 2023-08-20 19:10:43.785 DEBUG 39701 --- [ main] .selectProcessDefinitionsByQueryCriteria : Preparing: select * from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null) and VERSION_ = (select max(VERSION_) from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null)) 2023-08-20 19:10:50.457 DEBUG 39701 --- [io-18080-exec-1] p.e.P.selectLatestProcessDefinitionByKey : ==> Parameters: test01(String), test01(String) 2023-08-20 19:10:50.458 DEBUG 39701 --- [io-18080-exec-1] p.e.P.selectLatestProcessDefinitionByKey : Preparing: select J.* from ACT_RU_TIMER_JOB J inner join ACT_RE_PROCDEF P on J.PROC_DEF_ID_ = P.ID_ where J.HANDLER_TYPE_ = ? and P.KEY_ = ? and (P.TENANT_ID_ = '' or P.TENANT_ID_ is null) 2023-08-20 19:10:50.465 DEBUG 39701 --- [io-18080-exec-1] bByTypeAndProcessDefinitionKeyNoTenantId : ==> Parameters: timer-start-event(String), test01(String) 2023-08-20 19:10:50.466 DEBUG 39701 --- [io-18080-exec-1] bByTypeAndProcessDefinitionKeyNoTenantId : Preparing: select * from ACT_PROCDEF_INFO where PROC_DEF_ID_ = ? 2023-08-20 19:10:50.469 DEBUG 39701 --- [io-18080-exec-1] ocessDefinitionInfoByProcessDefinitionId : ==> Parameters: test01:1:38967bc9-3f4a-11ee-9292-8629a6918075(String) 2023-08-20 19:10:50.469 DEBUG 39701 --- [io-18080-exec-1] ocessDefinitionInfoByProcessDefinitionId : Preparing: insert into ACT_RE_PROCDEF(ID_, REV_, CATEGORY_, NAME_, KEY_, VERSION_, DEPLOYMENT_ID_, RESOURCE_NAME_, DGRM_RESOURCE_NAME_, DESCRIPTION_, HAS_START_FORM_KEY_, HAS_GRAPHICAL_NOTATION_ , SUSPENSION_STATE_, TENANT_ID_, ENGINE_VERSION_) values (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 2023-08-20 19:10:50.471 DEBUG 39701 --- [io-18080-exec-1] o.a.e.i.p.e.P.insertProcessDefinition : ==> Parameters: test01:1:38967bc9-3f4a-11ee-9292-8629a6918075(String), http://www.activiti.org/processdef(String), test01(String), test01(String), 1(Integer), 388034a6-3f4a-11ee-9292-8629a6918075(String), test01.bpmn20.xml(String), test01.png(String), null, false(Boolean), true(Boolean), 1(Integer), (String), null 2023-08-20 19:10:50.472 DEBUG 39701 --- [io-18080-exec-1] o.a.e.i.p.e.P.insertProcessDefinition : Preparing: insert into ACT_RE_DEPLOYMENT(ID_, NAME_, CATEGORY_, KEY_, TENANT_ID_, DEPLOY_TIME_, ENGINE_VERSION_) values(?, ?, ?, ?, ?, ?, ?) 2023-08-20 19:10:50.477 DEBUG 39701 --- [io-18080-exec-1] o.a.e.i.p.e.D.insertDeployment : ==> Parameters: 388034a6-3f4a-11ee-9292-8629a6918075(String), 请假审批(String), null, null, (String), 2023-08-20 19:10:50.312(Timestamp), null 2023-08-20 19:10:50.478 DEBUG 39701 --- [io-18080-exec-1] o.a.e.i.p.e.D.insertDeployment : Preparing: INSERT INTO ACT_GE_BYTEARRAY(ID_, REV_, NAME_, BYTES_, DEPLOYMENT_ID_, GENERATED_) VALUES (?, 1, ?, ?, ?, ?) , (?, 1, ?, ?, ?, ?) 2023-08-20 19:10:50.482 DEBUG 39701 --- [io-18080-exec-1] o.a.e.i.p.e.R.bulkInsertResource : ==> Parameters: 38805bb7-3f4a-11ee-9292-8629a6918075(String), test01.bpmn20.xml(String), java.io.ByteArrayInputStream@59c2252b(ByteArrayInputStream), 388034a6-3f4a-11ee-9292-8629a6918075(String), false(Boolean), 388082c8-3f4a-11ee-9292-8629a6918075(String), test01.png(String), java.io.ByteArrayInputStream@598b95ef(ByteArrayInputStream), 388034a6-3f4a-11ee-9292-8629a6918075(String), false(Boolean) 2023-08-20 19:10:50.485 DEBUG 39701 --- [io-18080-exec-1] o.a.e.i.p.e.R.bulkInsertResource : Preparing: select distinct RES.* from ACT_RE_DEPLOYMENT RES WHERE RES.ID_ = ? order by RES.ID_ asc LIMIT ? OFFSET ? 2023-08-20 19:51:07.957 DEBUG 60519 --- [io-18080-exec-6] i.p.e.D.selectDeploymentsByQueryCriteria : ==> Parameters: 1(String), 2147483647(Integer), 0(Integer) 2023-08-20 19:51:07.958 DEBUG 60519 --- [io-18080-exec-6] i.p.e.D.selectDeploymentsByQueryCriteria : Preparing: select distinct RES.* from ACT_RE_DEPLOYMENT RES order by RES.ID_ asc LIMIT ? OFFSET ? 2023-08-20 19:51:21.511 DEBUG 60519 --- [io-18080-exec-7] i.p.e.D.selectDeploymentsByQueryCriteria : ==> Parameters: 2147483647(Integer), 0(Integer) 2023-08-20 19:51:21.514 TRACE 60519 --- [io-18080-exec-7] i.p.e.D.selectDeploymentsByQueryCriteria : Parameters: 388034a6-3f4a-11ee-9292-8629a6918075(String) 2023-08-20 19:51:32.320 DEBUG 60519 --- [io-18080-exec-8] o.a.e.i.p.e.D.deleteDeployment : Preparing: delete from ACT_RU_EVENT_SUBSCR where PROC_DEF_ID_ = ? and EXECUTION_ID_ is null and PROC_INST_ID_ is null 2023-08-20 19:51:32.320 DEBUG 60519 --- [io-18080-exec-8] teEventSubscriptionsForProcessDefinition : ==> Parameters: test01:1:38967bc9-3f4a-11ee-9292-8629a6918075(String) 2023-08-20 19:51:32.321 DEBUG 60519 --- [io-18080-exec-8] teEventSubscriptionsForProcessDefinition : Preparing: delete from ACT_RU_IDENTITYLINK where PROC_DEF_ID_ = ? 2023-08-20 19:51:32.322 DEBUG 60519 --- [io-18080-exec-8] .a.e.i.p.e.I.deleteIdentityLinkByProcDef : ==> Parameters: test01:1:38967bc9-3f4a-11ee-9292-8629a6918075(String) 2023-08-20 19:51:32.324 DEBUG 60519 --- [io-18080-exec-8] .a.e.i.p.e.I.deleteIdentityLinkByProcDef : Preparing: delete from ACT_RE_PROCDEF where DEPLOYMENT_ID_ = ? 2023-08-20 19:51:32.324 DEBUG 60519 --- [io-18080-exec-8] P.deleteProcessDefinitionsByDeploymentId : ==> Parameters: 388034a6-3f4a-11ee-9292-8629a6918075(String) 2023-08-20 19:51:32.325 DEBUG 60519 --- [io-18080-exec-8] P.deleteProcessDefinitionsByDeploymentId : Preparing: select distinct RES.* from ACT_RE_PROCDEF RES order by RES.ID_ asc LIMIT ? OFFSET ? 2023-08-20 20:10:28.594 DEBUG 70687 --- [io-18080-exec-8] .selectProcessDefinitionsByQueryCriteria : ==> Parameters: 2147483647(Integer), 0(Integer) 2023-08-20 20:10:28.594 TRACE 70687 --- [io-18080-exec-8] .selectProcessDefinitionsByQueryCriteria : Parameters: 9931cd08-3f52-11ee-ae7f-8629a6918075(String), 经理审批(String), null, null, 50(Integer), 2023-08-20 20:10:48.496(Timestamp), null, null, null, 992e98b5-3f52-11ee-ae7f-8629a6918075(String), 992e2384-3f52-11ee-ae7f-8629a6918075(String), test01:1:70466829-3f50-11ee-82fb-8629a6918075(String), sid-26ae1c3f-b024-49d3-bb5c-4c86a1033794(String), null, null, 1(Integer), (String), null, null 2023-08-20 20:10:48.548 DEBUG 70687 --- [io-18080-exec-9] o.a.e.i.p.e.TaskEntityImpl.insertTask : Preparing: select distinct RES.* from ACT_RU_TASK RES WHERE RES.PROC_INST_ID_ = ? order by RES.ID_ asc LIMIT ? OFFSET ? 2023-08-20 20:31:08.167 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.T.selectTaskByQueryCriteria : ==> Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String), 2147483647(Integer), 0(Integer) 2023-08-20 20:31:08.168 TRACE 80145 --- [io-18080-exec-4] o.a.e.i.p.e.T.selectTaskByQueryCriteria : Parameters: 503080b9-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.178 TRACE 80145 --- [io-18080-exec-4] o.a.e.i.p.e.H.selectHistoricTaskInstance : Parameters: 502e5dd6-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.187 DEBUG 80145 --- [io-18080-exec-4] i.p.e.S.selectSuspendedJobsByExecutionId : Preparing: select * from ACT_RU_DEADLETTER_JOB J where J.EXECUTION_ID_ = ? 2023-08-20 20:31:08.187 DEBUG 80145 --- [io-18080-exec-4] .p.e.D.selectDeadLetterJobsByExecutionId : ==> Parameters: 502e5dd6-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.187 DEBUG 80145 --- [io-18080-exec-4] .p.e.D.selectDeadLetterJobsByExecutionId : Preparing: select * from ACT_RU_EVENT_SUBSCR where (EXECUTION_ID_ = ?) 2023-08-20 20:31:08.188 DEBUG 80145 --- [io-18080-exec-4] .e.E.selectEventSubscriptionsByExecution : ==> Parameters: 502e5dd6-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.188 DEBUG 80145 --- [io-18080-exec-4] .e.E.selectEventSubscriptionsByExecution : Preparing: select E.*, S.PROC_INST_ID_ AS PARENT_PROC_INST_ID_ from ACT_RU_EXECUTION E LEFT OUTER JOIN ACT_RU_EXECUTION S ON E.SUPER_EXEC_ = S.ID_ where E.PARENT_ID_ = ? 2023-08-20 20:31:08.188 DEBUG 80145 --- [io-18080-exec-4] .e.E.selectExecutionsByParentExecutionId : ==> Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.189 TRACE 80145 --- [io-18080-exec-4] .e.E.selectExecutionsByParentExecutionId : Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.195 DEBUG 80145 --- [io-18080-exec-4] a.e.i.p.e.V.selectVariablesByExecutionId : Preparing: select distinct T.* from ACT_RU_TASK T where T.EXECUTION_ID_ = ? 2023-08-20 20:31:08.195 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.T.selectTasksByExecutionId : ==> Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.196 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.T.selectTasksByExecutionId : Preparing: select * from ACT_RU_TIMER_JOB J where J.EXECUTION_ID_ = ? 2023-08-20 20:31:08.196 DEBUG 80145 --- [io-18080-exec-4] a.e.i.p.e.T.selectTimerJobsByExecutionId : ==> Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.197 DEBUG 80145 --- [io-18080-exec-4] a.e.i.p.e.T.selectTimerJobsByExecutionId : Preparing: select * from ACT_RU_JOB J where J.EXECUTION_ID_ = ? 2023-08-20 20:31:08.198 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.J.selectJobsByExecutionId : ==> Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.199 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.J.selectJobsByExecutionId : Preparing: select * from ACT_RU_SUSPENDED_JOB J where J.EXECUTION_ID_ = ? 2023-08-20 20:31:08.199 DEBUG 80145 --- [io-18080-exec-4] i.p.e.S.selectSuspendedJobsByExecutionId : ==> Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.200 DEBUG 80145 --- [io-18080-exec-4] i.p.e.S.selectSuspendedJobsByExecutionId : Preparing: select * from ACT_RU_DEADLETTER_JOB J where J.EXECUTION_ID_ = ? 2023-08-20 20:31:08.200 DEBUG 80145 --- [io-18080-exec-4] .p.e.D.selectDeadLetterJobsByExecutionId : ==> Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.200 DEBUG 80145 --- [io-18080-exec-4] .p.e.D.selectDeadLetterJobsByExecutionId : Preparing: select * from ACT_RU_EVENT_SUBSCR where (EXECUTION_ID_ = ?) 2023-08-20 20:31:08.201 DEBUG 80145 --- [io-18080-exec-4] .e.E.selectEventSubscriptionsByExecution : ==> Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.201 DEBUG 80145 --- [io-18080-exec-4] .e.E.selectEventSubscriptionsByExecution : Preparing: select * from ACT_HI_PROCINST where PROC_INST_ID_ = ? 2023-08-20 20:31:08.201 DEBUG 80145 --- [io-18080-exec-4] .e.i.p.e.H.selectHistoricProcessInstance : ==> Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.202 TRACE 80145 --- [io-18080-exec-4] .e.i.p.e.H.selectHistoricProcessInstance : Parameters: test01:1:70466829-3f50-11ee-82fb-8629a6918075(String), 502e5dd6-3f55-11ee-a4b7-8629a6918075(String), 经理审批(String), null, null, null, null, null, 2023-08-20 20:31:08.179(Timestamp), 53660(Long), null, sid-26ae1c3f-b024-49d3-bb5c-4c86a1033794(String), null, 50(Integer), null, null, 503080b9-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.206 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.H.updateHistoricTaskInstance : Preparing: update ACT_RU_EXECUTION set REV_ = ?, BUSINESS_KEY_ = ?, PROC_DEF_ID_ = ?, ACT_ID_ = ?, IS_ACTIVE_ = ?, IS_CONCURRENT_ = ?, IS_SCOPE_ = ?, IS_EVENT_SCOPE_ = ?, IS_MI_ROOT_ = ?, PARENT_ID_ = ?, SUPER_EXEC_ = ?, ROOT_PROC_INST_ID_ = ?, SUSPENSION_STATE_ = ?, NAME_ = ?, IS_COUNT_ENABLED_ = ?, EVT_SUBSCR_COUNT_ = ?, TASK_COUNT_ = ?, JOB_COUNT_ = ?, TIMER_JOB_COUNT_ = ?, SUSP_JOB_COUNT_ = ?, DEADLETTER_JOB_COUNT_ = ?, VAR_COUNT_ = ?, ID_LINK_COUNT_ = ? where ID_ = ? and REV_ = ? 2023-08-20 20:31:08.207 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.E.updateExecution : ==> Parameters: 2(Integer), null, test01:1:70466829-3f50-11ee-82fb-8629a6918075(String), sid-566d983a-089b-4ce0-9935-4e422e72c219(String), false(Boolean), false(Boolean), false(Boolean), false(Boolean), false(Boolean), 502e5dd5-3f55-11ee-a4b7-8629a6918075(String), null, 502e5dd5-3f55-11ee-a4b7-8629a6918075(String), 1(Integer), null, false(Boolean), 0(Integer), 0(Integer), 0(Integer), 0(Integer), 0(Integer), 0(Integer), 0(Integer), 0(Integer), 502e5dd6-3f55-11ee-a4b7-8629a6918075(String), 1(Integer) 2023-08-20 20:31:08.208 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.E.updateExecution : Preparing: update ACT_RU_EXECUTION set REV_ = ?, BUSINESS_KEY_ = ?, PROC_DEF_ID_ = ?, ACT_ID_ = ?, IS_ACTIVE_ = ?, IS_CONCURRENT_ = ?, IS_SCOPE_ = ?, IS_EVENT_SCOPE_ = ?, IS_MI_ROOT_ = ?, PARENT_ID_ = ?, SUPER_EXEC_ = ?, ROOT_PROC_INST_ID_ = ?, SUSPENSION_STATE_ = ?, NAME_ = ?, IS_COUNT_ENABLED_ = ?, EVT_SUBSCR_COUNT_ = ?, TASK_COUNT_ = ?, JOB_COUNT_ = ?, TIMER_JOB_COUNT_ = ?, SUSP_JOB_COUNT_ = ?, DEADLETTER_JOB_COUNT_ = ?, VAR_COUNT_ = ?, ID_LINK_COUNT_ = ? where ID_ = ? and REV_ = ? 2023-08-20 20:31:08.209 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.E.updateExecution : ==> Parameters: 2(Integer), null, test01:1:70466829-3f50-11ee-82fb-8629a6918075(String), null, false(Boolean), false(Boolean), true(Boolean), false(Boolean), false(Boolean), null, null, 502e5dd5-3f55-11ee-a4b7-8629a6918075(String), 1(Integer), null, false(Boolean), 0(Integer), 0(Integer), 0(Integer), 0(Integer), 0(Integer), 0(Integer), 0(Integer), 0(Integer), 502e5dd5-3f55-11ee-a4b7-8629a6918075(String), 1(Integer) 2023-08-20 20:31:08.209 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.E.updateExecution : Preparing: update ACT_HI_PROCINST set PROC_DEF_ID_ = ?, BUSINESS_KEY_ = ?, START_TIME_ = ?, END_TIME_ = ?, DURATION_ = ?, END_ACT_ID_ = ?, DELETE_REASON_ = ?, NAME_ = ? where ID_ = ? 2023-08-20 20:31:08.210 DEBUG 80145 --- [io-18080-exec-4] .e.i.p.e.H.updateHistoricProcessInstance : ==> Parameters: test01:1:70466829-3f50-11ee-82fb-8629a6918075(String), null, 2023-08-20 20:30:14.505(Timestamp), 2023-08-20 20:31:08.202(Timestamp), 53697(Long), sid-566d983a-089b-4ce0-9935-4e422e72c219(String), null, null, 502e5dd5-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.211 DEBUG 80145 --- [io-18080-exec-4] .e.i.p.e.H.updateHistoricProcessInstance : Preparing: update ACT_HI_ACTINST set EXECUTION_ID_ = ?, ASSIGNEE_ = ?, END_TIME_ = ?, DURATION_ = ?, DELETE_REASON_ = ? where ID_ = ? 2023-08-20 20:31:08.211 DEBUG 80145 --- [io-18080-exec-4] e.i.p.e.H.updateHistoricActivityInstance : ==> Parameters: 502e5dd6-3f55-11ee-a4b7-8629a6918075(String), null, 2023-08-20 20:31:08.183(Timestamp), 53676(Long), null, 502eabf8-3f55-11ee-a4b7-8629a6918075(String) 2023-08-20 20:31:08.212 DEBUG 80145 --- [io-18080-exec-4] e.i.p.e.H.updateHistoricActivityInstance : Preparing: delete from ACT_RU_TASK where ID_ = ? and REV_ = ? 2023-08-20 20:31:08.212 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.TaskEntityImpl.deleteTask : ==> Parameters: 503080b9-3f55-11ee-a4b7-8629a6918075(String), 1(Integer) 2023-08-20 20:31:08.213 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.TaskEntityImpl.deleteTask : Preparing: delete from ACT_RU_EXECUTION where ID_ = ? and REV_ = ? 2023-08-20 20:31:08.213 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.E.deleteExecution : ==> Parameters: 502e5dd6-3f55-11ee-a4b7-8629a6918075(String), 2(Integer) 2023-08-20 20:31:08.214 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.E.deleteExecution : Preparing: delete from ACT_RU_EXECUTION where ID_ = ? and REV_ = ? 2023-08-20 20:31:08.214 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.E.deleteExecution : ==> Parameters: 502e5dd5-3f55-11ee-a4b7-8629a6918075(String), 2(Integer) 2023-08-20 20:31:08.215 DEBUG 80145 --- [io-18080-exec-4] o.a.e.i.p.e.E.deleteExecution : ${day;5} ${day;=5 ;; day;=10} ${day;10} test05.bpmn20.xml ExclusiveGateway 排它网关【重要】

  所谓网关就是条件分支语句if() else if () ,排它网关会执行所有条件找到一个为true的执行,如果有多个条件为true那么会执行优先定义的(Id较小的那个UserTask),如果条件都为false则抛出异常。

排它网关和直接在连线上设置条件的区别:

条件分支不满条件抛异常,如果都满足都执行。 排它网关不满足条件抛异常,如果都满足只执行Id较小的任务(即先绘制的任务)。 if(day < 3) { } else if (day > 3) { } else { throw new Exception(); } day大于等于3天走部门经理审批,大于小于3天直接走人事审批。 修改条件,分别改为day>=3和day>=2,传值day=3,抛异常ActivitiException 画流程图

操作步骤 保存xxx.png 压缩xxx.zip 部署xxx.zip 启动流程 完成任务 //提供对流程定义和部署存储库的访问服务 @Autowired RepositoryService repositoryService; //运行时的接口 @Autowired RuntimeService runtimeService; @ApiOperation("发起流程") @GetMapping("startProcess") public ReturnData startProcess( @ApiParam(value = "流程定义id", required = true) String processDefinitionId ) { log.info("发起流程,processDefinitionId:{}", processDefinitionId); List list = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).list(); if (list.size() != 1) { return ReturnData.buildError("流程定义不存在"); } //流程节点中变量,替换占位符 Map variablesMap = new HashMap(); //设置流程变量 variablesMap.put("userName", "老陈同学"); variablesMap.put("day", "5"); //通过流程定义ID启动一个流程实例 ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, variablesMap); log.info("流程实例:{}", processInstance); return ReturnData.buildSuccess("发起成功 " + processInstance); } 演示

org.activiti.engine.ActivitiException: No outgoing sequence flow of the exclusive gateway 'sid-5cb4c263-7708-47ab-b909-18c9e52ef09c' could be selected for continuing the process

ParallelGateway 并行网关

  并行网关没有条件,写了条件也会被忽略,【全部都会执行,这里可以通过在人事审批、CTO审批上添加监听器,看监听器会发现全部执行】,前面做fork分支,后面做join汇聚。

if(true){ // UserTask } if(true){ // UserTask } 画流程图

test07.bpmn20.xml 操作步骤 保存xxx.png 压缩xxx.zip 部署xxx.zip 发起流程 完成流程 演示   当【经理审批】完接下来就会同时插入两条任务(人事审批、CTO审批),两个经理审核完后就结束。

任务委派【重要】

  任务委派只是任务人将当前的任务交给接收人进行审批,完成任务后又重新回到任务人身上。委派人查询任务与完成任务与正常的有区别。

// 任务处理接口 @Autowired TaskService taskService; @ApiOperation("任务委派") @GetMapping("delegateTask") public ReturnData delegateTask( @ApiParam(value = "任务id", required = true) @RequestParam("taskId") String taskId, @ApiParam(value = "新代办人", required = true) @RequestParam("userName") String userName ) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (task == null) { return ReturnData.buildError("任务不存在"); } taskService.delegateTask(taskId, userName); return ReturnData.buildSuccess(); } 画流程图

演示

insert into ACT_HI_IDENTITYLINK insert into ACT_RU_IDENTITYLINK update ACT_HI_ACTINST update ACT_HI_TASKINST update ACT_RU_TASK

注:后续由委派人处理这个任务!!!

任务转办【适用于审批人离职,重要】

  任务转办和任务委派类似,任务转办适用于公司领导离职,这个任务没人处理了,将这个任务转办给其他人处理

// 任务处理接口 @Autowired TaskService taskService; @ApiOperation("任务转办") @GetMapping("setAssignee") public ReturnData setAssignee( @ApiParam(value = "任务id", required = true) @RequestParam("taskId") String taskId, @ApiParam(value = "新代办人", required = true) @RequestParam("userName") String userName ) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (task == null) { return ReturnData.buildError("任务不存在"); } taskService.setAssignee(taskId, userName); return ReturnData.buildSuccess(); } 演示

insert into ACT_HI_IDENTITYLINK insert into ACT_RU_IDENTITYLINK insert into ACT_HI_COMMENT update ACT_HI_ACTINST update ACT_HI_TASKINST update ACT_RU_TASK 子流程 画子流程图

 注:后续流程,跟之前一样,所以不做演示~~~

流程驳回

  我们可以通过变量控制来控制流程走向,达到拒绝效果。

画流程图

${pmtype==1} ${hrtype==1} ${pmtype==0} ${hrtype==0} test10.bpmn20.xml 经理审批 pmtype==1:同意 pmtype==0:拒绝 人事审批 hrtype==1:同意 hrtype==0:拒绝 经理审批时,需要设置环境变量 // 任务处理接口 @Autowired TaskService taskService; @ApiOperation("完成任务") @GetMapping("completeTask") public ReturnData completeTask( @ApiParam(value = "流程实例id", required = true) String processInstanceId ) { //根据流程实例id,查询任务 List taskList = taskService.createTaskQuery().processInstanceId(processInstanceId).list(); if (taskList.size() != 1) { return ReturnData.buildError("当前没有任务"); } log.info("任务列表:{}", taskList); //经理审批,添加环境变量pmtype Map variables = new HashMap(); variables.put("pmtype", 1); //根据任务id,完成任务 taskService.complete(taskList.get(0).getId(), variables); return ReturnData.buildSuccess("完成任务"); }

其他人审核,同理

项目源码

https://gitee.com/yenbin_chen/ybchen-activiti7

升级activiti版本踩坑 org.activiti.engine.ActivitiException: Could not update Activiti database schema: unknown version from database: '7.1.0-M6' 原因:

  Activiti相关的jar版本和表act_ge_property中schema.version所存储的版本不一致造成的

查看activiti相关jar包版本修改数据库中的版本就可(ProcessEngine所在的包下)

UPDATE act_ge_property SET VALUE_='7.0.0.0' WHERE NAME_='schema.version';

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有