camunda7数据库表结构设计介绍

1,086 阅读12分钟

Camunda引擎fork自Activiti,因此能在camunda的设计中看到大量Activiti的影子。其核心设计依赖于数据库表,用于持久化流程的状态、历史记录、任务、变量等数据。相比于Activiti,Camunda在版本 7.19 中,Camunda 对其数据库架构进行了优化和调整,以提高性能和可扩展性。本文将详细介绍 Camunda 7.19 的数据库表设计,帮助开发者更好地理解其结构和功能。

一、表结构整体概述

camunda7.19.0初始化脚本中共包含49张表:

image.png 完整的49张表及其说明如下:

分类表名称描述
资源存储act_re_deployment流程部署表
资源存储act_re_procdefBPMN流程模型定义表
资源存储act_re_case_defCMMN案例管理模型定义表
资源存储act_re_decision_defDMN决策模型定义表
资源存储act_re_decision_req_def决策请求定义
运行时act_ru_authorization流程运行时收取表
运行时act_ru_batch流程执行批处理表
运行时act_ru_case_executionCMMN案例运行执行表
运行时act_ru_case_sentry_part案例触发相关表
运行时act_ru_event_subscr流程事件订阅表
运行时act_ru_executionBPMN流程运行时记录表
运行时act_ru_ext_task流程任务消息执行表
运行时act_ru_filter流程定义查询配置表
运行时act_ru_identitylink运行时流程人员表
运行时act_ru_incident运行时异常事件表
运行时act_ru_job流程运行时作业表
运行时act_ru_jobdef流程作业定义表
运行时act_ru_meter_log流程运行时度量日志表
运行时act_ru_task流程运行时任务表
运行时act_ru_variable流程运行时变量表
组织用户信息act_id_group群组信息表
组织用户信息act_id_info用户扩展信息表
组织用户信息act_id_membership用户群组关系表
组织用户信息act_id_tenant租户信息表
组织用户信息act_id_tenant_member用户租户关系表
组织用户信息act_id_user用户信息表
历史记录act_hi_actinst历史的活动实例表
历史记录act_hi_attachment历史的流程附件表
历史记录act_hi_batch历史的批处理记录表
历史记录act_hi_caseactinst历史的CMMN活动实例表
历史记录act_hi_caseinst历史的CMMN实例表
历史记录act_hi_comment历史的流程审批意见表
历史记录act_hi_dec_in历史的DMN变量输入表
历史记录act_hi_dec_out历史的DMN变量输出表
历史记录act_hi_decinst历史的DMN实例表
历史记录act_hi_detail历史的流程运行时变量详情记录表
历史记录act_hi_ext_task_log历史的流程任务消息执行表
历史记录act_hi_identitylink历史的流程运行过程中用户关系
历史记录act_hi_incident历史的流程异常事件记录表
历史记录act_hi_job_log历史的流程作业记录表
历史记录act_hi_op_log历史操作日志表
历史记录act_hi_procinst历史的流程实例
历史记录act_hi_taskinst历史的任务实例
历史记录act_hi_varinst历史的流程变量记录表
通用数据act_ge_bytearray流程引擎二进制数据表
通用数据act_ge_property流程引擎属性配置表
通用数据act_ge_schema_log数据库脚本执行日志表

Camunda流程引擎是在activiti的基础上做的升级,因此整个库表设计能够看到大量activiti库表设计的影子。表名称都以ACT开头,第二部分是表的用例的两个字符标识,此用例也将与服务API大致匹配,主要分为:GE,RU,ID,HI,GE等5类表,每种类型说明如下:

  • ACT_RE_*:RE代表资源repositpry。如流程定义和流程资源(bmmn对应的xml文件、图片、规则等)。
  • ACT_RU_*:RU代表运行状态。这些是包含流程实例、用户任务、变量、作业等运行时数据的运行时表。引擎仅在流程实例执行期间存储运行时数据,并在流程实例结束时删除记录并进入历史表,从而保证这使运行时表不会随着流程引擎的持续运行膨胀。
  • ACT_ID_*:ID代表身份。这些表包含用户、组等标识信息。
  • ACT_HI_*:HI代表历史history。这些表包含历史数据,如过去的流程实例、变量、任务等。
  • ACT_GE_*:geeral代表通用数据,用于各种用例。

流程引擎的主表是流程定义、执行、任务、变量和事件订阅的实体。它们之间的关系如下面的UML模型所示。

image.png

核心表设计如下:

流程定义(ACT_RE_PROCDEF)

ACT_RE_PROCDEF表包含所有已部署的流程定义。它包括版本详细信息、资源名称或挂起状态等信息。

字段名称字段类型描述
ID_varchar(64)主键
REV_int(11)版本
CATEGORY_varchar(255)流程定义的Namespace分类
NAME_varchar(255)流程定义名称
KEY_varchar(255)流程定义KEY
VERSION_int(11)流程定义版本号
DEPLOYMENT_ID_varchar(64)部署ID
RESOURCE_NAME_varchar(4000)资源名称
DGRM_RESOURCE_NAME_varchar(4000)DGRM资源名称
HAS_START_FORM_KEY_tinyint(4)是否有启动表单
SUSPENSION_STATE_int(11)流程挂起
TENANT_ID_varchar(64)租户ID
VERSION_TAG_varchar(64)版本标签
HISTORY_TTL_int(11)过期时间,用于清理
STARTABLE_tinyint(1)是否是可启动流程

