Activiti 深入理解:Activiti 流程引擎的 25 张数据库表都存储了什么?ing

news2024/11/15 6:34:57

1. Activiti 数据库表名说明(分类与说明)

https://www.activiti.org/userguide/#database.tables.explained

\qquad Activiti 的数据库表名称都以 ACT_ 开头,而第二部分是表 use case 的双字符标识,use case 也大致与 Activiti 服务 API 匹配。

  • ACT_RE_*:
    • RE stands for repository. Tables with this prefix contain static information such as process definitions and process resources (images, rules, etc.).
    • RE 代表 repository,包含这个前缀的表包含诸如 流程定义流程资源(图片、规则等) 这类的静态信息
  • ACT_RU_*:
    • RU stands for runtime. These are the runtime tables that contain the runtime data of process instances, user tasks, variables, jobs, etc. Activiti only stores the runtime data during process instance execution, and removes the records when a process instance ends. This keeps the runtime tables small and fast.
    • RU 代表 runtime,这些 (ACT_RU_*) 是包含流程实例运行时数据的表,如 用户任务 (user tasks)、流程变量 (variables)、作业(jobs) 等;Activiti 仅在流程实例执行期间存储运行时数据,并在流程实例结束时删除记录,这可以保持符合 act_ru_* 的表小而快。
  • ACT_ID_*:
    • ID stands for identity. These tables contain identity information, such as users, groups, etc.
    • ID 代表 identity,这些表包含身份信息,比如 用户、组等。
  • ACT_HI_*:
    • HI stands for history. These are the tables that contain historic data, such as past process instances, variables, tasks, etc.
    • HI 代码 history,这些是包含历史数据的表,比如 过去的流程实例、变量、任务等。
  • ACT_GE_*:
    • general data, which is used in various use cases.
    • (GE 代表 general,符合 ACT_GE_* 的表存储的是) 在各种各样的 use case 都被使用的通用数据。

1. ACT_RE_*:repository

2.1 act_re_deployment

  • 表说明:用于存储流程部署信息的表,与 act_ge_bytearray join 可以查看流程文件信息
  • 表列说明
    • ID_:部署的唯一标识符,用于标识流程部署的唯一性
    • NAME_:部署名称,用于标识流程部署的名称
    • CATEGORY_:部署类别,用于对流程进行分类
    • TENANT_ID_:租户标识符,如果启用了多租户功能,可以标识流程部署所属的租户
    • KEY_:部署的键
    • DEPLOY_TIME_:部署时间,表示流程部署发生的时间
    • ENGINE_VERSION_

repositoryService.createDeployment().category(category).key(key).name(name)

2.2 act_re_model

  • 表说明:用于存储流程模型信息的表
  • 表列说明
    • ID_:流程模型的唯一标识符
    • NAME_:流程模型的名称
    • KEY_:流程模型的键(也称为流程模型的 ID)
    • CATEGORY_:流程模型的分类,可用于对流程模型进行分组
    • CREATE_TIME_:创建流程模型的时间戳
    • LAST_UPDATE_TIME_:最后更新流程模型的时间戳。
    • VERSION_:流程模型的版本
    • META_INFO_:流程模型的元信息,通常以 JSON 格式存储
    • DEPLOYMENT_ID_:引用所属流程部署的唯一标识符
    • EDITOR_SOURCE_VALUE_ID_
    • EDITOR_SOURCE_EXTRA_VALUE_ID_
    • TENANT_ID_

2.3 act_re_procdef

  • 表说明:用于存储流程定义的信息
  • 表列说明
    • ID_:流程定义表主键
    • CATEGORY_: 流程定义的分类,可用于对流程进行分组
    • NAME_:流程定义的名称
    • KEY_:流程定义的键(也称为流程定义的 ID)
    • VERSION_:流程定义的版本
    • DEPLOYMENT_ID_:引用所属流程部署的唯一标识符
    • RESOURCE_NAME_:流程定义的资源名称,通常是 BPMN 或 XML 文件名
    • DGRM_RESOURCE_NAME_:流程定义的图形资源名称,通常是流程定义的图形表示的文件名
    • DISCRIPTION_:流程定义描述
    • HAS_START_FORM_KEY_: 表示流程定义是否有启动表单
    • HAS_GRAPHICAL_NOTATION_: 表示流程定义是否有图形表示
    • SUSPENSION_STATE_: 流程定义的挂起状态
    • TENANT_ID_
    • ENGLISH_VERSION_
      在这里插入图片描述

2. ACT_RU_*:runtime

