(一)大体分类
参考:
https://www.devdoc.cn/activiti-table-summary.html
流程实例通过Activiti引擎进行流程的过程数据都会持久化到数据库中,这里支持多种常见的关系型数据库,比如MySQL Oracle 等等
数据表分类 | 描述 |
---|---|
ACTRE* | ‘RE’表示 repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。 |
ACTRU* | ‘RU’表示 runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。 |
ACTHI* | ‘HI’表示 history。 这些表包含历史数据(在 ACTRU*的一堆数据最终跑完结束之后都会把流程信息记录下来),比如历史流程实例, 变量,任务等等。 |
ACTGE* | GE表示 general。通用数据, 用于不同场景下。 |
ACTID* | ID表示identity,这个身份信息表 |
act_evt_log | 记录日志的 |
act_procdef_info | 这个表是流程定义信息的具体内容的表. |
act_evt_log日志记录表
ACTGE*
ACTGE* : “GE”代表“General”(通用),用在各种情况下;
(一)act_ge_bytearray通用的流程定义和流程资源
二进制数据表,存储通用的流程定义和流程资源
用来保存部署文件的大文本数据。
保存流程定义图片和xml、Serializable(序列化)的变量,即保存所有二进制数据,特别注意类路径部署时候,不要把svn等隐藏文件或者其他与流程无关的文件也一起部署到该表中,会造成一些错误(可能导致流程定义无法删除)。
字段名 | 字段描述 | 数据类型 |
---|---|---|
ID_ | 主键ID,资源文件编号,自增长 | VARCHAR(64) |
REV_ | 版本号 | INT(11) |
NAME_ | 部署的文件名称, | VARCHAR(255) |
DEPLOYMENTID | 来自于父表ACT_RE_DEPLOYMENT的主键 | VARCHAR(64) |
BYTES_ | 大文本类型,存储文本字节流 | LONGBLOB |
GENERATED_ | 是否是引擎生成。 0为用户生成 1为Activiti生成(有待确认是否真实) |
TINYINT(4) |
(二)act_ge_property系统相关属性
属性数据表。存储这个流程引擎级别的数据。
字段名 | 字段描述 | 数据类型 |
---|---|---|
NAME_ | 属性名称 | VARCHAR(64) |
VALUE_ | 属性值 | VARCHAR(300) |
REV_INT | 版本号 | INT(11) |
ACTHI*
ACTHI* : “HI”代表“History”(历史),这些表中保存的都是历史数据,比如执行过的流程实例、变量、任务,等等。Activit默认提供了4种历史级别:
Ø none: 不保存任何历史记录,可以提高系统性能;
Ø activity:保存所有的流程实例、任务、活动信息;
Ø audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;
Ø full:最完整的历史记录,除了包含audit级别的信息之外还能保存详细,例如:流程变量。
对于几种级别根据对功能的要求选择,如果需要日后跟踪详细可以开启full。
(一)act_hi_actinst历史的流程实例
历史活动信息。这里记录流程流转过的所有节点,与HITASKINST不同的是,taskinst只记录usertask内容,如果有一行数据的end_time字段没有值,说明这行记录对应的流程还没有结束.
1. 每次进行流程节点审批的时候,会往这个表里面插入一条数据,此时END_TIME字段为null
2. 进行节点流程审批会修改当前相同流程实例id的上一个节点的那行的修改时间等等字段
字段名 | 字段描述 | 数据类型 |
---|---|---|
ID_ | 主键 | VARCHAR(64) |
PROCDEF_ID | 流程定义ID | VARCHAR(64) |
PROCINST_ID | 流程实例ID | VARCHAR(64) |
EXECUTIONID | 流程执行ID | VARCHAR(64) |
ACTID | 活动ID(节点定义ID) | VARCHAR(255) |
TASKID | 任务ID(任务实例ID 其他节点类型实例ID在这里为空) | VARCHAR(64) |
CALLPROC_INST_ID | 请求流程实例ID(调用外部流程的流程实例ID’) | VARCHAR(64) |
ACTNAME | 活动名称(节点定义名称) | VARCHAR(255) |
ACTTYPE | 活动类型如startEvent、userTask | VARCHAR(255) |
ASSIGNEE_ | 代理人员(节点签收人) | VARCHAR(64) |
STARTTIME | 开始时间 2013-09-15 11:30:00 |
DATETIME |
ENDTIME | 结束时间 格式是:2013-09-15 11:30:00 如果这个字段没有值,说明这行记录对应的流程还没有结束 |
DATETIME |
DURATION_ | 时长,耗时(毫秒值) | BIGINT(20) |
TENANTID |
默认是”” (空字符串儿) | varchar(255) |
(二)act_hi_attachment历史的流程附件
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
REV_ | REV_ | INT(11) | Version |
USERID | 用户id | VARCHAR(255) | 用户ID |
NAME_ | 名称 | VARCHAR(255) | 附件名称 |
DESCRIPTION_ | 描述 | VARCHAR(4000) | 描述 |
TYPE_ | 类型 | VARCHAR(255) | 附件类型 |
TASKID | 任务Id | VARCHAR(64) | 节点实例ID |
PROCINST_ID | 流程实例ID | VARCHAR(64) | 流程实例ID |
URL_ | 连接 | VARCHAR(4000) | 附件地址 |
CONTENTID | 内容Id 字节表的ID |
VARCHAR(64) | ACT_GE_BYTEARRAY的ID |
TIME_ |
datetime(3) |
(三)act_hi_comment历史的说明性信息
历史审批意见表
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
TYPE_ | 意见记录类型,为comment时,为处理意见 | VARCHAR(255) | 类型:event(事件) comment(意见) |
TIME_ | 记录时间 | DATETIME | 填写时间 |
USERID | 用户Id | VARCHAR(255) | 填写人 |
TASKID | 任务Id | VARCHAR(64) | 节点实例ID |
PROCINST_ID | 流程实例Id | VARCHAR(64) | 流程实例ID |
ACTION_ | 行为类型。 为addcomment时,为处理意见 |
VARCHAR(255) | 值为下列内容中的一种: AddUserLink、DeleteUserLink、AddGroupLink、DeleteGroupLink、AddComment、AddAttachment、DeleteAttachment |
MESSAGE_ | 处理意见 | VARCHAR(4000) | 用于存放流程产生的信息,比如审批意见 |
FULLMSG | 全部消息 | LONGBLOB |
(四)act_hi_detail历史的流程运行中的细节信息
历史详情表:流程中产生的变量详细,包括控制流程流转的变量,业务表单中填写的流程需要用到的变量等。
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
TYPE_ | 数据类型 | VARCHAR(255) | 类型: FormProperty, //表单 VariableUpdate //参数 |
PROCINST_ID | 流程实例ID | VARCHAR(64) | 流程实例ID |
EXECUTIONID | 执行实例Id | VARCHAR(64) | 执行实例ID |
TASKID | 任务Id | VARCHAR(64) | 任务实例ID |
ACTINST_ID | 活动实例Id | VARCHAR(64) | ACT_HI_ACTINST表的ID |
NAME_ | 名称 | VARCHAR(255) | 名称 |
VARTYPE | 变量类型 | VARCHAR(255) | 参见VARTYPE类型说明 |
REV_ | REV_ | INT(11) | Version |
TIME_ | 创建时间 | DATETIME | 创建时间 |
BYTEARRAYID | 字节数组Id | VARCHAR(64) | ACT_GE_BYTEARRAY表的ID |
DOUBLE_ | DOUBLE_ | DOUBLE | 存储变量类型为Double |
LONG_ | LONG_ | BIGINT(20) | 存储变量类型为long |
TEXT_ | 值 | VARCHAR(4000) | 存储变量值类型为String |
TEXT2_ | 值2 | VARCHAR(4000) | 此处存储的是JPA持久化对象时,才会有值。此值为对象ID |
备注:VARTYPE类型说明: jpa-entity、boolean、bytes、serializable(可序列化)、自定义type(根据你自身配置)、 CustomVariableType、date、double、integer、long、null、short、string
(五)act_hi_identitylink 历史流程人员表
任务参与者数据表。主要存储历史节点参与者的信息
进行流程节点审批的时候,这个表里面会插入一条数据.
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
GROUPID | 用户组ID | VARCHAR(255) | 组ID |
TYPE_ | 用户组类型 | VARCHAR(255) | 类型,主要分为以下几种: assignee、 candidate、 owner、starter 、participant |
USERID | 用户ID | VARCHAR(255) | 用户ID |
TASKID | 任务Id | VARCHAR(64) | 节点实例ID |
PROCINST_ID | 流程实例Id | VARCHAR(64) | 流程实例ID |
(六)act_hi_procinst历史的流程实例信息(核心表)
历史的流程实例,可以通过流程实例id从这个表里面找数据
在新启动一条流程实例的时候,这个表里面会插入一条数据,但是如果这个流程实例没有结束的话,ENDTIME这个字段为null,如果这个流程实例已经结束了,ENDTIME就会有结束时间
最后一次流程节点审批会修改这个表的数据,修改时间啥的
字段名 | 字段描述 | 数据类型 |
---|---|---|
ID_ | 主键 | VARCHAR(64) |
PROCINST_ID | 流程实例ID | VARCHAR(64) |
BUSINESSKEY | 业务主键,业务表单的ID | VARCHAR(255) |
PROCDEF_ID | 流程定义Id | VARCHAR(64) |
STARTTIME | 开始时间 | DATETIME |
ENDTIME | 结束时间(如果这个字段为null,说明这条记录对应的流程实例还没有结束,还在正常执行中) | DATETIME |
DURATION_ | 耗时 | BIGINT(20) |
STARTUSER_ID | 发起人员Id | VARCHAR(255) |
STARTACT_ID | 起草环节ID | VARCHAR(255) |
ENDACT_ID | 结束环节ID | VARCHAR(255) |
SUPERPROCESS_INSTANCE_ID | 父流程实例ID | VARCHAR(64) |
DELETEREASON | 删除理由 | VARCHAR(4000) |
TENANTID | 默认是空字符串 | varchar(255) |
NAME_ | varchar(255) |
(七)act_hi_taskinst 历史的任务实例信息(核心表)
启动一个新的流程实例的时候,这个表会多出一条数据出来,可以根据STARTTIME字段来查看哪条数据是最新添加的,此时ENDTIME为null
每次进行流程节点审批的时候这个表也会插入一条数据,同时修改相同流程实例id的上一个流程节点那条数据.
任务实例
字段名 | 字段描述 | 数据类型 |
---|---|---|
ID_ | 主键ID | VARCHAR(64) |
PROCDEF_ID | 流程定义Id | VARCHAR(64) |
TASKDEF_KEY | 任务定义Key | VARCHAR(255) |
PROCINST_ID | 流程实例ID | VARCHAR(64) |
EXECUTIONID | 执行实例ID | VARCHAR(64) |
NAME_ | 名称 | VARCHAR(255) |
PARENTTASK_ID | 父节点实例ID | VARCHAR(64) |
DESCRIPTION_ | 描述 | VARCHAR(4000) |
OWNER_ | 签收人(默认为空,只有在委托时才有值) | VARCHAR(255) |
ASSIGNEE_ | 签收人或被委托 | VARCHAR(255) |
STARTTIME | 开始时间 | DATETIME |
CLAIMTIME | 提醒时间 | DATETIME |
ENDTIME | 结束时间 | DATETIME |
DURATION_ | 耗时 | BIGINT(20) |
DELETEREASON | 删除原因(completed,deleted) | VARCHAR(4000) |
PRIORITY_ | 优先级 | INT(11) |
DUEDATE | 应完成时间 | DATETIME |
FORMKEY | desinger节点定义的 form_key属性 |
VARCHAR(255) |
CATEGORY_ |
varchar(255) |
|
TENANTID |
默认是空字符串 | varchar(255) |
(八)act_hi_varinst历史的流程运行中的变量信息
启动的一个新的流程实例之后这个表会多 数据,
字段名 | 字段描述 | 数据类型 |
---|---|---|
ID_ | 主键 | VARCHAR(64) |
PROCINST_ID | 流程实例ID | VARCHAR(64) |
EXECUTIONID | 执行实例ID | VARCHAR(64) |
TASKID | 任务实例Id | VARCHAR(64) |
NAME_ | 名称 | VARCHAR(255) |
VARTYPE | 变量类型,参见VARTYPE类型说明 | VARCHAR(100) |
REV_ | REV_ 版本号 | INT(11) |
BYTEARRAYID | 字节数组ID,ACT_GE_BYTEARRAY表的主键 | VARCHAR(64) |
DOUBLE_ | DOUBLE_ | DOUBLE |
LONG_ | 存储LongType类型的数据 | BIGINT(20) |
TEXT_ | 存储变量值类型为String,如此处存储持久化对象时,值jpa对象的class | VARCHAR(4000) |
TEXT2_ | 此处存储的是JPA持久化对象时,才会有值。此值为对象ID | VARCHAR(4000) |
CREATETIME |
创建时间 | datetime(3) |
LASTUPDATED_TIME |
最后修改时间 | datetime(3) |
ACTID*
ACTID* : “ID”代表“Identity”(身份),这些表中保存的都是身份信息,如用户和组以及两者之间的关系。如果Activiti被集成在某一系统当中的话,这些表可以不用,可以直接使用现有系统中的用户或组信息;
(一)act_id_group用户组表
用来存储用户组信息。
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
REV_ | 版本号 | INT(11) | |
NAME_ | 用户组描述信息 | VARCHAR(255) | |
TYPE_ | 用户组类型 | VARCHAR(255) |
(二)act_id_info用户扩展信息表
用户扩展信息表。
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
REV_ | 版本号 | INT(11) | |
USERID | 用户ID | VARCHAR(64) | |
TYPE_ | 类型 | VARCHAR(64) | |
KEY_ | formINPut名称 | VARCHAR(255) | |
VALUE_ | 值 | VARCHAR(255) | |
PASSWORD_ | 密码 | LONGBLOB | |
PARENTID | 父节点 | VARCHAR(255) |
(三)act_id_membership保存用户分组信息表
用来保存用户的分组信息
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
USERID | 用户Id | VARCHAR(64) | |
GROUPID | 用户组Id | VARCHAR(64) |
(四)act_id_user 用户信息表
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
REV_ | 版本号 | INT(11) | |
FIRST_ | 用户名称 | VARCHAR(255) | |
LAST_ | 用户姓氏 | VARCHAR(255) | |
EMAIL_ | 邮箱 | VARCHAR(255) | |
PWD_ | 密码 | VARCHAR(255) | |
PICTUREID | 头像Id | VARCHAR(64) |
act_procdef_info
act_procdef_info 这个表是流程定义信息的具体内容的表.
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
PROCDEF_ID | varchar(64) | ||
REV_ | int(11) | ||
INFOJSON_ID | varchar(64) |
ACTRE*
ACTRE* : “RE”代表“Repository”(仓库),这些表中保存一些‘静态’信息,如流程定义和流程资源(如图片、规则等);
(一)act_re_deployment部署单元信息
流程部署完了相关部署信息都会保存在这个表里面
用来存储部署时需要持久化保存下来的信息
字段名 | 字段描述 | 数据类型 |
---|---|---|
ID_ | VARCHAR(64) | |
NAME_ | 这个流程的名字,通过createDeployment()方法的.name来设置 |
VARCHAR(255) |
CATEGORY_ | 流程定义的类别,通过createDeployment().category 方法来设置 |
VARCHAR(255) |
TENANTID | 一个流程图我可以部署多次,为了区分这多个流程定义可以设置tenantId,通过createDeployment().tenantId方法来设置,可以重复 |
VARCHAR(255) |
DEPLOYTIME | 部署时间 | TIMESTAMP |
(二)act_re_model模型信息
创建流程的设计模型时,保存在该数据表中。
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
REV_ | INT(11) | 11 | |
NAME_ | 模型的名称: 比如:收文管理 |
VARCHAR(255) | |
KEY_ | 模型的关键字,流程引擎用到。 比如:FTOA_SWGL |
VARCHAR(255) | 分类,例如: http://www.mossle.com/docs/activiti/ |
CATEGORY_ | 类型,用户自己对流程模型的分类。 | VARCHAR(255) | |
CREATETIME | 创建时间 | TIMESTAMP | |
LASTUPDATE_TIME | 最后修改时间 | TIMESTAMP | |
VERSION_ | 版本,从1开始。 | INT(11) | 版本 |
METAINFO | 数据源信息,比如: {“name”:”FTOA_SWGL”,”revision”:1,”description”:”丰台财政局OA,收文管理流程”} |
VARCHAR(4000) | 以json格式保存流程定义的信息 |
DEPLOYMENTID | 部署ID | VARCHAR(64) | 部署ID |
EDITORSOURCE_VALUE_ID | 编辑源值ID | VARCHAR(64) | 是 ACTGE_BYTEARRAY 表中的ID值。 |
EDITORSOURCE_EXTRA_VALUE_ID | 编辑源额外值ID(外键ACT_GE_BYTEARRAY ) | VARCHAR(64) | 是 ACTGE_BYTEARRAY 表中的ID值。 |
TENANTID | 租户 | 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_ | 主键 | VARCHAR(64) | 主键ID |
REV_ | 版本号 | INT(11) | 乐观锁 |
CATEGORY_ | 流程命名空间(该编号就是流程文件targetNamespace的属性值) | VARCHAR(255) | 流程定义的Namespace就是类别 |
NAME_ | 流程名称(该编号就是流程文件process元素的name属性值) | VARCHAR(255) | 名称 |
KEY_ | 流程编号(该编号就是流程文件process元素的id属性值) | VARCHAR(255) | |
VERSION_ | 流程版本号(由程序控制,新增即为1,修改后依次加1来完成的) | INT(11) | |
DEPLOYMENTID | 部署编号 | VARCHAR(64) | 部署表ID |
RESOURCENAME | 资源文件名称 | VARCHAR(4000) | 流程bpmn文件名称 |
DGRMRESOURCE_NAME | 图片资源文件名称 | VARCHAR(4000) | png流程图片名称 |
DESCRIPTION_ | 描述信息 | VARCHAR(4000) | 描述 |
HASSTART_FORM_KEY | 是否从key启动 | TINYINT(4) | start节点是否存在formKey 0否 1是 |
SUSPENSIONSTATE | 是否挂起 | INT(11) | 1激活 2挂起 |
TENANTID |
varchar(255) |
不同系统用一个流程定义来启动流程实例,tenantId用以区分同一个流程定义下分属不同系统的流程实例 |
ACTRU*
ACTRU* : “RU”代表“Runtime”(运行时),这些表中保存一些流程实例、用户任务、变量等的运行时数据。Activiti只保存流程实例在执行过程中的运行时数据,并且当流程结束后会立即移除这些数据,这是为了保证运行时表尽量的小并运行的足够快;
(一)act_ru_event_subscr运行时事件
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
REV_ | 版本号 | INT(11) | |
EVENTTYPE | 事件类型 | VARCHAR(255) | |
EVENTNAME | 事件名称 | VARCHAR(255) | |
EXECUTIONID | 流程执行ID | VARCHAR(64) | |
PROCINST_ID | 流程实例ID | VARCHAR(64) | |
ACTIVITYID | 活动ID | VARCHAR(64) | |
CONFIGURATION_ | 配置信息 | VARCHAR(255) | |
CREATED_ | 创建时间 | TIMESTAMP | |
PROCDEF_ID | varchar(64) | ||
TENANTID | varchar(255) |
(二)act_ru_execution运行时流程执行实例
核心,我的代办任务查询表,是流程实例的执行表,记录当前流程实例的执行情况 , 如果有实例正在跑的话,会在这个表里面有记录,这个表有个businesskey. 如果流程实例跑完了,在这个表里面对应这个流程实例的那条记录将会被删除掉.
当你执行runtimeService.startProcessInstanceByKey方法启动一个流程实例的时候,这个表会多若干条记录,
每次进行流程审批的时候会更新这个表的相关信息.
Businesskey:业务标识,通常为业务表的主键,业务标识和流程实例一一对应。业务标识来源于业务系统。存储业务标识就是根据业务标识来关联查询业务系统的数据。 比如:请假流程启动一个流程实例,就可以将请假单的 id 作为业务标识存储到 activiti中,将来查询activiti的流程实例信息就可以获取请假单的 id 从而关联查询业务系统数据库得到请假单信息。 |
---|
字段名 | 字段描述 | 数据类型 |
---|---|---|
ID_ | 主键,这个主键有可能和PROCINST_ID相同,相同的情况表示这条记录为主实例记录。 | VARCHAR(64) |
REV_ | 表示数据库表更新次数。 | INT(11) |
PROCINST_ID | 流程实例ID(一个流程实例不管有多少条分支实例,这个ID都是一致的。) | VARCHAR(64) |
BUSINESSKEY | 这个为业务主键,主流程才会使用业务主键,另外这个业务主键字段在表中有唯一约束。 | VARCHAR(255) |
PARENTID | 父执行流程(父节点实例ID),这个记录表示父实例ID,如上图,同步节点会产生两条执行记录,这两条记录的父ID为主线的ID。 | VARCHAR(64) |
PROCDEF_ID | 流程定义Id | VARCHAR(64) |
SUPEREXEC | 这个如果存在表示这个实例记录为一个外部子流程记录,对应主流程的主键ID。 | VARCHAR(64) |
ACTID | 实例id(节点实例ID即 ACT_HI_ACTINST中ID) |
VARCHAR(255) |
ISACTIVE | 激活状态(是否存活) 是否活动流程实例,比如上图,主流程为非活动实例,下面两个为活动实例,如果UserTask2完成,那么这个值将变为0即非活动 | TINYINT(4) |
ISCONCURRENT | 并发状态,是否为并行(true/false) | TINYINT(4) |
ISSCOPE | 这个字段我跟踪了一下不同的流程实例,如会签,子流程,同步等情况,发现主实例的情况这个字段为1,子实例这个字段为0。 | TINYINT(4) |
ISEVENT_SCOPE | 没有使用到事件的情况下,一般都为0。 | TINYINT(4) |
SUSPENSIONSTATE | 挂起状态 1激活 2挂起 | INT(11) |
CACHEDENT_STATE | 缓存结束状态_ | INT(11) |
TENANTID |
这个字段表示租户ID。可以应对多租户的设计。 | varchar(255) |
NAME_ |
varchar(255) |
|
LOCKTIME |
timestamp(3) |
1.并行流程的表关系分析
当你的流程图为单向的时候则EXECUTIONID和PROC_INST_ID是一样的
这个对应的EXECUTION数据为:
这个图就描述的很清楚了。
10000001020315 记录为主流程,实例ID都为10000001020315,分支流程实例的父ID为10000001020315。
PROC_INST_ID:一个流程实例不管有多少条分支实例,这个ID都是一致的。
BUSINESSKEY:这个为业务主键,主流程才会使用业务主键,另外这个业务主键字段在表中有唯一约束。
PARENTID:这个记录表示父实例ID,如上图,同步节点会产生两条执行记录,这两条记录的父ID为主线的ID。
ACTID:表示流程运行到的节点,如上图主实例运行到ANDGateway1 节点。两个子实例运行到UserTask1,UserTask2节点。
ISACTIVE : 是否活动流程实例,比如上图,主流程为非活动实例,下面两个为活动实例,如果UserTask2完成,那么这个值将变为0即非活动。
ISCONCURRENT:是否并发。上图同步节点后为并发,如果是并发多实例也是为1。
(三)act_ru_identitylink运行时用户关系信息
启动一个新的流程实例之后,会往这个表里面多插入一条数据,
进行任务审批的时候会往这个表里面插入一条数据.
主要存储当前节点参与者的信息,任务参与者数据表。
字段名 | 字段描述 | 数据类型 | 备注 |
---|---|---|---|
ID_ | 主键 | VARCHAR(64) | 主键ID |
REV_ | 版本号 | INT(11) | |
GROUPID | 用户组ID | VARCHAR(255) | |
TYPE_ | 用户组类型 | VARCHAR(255) | 主要分为以下几种:assignee、candidate、 owner、starter、participant。即:受让人,候选人,所有者、起动器、参与者 |
USERID | 用户ID | VARCHAR(255) | |
TASKID | 任务Id | VARCHAR(64) | |
PROCINST_ID | 流程实例ID | VARCHAR(64) | |
PROCDEF_ID | 流程定义Id | VARCHAR(64) |
(四)act_ru_job运行中的任务
运行时定时任务数据表
定时任务都存储在act_ru_job表中,时间到了就会执行,如果我想修改定时任务的属性或者删除的话可以使用managementService中的方法
字段名 | 字段描述 | 数据类型 |
---|---|---|
ID_ | 主键ID | VARCHAR(64) |
REV_ | 版本 | INT(11) |
TYPE_ | 类型 | VARCHAR(255) |
LOCKEXP_TIME | 锁定释放时间 | TIMESTAMP |
LOCKOWNER | 挂起者 | VARCHAR(255) |
EXCLUSIVE_ | TINYINT(1) | |
EXECUTIONID | 执行实例ID | VARCHAR(64) |
PROCESSINSTANCE_ID | 流程实例ID | VARCHAR(64) |
PROCDEF_ID | 流程定义ID | VARCHAR(64) |
RETRIES_ | INT(11) | |
EXCEPTIONSTACK_ID | 异常信息ID | VARCHAR(64) |
EXCEPTIONMSG | 异常信息 | VARCHAR(4000) |
DUEDATE_ | 到期时间 | TIMESTAMP |
REPEAT_ | 重复 | VARCHAR(255) |
HANDLERTYPE | 处理类型 | VARCHAR(255) |
HANDLERCFG | 标识 | VARCHAR(4000) |
TENANTID | varchar(255) |
(五)act_ru_task 运行时任务
运行时任务节点表(只有一条记录,查询速度是最快的.)
进行任务节点审批的时候,这个表会新增一条数据,同时可能会删除当前流程id相同的同时REV_版本号为上一个的那条数据
字段名 | 字段描述 | 数据类型 |
---|---|---|
ID_ | 主键 | VARCHAR(64) |
REV_ | 版本号(乐观锁) | INT(11) |
EXECUTIONID | 执行实例id (外键EXECUTIONID)和act_ru_execution表有对应关系 |
VARCHAR(64) |
PROCINST_ID | 流程实例ID(外键PROCINST_ID) | VARCHAR(64) |
PROCDEF_ID | 流程定义ID | VARCHAR(64) |
NAME_ | 节点定义的名称 | VARCHAR(255) |
PARENTTASK_ID | 父亲节点实例id | VARCHAR(64) |
DESCRIPTION_ | 节点定义描述 | VARCHAR(4000) |
TASKDEF_KEY | 任务定义的id | VARCHAR(255) |
OWNER_ | 拥有者(一般情况下为空,只有在委托时才有值) | VARCHAR(255) |
ASSIGNEE_ | 签收人或委托人 | VARCHAR(255) |
DELEGATION_ | 委托类型,DelegationState分为两种:PENDING,RESOLVED。如无委托则为空 | VARCHAR(64) |
PRIORITY_ | 优先级别,默认为:50 | INT(11) |
CREATETIME | 创建时间 | TIMESTAMP |
DUEDATE | 执行时间 | DATETIME |
SUSPENSIONSTATE | 暂停状态(1.代表激活 2.代表挂起) | INT(11) |
TENANTID |
varchar(255) |
|
FORMKEY |
varchar(255) |
(六)act_ru_variable运行时变量表
启动一个新的流程实例之后,会往这个表里面插入若干条数据,应该是取决于这个新的流程实例的数量来决定的.
运行时流程变量数据表, 设置流程变量的时候这里会有数据,可以从这里查询出来这个流程的是谁发起的,现在该谁审批了
字段名 | 字段描述 | 数据类型 |
---|---|---|
ID_ | 主键 | VARCHAR(64) |
REV_ | 版本号,每修改一次就好变更一次 | INT(11) |
TYPE | 编码类型,参数变量类型,设置流程实例变量如果是Integer类型的,这行数据的这个字段值就是Integer | VARCHAR(255) |
NAME_ | 流程变量的名称 | VARCHAR(255) |
EXECUTIONID | 执行实例Id | VARCHAR(64) |
PROCINST_ID | 流程实例Id | VARCHAR(64) |
TASKID | 节点实例ID | VARCHAR(64) |
BYTEARRAYID | 字节表的ID (ACT_GE_BYTEARRAY) |
VARCHAR(64) |
DOUBLE_ | 存储变量类型为Double | DOUBLE |
LONG_ | 存储变量类型为long | BIGINT(20) |
TEXT_ | 存储变量值类型为String 如此处存储持久化对象时,值jpa对象的class |
VARCHAR(4000) |
TEXT2_ | 此处存储的是JPA持久化对象时,才会有值。此值为对象ID | VARCHAR(4000) |
启动流程实例操作的数据表
SELECT FROM act_ru_execution #流程实例执行表,记录当前流程实例的执行情况
说明:
流程实例执行,如果当前只有一个分支时,一个流程实例只有一条记录且执行表的主键 id 和流程实
例 id 相同,如果当前有多个分支正在运行则该执行表中有多条记录,存在执行表的主键和流程实例
id 不相同的记录。 不论 当前有几个分支总会有一条记录的执行表的主键和流程 实例 id 相同
一个流程实例运行完成,此表中与流程实例相关的记录删除。
SELECT FROM act_ru_task #任务执行表,记录当前执行的任务
说明:启动流程实例,流程当前执行到第一个任务结点,此表会插入一条记录表示当前任务的执行
情况,如果任务完成则记录删除。
SELECT FROM act_ru_identitylink #任务参与者,记录当前参与任务的用户或组
SELECT FROM act_hi_procinst #流程实例历史表
流程实例启动,会在此表插入一条记录,流程实例运行完成记录也不会删除。
SELECT FROM act_hi_taskinst #任务历史表,记录所有任务
开始一个任务,不仅在 act_ru_task 表插入记录,也会在历史任务表插入一条记录,任务历史表的主
键就是任务 id,任务完成此表记录不删除。
SELECT FROM act_hi_actinst #活动历史表,记录所有活动
活动包括任务,所以此表中不仅记录了任务,还记录了流程执行过程的其它活动,比如开始事件、
结束事件。
Activiti支持的数据库