Activiti7.0进阶学习(五):Activiti在执行complete操作时发生了什么?

背景
  1. 在activiti中,每个节点(user task)都可以理解为activity。 那这个activity是怎么执行的?也可以理解为程序代码在执行complete时,发生了什么?
  2. 什么又是 Asynchronous Continuations?
  3. 为什么需要Asynchronous Continuations?
过程
  • complete
    在这里插入图片描述
  1. 流程进入到activity时,"TAKE"监听器就会被调用。
  2. activity自己调用"START"监听器。
  3. activity的行为将会被执行。
  4. 当activiy的行为执行完成后。"END"监听器将会被activity调用。
  5. 流程离开activity时,"TAKE"监听器会被调用。
  • Asynchronous Continuations 理解
  1. 一个activity执行过程中,上述的5个步骤,都是丢给job executor线程池执行的。但是都是连续的,都是上个监听器执行完成后,下一个监听器又开始执行,他们虽然是异步执行的,但是都是连续的,理解起来,就是针对同一个activity的同步操作。

  2. 还有一种情况就是如下图所示这样。流程定义图上有多个节点。当taskService.complete(id)执行完成后,相关数据其实已经持久化到数据中了。后续的Generate invoice 和 Send invoice to customer都是在taskService.complete(id)执行之后,必须要执行的,而且这个异步操作一定是上一个事务的延续。因为上一个事务已经提交了,数据库持久化了数据,因此能够保证后续的事务一定是没有任何问题的。

  • 为什么需要Asynchronous Continuations?
    在这里插入图片描述
    就是上一个异步中的事务一定是发生在下一个事务之前的。并且,上一个事务是提交了的,数据库持久化了数据。把业务逻辑丢到异步中执行,但是前后保证了异步的延续性。
  • 异步延续性,一定是Job executor执行的。
小结
  1. 理解activity的工作过程。

  2. 理解设计Asynchronous Continuations意义。

  3. 知道Asynchronous Continuations的相关逻辑都是在job executor中执行的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值