流程引擎中的三个关键概念 (excution\task\job) 解析:

  • Execution (执行):Execution 是 Activiti 中流程实例的表示,Execution 是流程实例的运行时状态,代表了流程的执行轨迹。
    • 当一个流程实例启动时,会创建一个 Execution。
    • Execution 代表了流程实例在运行时的状态,包括当前所在的流程节点、变量值、执行状态等。每个执行实例都有一个唯一的 ID。
  • Task (任务):Task 是流程执行过程中需要参与者执行的工作单元,与 Execution 相关联。
    • 它通常与执行相关联,表示执行所在的节点需要执行的任务。
    • 当流程实例执行到一个用户任务节点时,会创建一个 Task,并将其分配给相应的参与者。
    • Task 包含了任务的相关信息,如任务名称、任务分配人、任务处理人、任务状态等。
  • Job (作业):Job 是 Activiti 中用于处理定时任务和异步任务的机制,它们可能与 Execution、Task 相关联
    • 当某个节点需要以异步方式执行或需要定时触发时,会创建一个 Job。
    • Job 表示待执行的任务,可以包括脚本执行、消息发送、定时触发等。
    • Job 包含了定时任务或异步任务的相关信息,如触发时间、重试次数、业务数据等。

\qquad 在流程执行过程中,Execution 会依次经过不同的节点,每个节点对应一个 Task。当任务需要定时触发或以异步方式执行时,可能会创建一个 Job 来处理。

2.1 act_ru_excution**

  • 表说明:用于存储流程实例的执行信息的表
  • 表列说明:
    • ID_:执行 ID,某流程实例的第一个执行 ID 与 procInstId 一致
    • REV_
    • PROC_INST_ID_:流程实例的唯一标识符(关联)
    • BUSINESS_KEY_:与流程实例关联的业务键
    • PARENT_ID_:父执行的唯一标识符 (对于子流程、多实例等场景,可以通过父执行与上层流程实例关联)
    • PROC_DEF_ID:流程定义 ID
    • SUPER_EXEC_:父执行的超级执行的唯一标识符 (超级执行是一个用于表示多实例、并行网关等高级流程结构的特殊执行)
    • ROOT_PROC_INST_ID_:根流程实例的唯一标识符
    • ACT_ID_:当前执行所在的流程节点的唯一标识符
    • IS_ACTIVE_:表示当前执行是否处于活动状态
    • IS_CONCURRENT_:表示当前执行是否是并发执行
    • IS_SCOPE_:表示当前执行是否是一个作用域执行 (作用域执行是一个可以独立执行、包含局部变量、持有活动实例状态的执行实例)
    • IS_EVENT_SCOPE_:表示当前执行是否是一个事件作用域执行
    • IS_MI_ROOT
    • SUSPENSION_STATE_:流程实例的挂起状态,用于标识流程实例是否被挂起,挂起时不允许进行流程推进操作
    • CACHED_ENT_STATE_
    • TENANT_ID_
    • NAME_
    • START_TIME_
    • START_USER_ID_
    • LOCK_TIME_
    • IS_COUNT_ENABLED_
    • EVT_SUBSCR_COUNT_
    • TASK_COUNT_
    • JOB_COUNT_
    • TIMER_JOB_COUNT_
    • SUSP_JOB_COUNT_
    • DEADLETTER_JOB_COUNT_
    • VAR_COUNT_
    • ID_LINK_COUNT_

2.2 act_ru_task**

  • 表说明:用于存储运行时任务信息的表
  • 表列说明:
    • ID_:任务的唯一标识符
    • REV_:数据库乐观锁的版本号
    • EXECUTION_ID_:与任务关联的流程实例的执行标识符
    • PROC_INST_ID_:与任务关联的流程实例的唯一标识符
    • PROC_DEF_ID_:与任务关联的流程定义的唯一标识符
    • NAME_:任务的名称
    • PARENT_TASK_ID_:父任务的唯一标识符
    • DESCRIPTION_:任务的描述
    • TASK_DEF_KEY_:任务的定义键值
    • OWNER_:任务的所有者
    • ASSIGNEE_:任务的受派人
    • DELEGATION_:委派人的标识符
    • PRIORITY_:任务的优先级
    • CREATE_TIME_:任务的创建时间
    • DUE_DATE_:任务的到期时间
    • CATEGORY_:任务的分类
    • SUSPENSION_STATE_:任务的挂起状态
    • TENANT_ID_
    • FORM_KEY_
    • CLAIM_TIME_

2.3 act_ru_variable**

2.4 act_ru_identitylink

2.5 act_ru_job**

2.6 act_ru_deadletter_job

2.7 act_ru_suspended_job

2.8 act_ru_timer_job

2.9 act_ru_event_subscr

