Activiti中的同步节点和异步节点

同步节点和异步节点

service task和 user task中都会有一个Asynchronous的复选框,这个Async有什么区别呢?
参考Synchronous vs. Asynchronous Service Invocations - BPMN Service Task,可以理解为,

  • 同步节点:类似同步调用,调用者都是流程引擎,服务提供方是userTask, serviceTask,同步节点是流程引擎在执行Task时,一直等待Task执行完才返回。
  • 异步节点:流程引擎将异步节点的请求都构造出来,放到一个待执行队列中,由request Processor执行,执行完之后将结果通过回调的方式返回给流程引擎。

如果某一个节点,依赖于上一个节点的返回结果,那这个节点需要是同步节点,否则可以是异步节点。

以下是2017.12.27更新


对于serviceTask而言,是否设置asynchronous并不是看“是否依赖于上个节点的返回结果”(上边删除线标记的部分),而是要看这个节点是否要跟上一个节点在同一个事务中
事务(transaction)可以保证在某一个activity发生异常后可以回滚。activiti的很多对于DB的操作并不会直接写库,而是在遇到wait status节点后才submit
那什么才是wait status节点呢,手册给出说明,等待状态就是让流程"过一会之后"再执行的节点,遇到这类节点,activiti流程会把当前执行结果持久化,并等待流程被下一次触发。(A wait state is a task which is performed "later" which means that Activiti persists the current execution and waits to be triggered again.)。定时器Timer、异步Task节点都是“等待状态”的节点。
也就是说,如果你设置了任务是“同步”的,则如果发生异常之后,会回滚到上一个处于“等待状态”的节点处。如果设置了asynchronous,则会单独执行和回滚。

参考:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值