工作流-flowable 核心表ACT_RU_EXECUTION 详解

一、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_: 这个表示是否暂停。

二、直线串行流程时,当前执行实例数据库截图:

1.启动流程,即创建流程实例时,缺省为创建2条记录,其中一条是开始事件的执行实例,这个一直存在,只到流程结束后才会自动删除,另一条是普通的节点,所以它的流程实例id和PARENT_ID_字段即主干执行实例id字段值是一样的,完成任务时,它会第二转入历史任务和历史活动表中,如果创建的下一个节点还是普通节点,则它的第二条记录会变化。
在这里插入图片描述
2.并行网关时:创建了2个分支,他们的parant_id和流程实例id(proc_inst_id字段)都一样,缺省is_active都是1表示激活状态,当完成其中一个分支节点时,is_active就会变成0,等候其它节点一起完成后,才会转到历史,到时删除这些执行实例。并行网关的执行实例,它们的活动节点key是不一样,act_run_task中的TASK_DEF_ID_字段值是不一样(区别于会签多实例,会签多实例这个值是一样的)。
在这里插入图片描述
完成了其中一条分支节点时,is_active变为了0。
3.会签多实例时,如下是一个3人的会签,它会产生5条记录,一条是开始事件执行实例,一条是主干执行实例,只是它的状态为非激活状态,其它3个会签执行实例的parant_id值均是主干执行实例的id值,其中一个人做完了,这时候的act_ru_execution数据还是3条,但完成任务的那个执行实例is_active由1变为0了,它也一样等待其它2人会签均完成了才会转移到历史,如果查看act_ru_task表,则会发现原来3条,变为2条了,其中一条它已经转移到历史用户任务了。
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ACT_RU_EXECUTIONActiviti框架中的一个数据库,用于存储流程实例的执行信息。在这个中,每个流程实例对应一条记录,而每个执行实例对应多条记录。执行实例是流程实例在流程运转过程中的具体执行对象。\[1\]在并行网关和会签多实例的情况下,会产生多个执行实例,每个执行实例都有一个IS_ACTIVE_字段,用于示其激活状态。当一个执行实例完成时,IS_ACTIVE_字段的值会被设为0,示非激活状态。只有当所有执行实例都完成后,流程实例才会转移到历史,并且多实例会被自动删除。\[3\]因此,ACT_RU_EXECUTION记录了流程实例和执行实例之间的关系,以及执行实例的状态信息。 #### 引用[.reference_title] - *1* *2* [Activiti6.0流程、任务、执行的定义及区别](https://blog.csdn.net/fuhanghang/article/details/103751157)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [工作流-flowable 核心ACT_RU_EXECUTION 详解](https://blog.csdn.net/qq_38747892/article/details/129306753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值