act_evt_log

3. ACT_ID_*:identity

4. ACT_HI_*:history

5. ACT_GE_*:general

5.1 act_ge_bytearray

  • 表说明:用于存储流程文件 (xxx.bpmn20.xml\xxx.process_id.png) 的二进制数据 (由 BYTES 列存储) 的表
  • 表列说明
    - NAME_ :流程文件路径
    - DEPLOYMENT_ID_ :流程文件部署 ID
    - BYTES_ :流程文件二进制数据
    - GENERATED_:表示是(0)否(1)是生成标识 (如果部署时仅指明了像 xxx.bpmn20.xml 一样的流程 xml 文件,那么 .png 也会存储且 GENERATED_ 列的值为 1)
    在这里插入图片描述

5.2 act_ge_property

  • 表说明:用于存储一些全局属性和配置信息的表,其存储的数据根据具体的应用和配置而定
  • 表列说明
    - NAME_:属性的名称,用于标识属性的唯一性
    - VALUE_:属性的取值,存储属性的具体数值或配置
    - REV_:属性的版本号,每次属性值发生变化时都会增加版本号
    在这里插入图片描述

6. ACT_EVT_LOG:act_evt_log

  • 表说明:记录事件日志信息的表
    • 关于事件日志可以查看:https://www.activiti.org/userguide/#advanced.event.logging
  • 表列说明
    • LOG_NR_:事件日志序号,用于标识日志的唯一性
    • TYPE_:事件类型,表示事件的种类,如任务创建、流程实例启动、节点完成等
    • PROC_DEF_ID_:流程定义 ID,标识与事件相关的流程定义
    • PROC_INST_ID_:流程实例 ID,标识与事件相关的流程实例
    • EXECUTION_ID_:执行 ID,标识与事件相关的 execution
    • TASK_ID_:任务 ID,标识与事件相关的任务
    • TIME_STAMP_:事件发生的时间戳
    • USER_ID_:相关用户的 ID,表示执行事件的用户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/824081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3中使用事件总线Bus的两种方式(mitt)

首先咱们得先下载mitt指令如下: npm i mitt --save 接下来介绍Vue3中通过mitt使用事件总线的两种方式 方式一: 该方式为全局挂载mitt,个人感觉有点繁琐,不太推荐 创建: 1.首先找到你的main.js或main.ts文件 2.引入mitt 3.…

MIT 6.S081 Lab Nine --- file system

MIT 6.S081 Lab Nine --- file system 引言File systemLarge files(moderate)预备看什么你的工作代码解析 Symbolic links(moderate)硬链接代码解析 可选的挑战练习 引言 本文为 MIT 6.S081 2020 操作系统 实验九解析。 MIT 6.S081课程前置基础参考: 基于RISC-V搭建操作系统系…

pc文件上传

1.代码&#xff1a; <template><div><el-upload:multiple"true":auto-upload"true":headers"headers":action"uploadFileUrl":before-upload"handleBeforeUpload":on-error"handleUploadError":o…

MB21 手工创建261生产订单的预留

1、前面博文中有说到新增了工单超领的移动类型Z61,我们在创建新的移动类型的时候参考的是261的移动类型。本质上Z61的配置和261也是一样的。 2、我们在MB21创建预留的时候就会遇到问题 这里系统给出了提示:不能手工创建该类型的预留。 3、SE38对程序进行修改,根据报错的信…

BES IIR EQ音效设计原理

+我V hezkz17进数字音频系统研究开发交流答疑群(课题组) BES EQ音效集成流程 1 BES 音效调试工具 audiotool_v3.5 2 EQ音效参数生成 电声学工程师根据听音效果,生成参数,一般通过截图给的软件这边。 EQ参数四元组:{ IIR滤波器类型,Gain增益,f中心频率,Q品质因数 }

0801|IO进程线程day4【stat获取文件属性】

目录 1 获取文件属性 1&#xff09;stat 2&#xff09;提取文件的权限 3&#xff09;提取文件的类型 4&#xff09;提取文件所属用户名【getpwuid函数】 5&#xff09;提取文件所属组用户名【getgrgid函数】 6&#xff09;完整代码&#xff1a; 1 获取文件属性 1&#x…

error: #5: cannot open source input file “core_cmInstr.h“

GD32F103VET6和STM32F103VET6引脚兼容。 GD32F103VET6工程模板需要包含头文件&#xff1a;core_cmInstr.h和core_cmFunc.h&#xff0c;这个和STM32F103还是有区别的&#xff0c;否则会报错&#xff0c;如下&#xff1a; error: #5: cannot open source input file "core…

AI 3D结构光技术加持,小米引领智能门锁新标准

