Activiti7工作流引擎:基础篇(三) 数据库表结构

2023-11-22 09:50

本文主要是介绍Activiti7工作流引擎:基础篇(三) 数据库表结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



知识传送门 》》》》》》》》


内卷: 一般用于形容某个领域中发生了过度的竞争,导致人们进入了互相倾轧、内耗的状态,也就是非理性的内部竞争。

更宽泛一点说,任何无实质意义的消耗都可称为“内卷”。

在这里插入图片描述
Activiti7的数据库表名以ACT_作为前缀,字段都是以下划线_结尾的,第二个前缀表示业务类每个表都会有一个字段REV_表示乐观锁版本号和业务没有任何关系,每次操作都会加1。

一:GE

1.1 act_ge_property 通用属性表

用于定义系统属性。

  • next.dbid 流程实例id:初始化值为1,启动第一个流程实例值为2501
  • schema 版本号:7.0.0。
    在这里插入图片描述

1.2 act_ge_bytearray 通用字节数组表

用于存储.bpmn文件和.png文件。
在这里插入图片描述

字段名数据类型注释
NAME_varchar(255)资源名称
DEPLOYMENT_ID_varchar(64)部署id:act_re_deployment.id
BYTES_longblob.bpmn或者.png文件对应的二进制文件
GENERATED_tinyint(4)生成方式,0:用户上传,1:系统自动生成

Activiti7中.bpmn文件本质上是一种.xml文件,可以可以通过解析XML获取流程定义文件中的每个节点信息。

