引言
act_ru_task,act_ru_execution是camunda流程运行时俩张重要的表。
今天就俩表的使用和注意事项进行总结。
在线体验,请访问JeecgFlow
结构
act_ru_execution(流程运行时表)
| 字段名称 | 字段类型 | 可否为空 | 描述 |
|---|---|---|---|
| ID_ | varchar(64) | NOT NULL | 主键 |
| REV_ | int(11) | NULL | 版本 |
| ROOT_PROC_INST_ID_ | varchar(64) | NULL | 流程实例根id |
| PROC_INST_ID_ | varchar(64) | NULL | 流程实例id |
| BUSINESS_KEY_ | varchar(64) | NULL | 业务key |
| PARENT_ID_ | varchar(64) | NULL | 父id |
| PROC_DEF_ID_ | varchar(64) | NULL | 流程定义id |
| SUPER_EXEC_ | varchar(64) | NULL | 父流程实例对应的执行 |
| SUPER_CASE_EXEC_ | varchar(64) | NULL | 父案例对应的执行 |
| CASE_INST_ID_ | varchar(64) | NULL | 案例实例id |
| ACT_ID_ | varchar(64) | NULL | 节点id |
| ACT_INST_ID_ | varchar(64) | NULL | 节点实例id |
| IS_ACTIVE_ | tinyint(4) | NULL | 是否激活 |
| IS_SCOPE_ | tinyint(4) | NULL | 是否多实例范围 |
| IS_EVENT_SCOPE_ | tinyint(4) | NULL | 是否事件多实例范围 |
| SUSPENSION_STATE_ | int(11) | NULL | 挂起状态 |
| CACHED_ENT_STATE_ | int(11) | NULL | 缓存状态 |
| SEQUENCE_COUNTER_ | bigint(20) | NULL | 序列计数器 |
| TENANT_ID_ | varchar(64) | NULL | 主键 |
ACT_RU_EXECUTION 表(很多初学者迷惑的一张表,以为是流程实例表,其实它叫执行实例表)
这个表和act_run_task表,一起控制了用户任务的产生与完成等。
这个表是工作流程的核心表,这个表会体现主干与分支流程实例的概念,所以才有了执行实例这个叫法。
一般讲一个流程实例都有一条主线。如果流程为直线流程,那么流程实例这个表中只一条记录对应。
但如果流程有会签多实例时,以及并行网关时,这时候它就有流程实例和执行实例,一对多的关系,所以一定要理解流实例和执行实例的区别,
不要把它执行实例误以为流程实例表,当在并行网关和会签多实例时,它是会产生多个执行实例,刚创建时各个执行实例的IS_ACTIVE_这个字段的值都是为1,即激活状态
当每完成一个执行实例时,它会把IS_ACTIVE设为0,非激活状态,当所有执行实例完成后,它才会转移到历史,把这个多实例自动删除。
另外当有子流程,子流程的实例是处于激活状态,而主干流程的实例处于非激活状态。
- 各个字段的说明
ID_:EXECUTION主键,这个主键有可能和PROC_INST_ID_相同,相同的情况表示这条记录为主实例记录。
REV_:表示数据库表更新次数。
PROC_INST_ID_:一个流程实例不管有多少条分支实例,这个ID都是一致的。
BUSINESS_KEY_:这个为业务主键,主流程才会使用业务主键,另外这个业务主键字段在表中有[唯一约束]。
PARENT_ID_:这个记录表示父实例ID,如上图,同步节点会产生两条执行记录,这两条记录的父ID为主线的ID。
PROC_DEF_ID_: 流程定义ID
SUPER_EXEC : 这个如果存在表示这个实例记录为一个外部子流程记录,对应主流程的主键ID。
ACT_ID_:表示流程运行到的节点,如上图主实例运行到ANDGateway1 节点。
两个子实例运行到UserTask1,UserTask2节点。
**IS_ACTIVE_ : **是否活动流程实例,比如上图,主流程为非活动实例,下面两个为活动实例,如果UserTask2完成,那么这个值将变为0即非活动。
**IS_CONCURRENT_*是否并发。上图同步节点后为并发,如果是并发多实例也是为1。
IS_SCOPE_: 这个字段我跟踪了一下不同的流程实例,如会签,子流程,同步等情况,发现主实例的情况这个字段为1,子实例这个字段为0。
TENANT_ID_ : 这个字段表示租户ID。可以应对多租户的设计。
IS_EVENT_SCOPE: 没有使用到事件的情况下,一般都为0。
SUSPENSION_STATE_: 这个表示是否暂停。
act_ru_task(流程运行时任务表)
| 字段名称 | 字段类型 | 可否为空 | 描述 |
|---|---|---|---|
| ID_ | varchar(64) | NOT NULL | 流程执行ID |
| REV_ | int(11) | NULL | 版本 |
| EXECUTION_ID_ | varchar(64) | NULL | 流程执行ID |
| PROC_INST_ID_ | varchar(64) | NULL | 流程实例ID |
| PROC_DEF_ID_ | varchar(64) | NULL | 流程实例ID |
| CASE_EXECUTION_ID_ | varchar(64) | NULL | 案例执行ID |
| CASE_INST_ID_ | varchar(64) | NULL | 案例实例ID |
| CASE_DEF_ID_ | varchar(64) | NULL | 流程定义ID |
| NAME_ | varchar(255) | NULL | 名称 |
| PARENT_TASK_ID_ | varchar(64) | NULL | 父任务ID |
| DESCRIPTION_ | varchar(64) | NULL | 描述 |
| TASK_DEF_KEY_ | varchar(64) | NULL | 任务key |
| OWNER_ | varchar(64) | NULL | 委托人 |
| ASSIGNEE_ | varchar(64) | NULL | 办理人 |
| DELEGATION_ | varchar(64) | NULL | 委托状态 |
| PRIORITY_ | int(11) | NULL | 优先级 |
| CREATE_TIME_ | datetime | NULL | 创建时间 |
| LAST_UPDATED_ | datetime | NULL | 最近更新时间 |
| DUE_DATE_ | datetime | NULL | 截止时间 |
| FOLLOW_UP_DATE_ | varchar(64) | NULL | 跟踪时间 |
| SUSPENSION_STATE_ | int(11) | NULL | 挂起状态 |
| TENANT_ID_ | varchar(64) | NULL | 租户id |