浅析activiti的数据流转

       要想了解activiti是如何工作的,数据流转肯定少不了的,这里并不会去分析流程定义、资源之类的表,因为那些表启动之后,基本上不怎么变化,我觉得应该重点关注是以下几个表:

(1)act_ru_execution,执行对象表(包含开始节点,任务节点,服务节点)

(2)act_ru_task,执行任务表(只包含userTask任务节点信息)

(3)act_hi_actinst,节点的执行历史(包含所有节点信息)

(4)act_hi_taskinst,任务执行的历史(只包含userTask任务节点信息)

 

下面以上篇文章 springBoot整合activiti6入门demo 中的请假流程为例进行简单说明

1.启动流程,其流程实例id为15001

(1)act_ru_execution会创建2条记录,其中一条是开始事件的执行实例(其PARENT_ID_为null),这个一直存在,只到流程结束后才会自动删除,另一条则是将要执行的节点,如下:

从表中数据可以看出,将要执行的节点id为writeApply,即填写请假申请

(2)act_ru_task会创建一条记录,即将要执行的任务(userTask才会创建)

 

(3)act_hi_actinst,和act_ru_execution一样,会创建两条记录:

 虽然在历史表插入了两条记录,但它们并不是真正的历史记录,注意到字段END_TIME_为null,至于说,为什么END_TIME_为null就不是真正的历史,这是从它查询的sql看出来的,后面会讲。

(4)act_hi_taskinst,和act_ru_task一样,创建一条记录,同样其字段END_TIME_为null,并不是真正的历史记录

 

 2. 提交请假申请

(1)act_ru_execution表更新将要执行的节点信息

可以看到,活动的id由writeApply变成了leaderApprove

(2)act_ru_task删除了执行完的任务,并插入一条待执行的任务

 

(3) act_hi_actinst更新了上一步插入的记录的END_TIME_字段,并插入两条记录,一条是排他性网关,一条则是待执行的任务leaderApprove

 

(4)act_hi_taskinst更新了上一步插入记录的END_TIME_字段,并插入一条待执行任务

 

 3.领导审批,同意请假,流程结束

(1)流程结束,清除act_ru_execution表和act_ru_task表的记录

(2)act_hi_actinst更新了上一步插入的记录的END_TIME_字段,并插入两条记录,一条是排他性网关,一条则是结束节点

 

(3) act_hi_taskinst更新了上一步插入记录的END_TIME_字段

 

关于如何打印activiti的查询sql,在与springboot整合时,可添加如下日志配置:

logging.level.org.activiti.engine.impl.persistence.entity=trace

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值