流程实例(ACT_HI_PROCINST)

该表存储了流程实例的历史数据。它记录了流程实例的启动、结束时间等信息。表的字段如下:

字段名称字段类型描述
ID_varchar(64)主键
PROC_INST_ID_varchar(64)流程实例ID
BUSINESS_KEY_varchar(255)业务KEY
PROC_DEF_KEY_varchar(255)流程定义KEY
PROC_DEF_ID_varchar(64)流程定义ID
START_TIME_datetime开始时间
END_TIME_datetime结束时间
REMOVAL_TIME_datetime移除时间
DURATION_bigint(20)耗时
START_USER_ID_varchar(255)启动人ID
START_ACT_ID_varchar(255)启动节点ID
END_ACT_ID_varchar(255)结束节点ID
SUPER_PROCESS_INSTANCE_ID_varchar(64)父流程实例ID
ROOT_PROC_INST_ID_varchar(64)流程实例根ID
SUPER_CASE_INSTANCE_ID_varchar(64)父案例实例ID
CASE_INST_ID_varchar(64)案例实例ID
DELETE_REASON_varchar(4000)删除原因
TENANT_ID_varchar(64)租户ID
STATE_varchar(255)状态

流程执行(ACT_RU_EXECUTION)

ACT_RU_EXECUTION表包含所有当前执行。它包括流程定义、父执行、业务键、当前活动和有关执行状态的不同元数据等信息。

字段名称字段类型描述
ID_varchar(64)主键
REV_int(11)版本
EVENT_TYPE_varchar(255)事件类型
EVENT_NAME_varchar(255)事件名称
EXECUTION_ID_varchar(64)执行ID
PROC_INST_ID_varchar(64)流程实例ID
ACTIVITY_ID_varchar(255)节点ID
CONFIGURATION_varchar(255)配置
CREATED_datetime创建时间
TENANT_ID_varchar(64)租户ID

待办任务(ACT_RU_TASK)

ACT_RU_TASK表包含所有正在运行的流程实例的所有打开的任务。它包括相应的流程实例、执行以及元数据(如创建时间、受理人或截止日期)等信息。

字段名称字段类型描述
ID_varchar(64)主键
REV_int(11)版本
EXECUTION_ID_varchar(64)流程执行ID
PROC_INST_ID_varchar(64)流程实例ID
PROC_DEF_ID_varchar(64)流程定义ID
CASE_EXECUTION_ID_varchar(64)案例执行ID
CASE_INST_ID_varchar(64)案例实例ID
CASE_DEF_ID_varchar(64)案例定义ID
NAME_varchar(255)名称
PARENT_TASK_ID_varchar(64)父任务ID
DESCRIPTION_varchar(4000)描述
TASK_DEF_KEY_varchar(255)任务定义KEY
OWNER_varchar(255)委托人
ASSIGNEE_varchar(255)办理人
DELEGATION_varchar(64)委托状态
PRIORITY_int(11)优先级
CREATE_TIME_datetime创建时间
DUE_DATE_datetime截止时间
FOLLOW_UP_DATE_datetime跟踪时间
SUSPENSION_STATE_int(11)挂起状态
TENANT_ID_varchar(64)租户ID

流程变量(ACT_RU_VARIABLE)

ACT_RU_VARIABLE表包含所有当前设置的流程或任务变量。它包括变量的名称、类型和值,以及有关相应流程实例或任务的信息。

字段名称字段类型描述
ID_varchar(64)主键
REV_int(11)版本
TYPE_varchar(255)变量类型
NAME_varchar(255)变量名称
EXECUTION_ID_varchar(64)流程执行ID
PROC_INST_ID_varchar(64)流程实例ID
CASE_EXECUTION_ID_varchar(64)案例执行ID
CASE_INST_ID_varchar(64)案例实例ID
TASK_ID_varchar(64)任务ID
BYTEARRAY_ID_varchar(64)二进制内容ID
DOUBLE_doubleDOUBLE类型值
LONG_bigint(20)LONG类型值
TEXT_varchar(4000)文本值
TEXT2_varchar(4000)文本值 2
VAR_SCOPE_varchar(64)变量范围
SEQUENCE_COUNTER_bigint(20)序列计数器
IS_CONCURRENT_LOCAL_tinyint(4)是否并发
TENANT_ID_varchar(64)租户ID

事件订阅(ACT_RU_EVENT_SUBSCR)

ACT_RU_EVENT_SUBSCR表包含所有当前存在的事件预订。它包括预期事件的类型、名称和配置,以及有关相应流程实例和执行的信息。

