ACT_RU|HI_ACTINST定义
活动实例表。记录流程实例流转过的所有节点的历史轨迹,包括开始事件、用户任务、服务任务、网关、结束事件等。与
act_hi_taskinst(仅记录任务节点)不同,此表覆盖全部活动类型我的理解就是actinst =>> activity + processInstance 记录一个流程下执行的所有动作
类型判断
先从类型入手更容易理解 这个表的作用
表中有一个 act_type_ 字段, 这个字段就是记录所有节点的历史轨迹
事件类型(Event)
startEvent: 开始事件
endEvent: 结束事件
任务类型(Task)
userTask: 用户任务
网关类型(Gateway)
inclusiveGateway: 包容网关
parallelGateway: 并行网关
子流程/调用活动类()
callActivity: 调用活动(相对于在当前流程任务中调用(启动)另一个流程)
连接线(Flow)
sequenceFlow: 任务之间的连接线
ps:列的这些都是用到的还有很多我没用到的就先不列出来了,也记不住
实战看看
真实项目结构
先看看主流程

在看子流程-立项阶段

启动流程查看运行逻辑
现在我们启动这个流程看看他是如何在act*actinst表中是如何运行的
当我们点击发布流程 看看RU表

这里先从父子流程拆分,红色是主流程 蓝色是子流程
ps: 主流程中任务都是加粗黑框,这种就是上面提到的 调用活动类型
分析
主流程:
发现他创建了3条信息,通过ACT_TYPE_ 记录可以发现分别是 startEvent,sequenceFlow,callActivity

子流程:
startEvent,sequenceFlow,userTask

再看看HI表

发现数据都差不多
表中常用的字段
PROC_INST_ID当前节点发起的流程ID
ACT_ID 流程任务定义的ID
TASK_ID 流程中任务节点启动会生成的任务ID (因为任务可以去处理表单等数据,所以单独有个TASK表,自然也需要维护TASK_ID)
ACT_NAME 顾名思义=>任务名字
ACT_TYPE_ 当前节点的类型
ASSIGNEE_ 任务处理人,表中也可以看出 event&flow这种自动流转的节点不需要人位处理,所以为NULL
我们通过 [立项审批(营销经理)]任务

可以看见他又创建了2个节点
第一个是项目经理任务到总经理任务的线 sequenceFlow
第二个是[立项审批(总经理)] 这个用户任务 userTask
ps:细节可以发现end_time_是null,说明节点在这里就进入等待用户去处理了,而且业务中我们也可以通过判断end_time判断某个流程下当前运行到那个节点了
接着通过子流程的 [立项审批(总经理)

通过 选择项目负责人

通过这个RU表可以发现 之前立项阶段调用活动的子流程 所有数据都被删除了
还没有一刻为立项阶段子流程悼念,接下来上场的是计划阶段子流程

从HI中可以看到立项阶段还在,而且多了一个endEvent表示流程已经结束了
新加入的2条记录 一条是sequenceFlow(也就是立项阶段和计划阶段中间的那条线),另一条callActivity计划阶段的调用活动 启动了
有注意到我截图中 包含的TRANSACTION_ORDER_ 字段吗?
细心可以发现他总会按照一定的顺序初始化
结合上面的图片可以得出一下思路
从1开始累加,且每次累加1
每次到达Task后累加器会重新计数
下面是官方的解释:

会按照一段事务进行,事务结束就会重新计时,而事务结束的信号在哪?
在一个事务中推进流程,直到遇到下一个"等待状态"(wait state)为止。常见的等待状态包括用户任务(userTask)、接收消息任务(receiveTask)、定时器等
所以说发现大部分 3,2的类型都是task....
但是我也只是好奇查了一下,项目中并没有直接需要用到这个的地方🤔
总结
actinst表 以一个流程为主体,记录其下每个节点的运行信息
如果是父子流程,当子流程完成后,RU表便会删除,继续记录主流程,直到主流程完成
从RU | HI 表中 我们能提取到当前流程运行到了哪个节点,节点类型,以及节点期间运行时间