/**
* 查询流程定义内容
*/
public void queryProcessDefinitionElement() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey("offwork").singleResult();BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());if (bpmnModel != null) {Collection<FlowElement> flowElements = bpmnModel.getMainProcess().getFlowElements();for (FlowElement flowElement : flowElements) {if (flowElement instanceof UserTask) {// 可以根据Assignee关联act_hi_identitylink找到负责人System.out.println(flowElement.getClass().getSimpleName() + "-"+ flowElement.getId() + "-" + flowElement.getName() + "-" + ((UserTask)flowElement).getAssignee());}}}
}// UserTask-_3-请假申请-${apply}
// UserTask-_4-项目经理-${pm}
// UserTask-_5-人事-${hr}

二:RE

每部署一次就会往act_re_deployment、act_re_procdef、act_ge_bytearray插入一条记录。

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
Deployment deploy = processEngine.getRepositoryService().createDeployment().addClasspathResource("bpmn/offwork.bpmn").name("请假流程").deploy();

2.1 act_re_deployment 资源部署表

在这里插入图片描述

字段名数据类型注释
NAME_varchar(255)流程定义名字,对应于.bpmn中的Name属性
KEY_varchar(255)键值
DEPLOY_TIME_timestamp部署时间

2.2 act_re_procdef 资源流程定义表

act_re_deployment 和 act_re_procdef 是一对一关系。但注意:同一个.bpmn流程可以部署多次。
在这里插入图片描述

字段名数据类型注释
ID_varchar(64)流程定义id,PROC_DEF_ID_,规则:流程的Id + ":" + 流程部署次数 + ":" + 递增值, 如第一次部署为LeaveProcess:1:7504,第二次部署为LeaveProcess:2:17504
NAME_varchar(255)流程定义名字,对应于.bpmn中的Name属性
KEYvarchar(255)流程定义唯一关键字,每个流程定义都不允许重复,对应.bpmn中的Id属性
VERSION_int(11)版本号
DEPLOYMENT_ID_varchar(64)部署id:act_re_deployment.id
RESOURCE_NAME_varchar(4000).bpmn文件名字
DGRM_RESOURCE_NAME_varchar(4000).png文件名字
DESCRIPTION_varchar(4000)流程定义描述
SUSPENSION_STATE_int(11)挂起状态 1:激活,2:挂起(暂停)

请添加图片描述


三:RU 运行时

启动流程实例:

  • act_ru_execution:插入2条记录,第一条为流程实例记录,第二条为执行流记录(即UserTask任务节点)。
  • act_ru_task:插入一条记录,为流程定义的第一个UserTask。
  • act_ru_identitylink:每个UserTask对应一条记录,任务办理人。
  • act_ru_variable:运行时所需的所有变量。
public void startProcessInstance() {Map<String, Object> assignees = new HashMap<>();assignees.put("apply", "张三");assignees.put("pm", "傻经理");assignees.put("hr", "狗人事");String businessKey = "1";ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("offwork", businessKey, assignees);
}

3.1 act_ru_execution 流程实例表

第一次插入两条(一条流程实例对象ProcessInstance、一条执行流对象Execution),以后每次插入一条执行流对象。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

字段名数据类型注释
PROC_INST_ID_varchar(64)流程实例Id
BUSINESS_KEY_varchar(255)业务Key
PARENT_ID_varchar(64)
PROC_DEF_ID_varchar(64)流程定义id:act_re_procdef.id
ROOT_PROC_INST_ID_varchar(64)根流程实例id,PARENT_ID_=null
ACT_ID_varchar(255)活动id
IS_ACTIVE_tinyint(4)是否激活 1:激活
IS_SCOPE_tinyint(4)是否流程实例:流程实例和子流程都为1
IS_CONCURRENT_tinyint(4)是否并行分支
SUSPENSION_STATE_int(11)挂起状态 1:激活,2:挂起
START_TIME_datetime开始时间
START_USER_ID_varchar(255)启动流程的用户id

3.2 act_ru_task 任务表

  • 每启动一个流程实例就会将第一个任务节点插入该表,即同一个流程定义可以被不同的申请人发起多次,task表中同样有多条任务。
  • 每个任务完成后会自动删除数据,同时将下一个任务插入到该表中。
    在这里插入图片描述
字段名数据类型注释
EXECUTION_ID_varchar(64)执行id
PROC_INST_ID_varchar(64)流程实例Id
PROC_DEF_ID_varchar(64)流程定义id:act_re_procdef.id
NAME_varchar(255)UserTask对应的任务名称Name
TASK_DEF_KEY_varchar(255)UserTask节点对应的Id属性
ASSIGNEE_varchar(255)任务负责人,对应于UserTask中的Assignee属性
PRIORITY_int(11)优先级
CREATE_TIME_timestamp创建时间
DUE_TIME_timestamp到期时间
CLAIM_TIME_timestamp拾起时间
SUSPENSION_STATE_int(11)挂起状态 1:激活,2:挂起

3.3 act_ru_identitylink 参与人

在这里插入图片描述

字段名数据类型注释
TYPE_varchar(64)participant参与者、candidate候选人
USER_ID_varchar(255)用户id,对应于UserTask中的Assignee
PROC_INST_ID_varchar(64)流程实例id
PROC_DEF_ID_varchar(64)流程定义id:act_re_procdef.id

3.4 act_ru_variable 流程变量

运行时所需的所有变量。流程完成后相关变量会被删除。
在这里插入图片描述

字段名数据类型注释
TYPE_varchar(64)数据类型
NAME_varchar(255)变量名
EXECUTION_ID_varchar(64)执行id
PROC_INST_ID_varchar(64)流程实例id
BYTEARRAY_ID_varchar(64)act_re_bytearray.id_
DOUBLE_doubledouble变量值
LONG_bigint(20)long变量值
TEXT_varchar(4000)存储String类型的值
TEXT2_varchar(4000)变量值

四:HI

4.1 act_hi_procinst

字段名数据类型注释
PROC_INST_ID_varchar(64)流程实例id
BUSINESS_KEY_varchar(64)业务key
PROC_DEF_ID_varchar(255)流程定义id
START_TIME_datetime流程开始时间
END_TIME_datetime流程结束时间
DURATION_bigint持续时间
START_USER_ID_varchar开始用户id
START_ACT_ID_varchar(255)开始活动id
END_ACT_ID_varchar(255)结束活动ID,如果此值不为空表示整个流程已经结束了
SUPER_PROCESS_INSTANCE_ID_varchar(64)父流程实例id
DELETE_REASON_varchar(4000)删除原因
NAME_varchar(255)父流程实例名称

4.2 act_hi_taskinst和act_hi_actinst

在这里插入图片描述
TASK_DEF_KEY:对应于.bpmn文件中的每个符号的Id,所以Id一般不要使用生成的数字,改成有意义的名字更加直观。

ACT_HI_TASKINST和ACT_HI_ACTINST有什么区别?
  • ACT_HI_TASKINST 和 ACT_HI_ACTINST 90%的字段相同。
  • ACT_HI_TASKINST 只存储历史任务相关的数据。
  • ACT_HI_ACTINST 存储所有活动节点数据,活动包含事件Event(开始、结束)、各种Task、网关Gateway等。

4.3 act_hi_detail

act_hi_detail 也是用来存储变量信息,不但记录传统的普通的变量,也能记录表单属性。
在这里插入图片描述

4.4 act_hi_identitylink 参与人

在这里插入图片描述
TYPE_:participant、candidate、assignee、owner、starter。

4.4 act_hi_varinst 历史变量

在这里插入图片描述

4.5 act_hi_comment 历史审核意见表

字段名数据类型注释
TYPE_varchar(64)类型:event(事件),comment(意见),也可以自定义类型
TIME_datetime填写时间
USER_ID_varchar(255)填写人
TASK_ID_varchar(64)任务id
PROC_INST_ID_varchar(64)流程实例id
ACTION_varchar(255)动作:AddUserLink(指定负责人)、DeleteUserLink、AddGroupLink、DeleteGroupLink、AddComment(填写意见)、AddAttachment、DeleteAttachement
MESSAGE_varchar(4000)基本内容, 用于存放流程产生的信息,比如审批意见,常存储JSON字符串
FULL_MSG_longblob附件,存储附件文件

五:其它文章

Activiti 数据库表结构参考



知识传送门 》》》》》》》》


这篇关于Activiti7工作流引擎:基础篇(三) 数据库表结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409302

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

DM8数据库安装后配置

1 前言 在上篇文章中,我们已经成功将库装好。在安装完成后,为了能够更好地满足应用需求和保障系统的安全稳定运行,通常需要进行一些基本的配置。下面是一些常见的配置项: 数据库服务注册:默认包含14个功能模块,将这些模块注册成服务后,可以更好的启动和管理这些功能;基本的实例参数配置:契合应用场景和发挥系统的最大性能;备份:有备无患;… 2 注册实例服务 注册了实例服务后,可以使用系统服务管理,