一直以来&#xff0c;小米智能门锁系列产品让更多家庭走进了安全便捷的智能生活&#xff0c;安全至上的设计让很多家庭都轻松告别了随身钥匙。 7月27日&#xff0c;小米正式推出小米智能门锁M20 Pro&#xff0c;再一次引领智能门锁产品的发展潮流。该款门锁采用AI 3D结构光技术…

算法竞赛入门【码蹄集新手村600题】(MT1080-1100)

算法竞赛入门【码蹄集新手村600题】(MT1080-1100&#xff09; 目录MT1081 xy的和MT1082 x-y的和MT1083 向下取整MT1084 k次方根MT1085 分期付款MT1086 公里转换为米MT1087 温度转换MT1088 温度对照MT1089 整理玩具MT1090 卡罗尔序列MT1091 合并||MT1092 非常大的NMT1093 序列MT…

C语言每日一题:10.不使用+-*/实现加法+找到所有数组中消失的数。

题目一&#xff1a; 题目链接&#xff1a; 思路一&#xff1a; 1.两个数二进制之间进行异或如果不产生进位操作那么两个数的和就是就是两个数进行异或的结果。 举例&#xff1a;5&#xff08;0101&#xff09;2&#xff08;0010&#xff09;进行异或等于&#xff1a;7&#xf…

Jmeter —— jmeter接口自动化测试操作流程

在企业使用jmeter开展实际的接口自动化测试工具&#xff0c;建议按如下操作流程&#xff0c; 可以使整个接口测试过程更规范&#xff0c;更有效。 接口自动化的流程&#xff1a; 1、获取到接口文档&#xff1a;swagger、word、excel ... 2、熟悉接口文档然后设计测试用例&am…

2023年华数杯建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; 最短时间生产计划模型 该模型出现在好几个竞赛赛题上&#x…

多人任务管理,如何做好任务管理,任务管理软件

任务管理&#xff0c;简单易懂&#xff0c;就是对任务进行管理。那怎么可以更好进行任务管理呢&#xff1f;怎么样样可以让任务进度可视化&#xff0c;一目了然呢&#xff1f;有效的管理可以让我们事半功倍。 接下来我们看一下如何借助任务管理软件高效的做任务管理。 首先创…

python dataframe a.combine_first(temp) # 一张表的缺失值用另一张表填充

将a的索引和temp的索引设置为一样&#xff0c;再进行缺失值填充&#xff0c;combine_first会对所有同名的column进行填充。 a.combine_first(temp)

2.04 商品搜索功能实现

根据关键字获取分类查询对应的分页商品信息&#xff0c;并可以价格和销量进行排序切换 步骤1&#xff1a;mapper.xml编写sql语句 <!-- k: 默认&#xff0c;代表默认排序&#xff0c;根据name--> <!-- c: 根据销量排序--> <!-- p: 根据价格排序--> <sel…

【C++基础(六)】类和对象(中) --拷贝构造,运算符重载

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C初阶之路⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 类和对象 1. 前言2. 拷贝构造函数2.1 对拷贝构造函数…

Approximating Wasserstein distances with PyTorch学习

https://github.com/dfdazac/wassdistance/tree/master 前置知识 Computational optimal transport学习 具体看到熵对偶的坐标上升那就行 L C ε ( a , b ) def. min ⁡ P ∈ U ( a , b ) ⟨ P , C ⟩ − ε H ( P ) \mathrm{L}_{\mathbf{C}}^{\varepsilon}(\mathbf{a}, \m…

Kafka系列之:记录一次Kafka Topic分区扩容,但是下游flink消费者没有自动消费新的分区的解决方法

Kafka系列之:记录一次Kafka Topic分区扩容,但是下游flink消费者没有自动消费新的分区的解决方法 一、背景二、解决方法三、实现自动发现新的分区一、背景 生产环境Kafka集群压力大,Topic读写压力大,消费的lag比较大,因此通过扩容Topic的分区,增大Topic的读写性能理论上下…

【RabbitMQ(day4)】SpringBoot整合RabbitMQ与MQ应用场景说明

一、SpringBoot 中使用 RabbitMQ 导入对应的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>配置配置文件 spring:application:name: rabbitmq-springbo…

云原生落地实践的25个步骤

一、什么是云原生&#xff1f; 云原生从字面意思上来看可以分成云和原生两个部分。 云是和本地相对的&#xff0c;传统的应用必须跑在本地服务器上&#xff0c;现在流行的应用都跑在云端&#xff0c;云包含了IaaS,、PaaS和SaaS。 原生就是土生土长的意思&#xff0c;我们在开始…