字段名称字段类型描述
ID_varchar(64)主键
REV_int(11)版本
EVENT_TYPE_varchar(255)事件类型
EVENT_NAME_varchar(255)事件名称
EXECUTION_ID_varchar(64)执行ID
PROC_INST_ID_varchar(64)流程实例ID
ACTIVITY_ID_varchar(255)节点ID
CONFIGURATION_varchar(255)配置
CREATED_datetime创建时间
TENANT_ID_varchar(64)租户ID

二、camunda表结构-实体关系图

数据库不是公共API的一部分。数据库架构可能会因次要和主要版本更新而更改。

请注意:以下图表基于MySQL数据库模式,对于其他数据库,关系图可能略有不同。

下面的实体关系图可视化数据库表及其显式外键约束,按BPMN引擎、DMN引擎、CMMN引擎、引擎历史记录和标识分组。请注意,图表不会将表之间的隐式连接可视化。

2.1、BPMN流程引擎

BPMN引擎共20张表,它们的实体定义和表关系如下:

image.png BPMN引擎数据库表说明:

表名称表用途说明
ACT_GE_PROPERTY流程引擎参数信息表
ACT_GE_SCHEMA_LOG数据库版本日志表
ACT_RE_PROCDEFBPMN流程模型定义表
ACT_RE_DEPLOYMENTBPMN流程模型部署表
ACT_RE_CAMFORMDEF流程表单定义表
ACT_GE_BYTEARRAY二进制数据存储表(BPMN模型、表单、脚本、决策表等流程引擎所需的二进制数据)
ACT_RU_TASK_METER_LOGTask任务性能指标日志表
ACT_RU_EXECUTION流程引擎执行实例表
ACT_RU_JOB定时器作业运行表
ACT_RU_JOBDEF定时器作业定义表
ACT_RU_VARLABLE流程运行时变量表
ACT_RU_EXT_TASK外部任务待办表
ACT_RU_INCIDENT运行时异常记录表
ACT_RU_AUTHORIZATION资源授权权限表
ACT_RU_FILTER流程查询过滤器定义表
ACT_RU_METER_LOG流程指标日志记录表
ACT_RU_TASK待办任务表
ACT_RU_EVENT_SUBSCR事件订阅表
ACT_RU_IDENTITYLINK流程处理用户ID关联表
ACT_RU_BATCH流程批处理信息表

2.2、DMN决策引擎

image.png DMN引擎数据库表说明:

表名称表用途说明
ACT_RE_DECISION_DEFDMN决策定义表
ACT_RE_DECISION_REQ_DEFDMN决策需求定义表

2.3、CMMN案例引擎

CMMN(案例)引擎共5张表,其中待办任务和变量表,复用流程引擎的ACT_RU_TASK和ACT_RU_VARLABLE表。

image.png

CMMN(案例)引擎数据库表说明:

表名称表用途说明
ACT_RE_CASE_DEFCMMN模型定义表
ACT_RU_CASE_EXECUTIONCMMN实例执行信息表
ACT_RU_CASE_SENTRY_PARTCMMN案例实例中的哨兵条件配置和评估结果信息表
ACT_RU_TASK待办任务表,跟BPMN引擎复用一张表
ACT_RU_VARLABLE流程运行时变量表,跟BPMN引擎复用一张表

2.4、实例历史记录表

camunda流程实例历史记录表共18张表,为了允许不同的配置并使表更加灵活,历史表不包含外键约束

image.png

流程实例历史记录数据库表说明:

表名称表用途说明
ACT_HI_PROCINST流程实例的历史记录表
ACT_HI_ACTINST活动实例的历史记录表
ACT_HI_ATTACHMENT流程附件的历史记录表
ACT_HI_BATCH批处理的历史记录表
ACT_HI_COMMENT流程审批意见的历史记录表
ACT_HI_DETAIL流程变量详情的历史记录表
ACT_HI_EXT_TASK_LOG外部任务执行日志的历史记录表
ACT_HI_IDENTITYLINK待办处理用户关系的历史记录表
ACT_HI_INCIDENT流程异常事件的历史记录表
ACT_HI_JOB_log定时作业的历史记录表
ACT_HI_OP_log操作日志的历史记录表
ACT_HI_TASKINST流程待办任务的历史记录表
ACT_HI_VARINST流程变量的历史记录表
ACT_HI_DECINSTDMN决策实例的历史记录表
ACT_HI_DEC_INDMN决策变量输入的历史记录表
ACT_HI_DEC_OUTDMN决策变量输出的历史记录表
ACT_HI_CASEINSTCMMN实例的历史记录表
ACT_HI_CASEACTINSTCMMN活动实例的历史记录表

2.5、组织用户身份表

image.png

用户身份数据库表说明:

表名称表用途说明
ACT_ID_USER用户信息表
ACT_ID_GROUP群组信息表
ACT_ID_MEMBERSHIP用户群组关系表
ACT_ID_INFO用户扩展信息表
ACT_ID_TENANT租户信息表
ACT_ID_TENANT_MEMBER租户成员表

本文引用列表

注:本文主要引用[1],文章内容在其基础上对部分描述加以本人的理解做了修改。针对全部49表的详细介绍可见[2]。

[1] camunda数据库表结构详细说明
[2] camunda数据库表结构介绍