疯狂Activiti6.0连载(28)BPMN补偿中间事件

本文详细介绍了Activiti6中的补偿中间事件,包括补偿执行次数、执行顺序及其参数设置。补偿执行次数与流程活动的执行次数相同,补偿执行顺序遵循倒序,先完成的活动补偿最后执行。同时,文中通过示例代码展示了如何在补偿处理者中获取流程活动设置的参数。
摘要由CSDN通过智能技术生成

 本文节选自《疯狂工作流讲义(第2版)》

京东购买地址:https://item.jd.com/12246565.html

工作流Activiti6电子书http://blog.csdn.net/boxiong86/article/details/78488562

工作流Activiti6教学视频http://blog.csdn.net/boxiong86/article/details/78608585

 

补偿中间事件

11.5.4章节中,讲解了补偿边界事件的使用,在该小节的案例中,使用了补偿中间事件触发补偿边界事件,补偿中间事件主要用于触发当前所在执行流的全部补偿Catching事件(补偿边界事件),补偿中间事件是Throwing事件,每个补偿事件都需要有关联的处理者,当补偿事件触发时,会转给这些处理者处理补偿本小节将讲解在使用补偿中间事件的各种特性。

补偿执行次数

当补偿中间事件被触发,会触发当前执行流的补偿Catching事件,如果一个附有补偿Catching事件的流程活动会执行多次(具有多实例的特性),那么在进行补偿时,补偿次数与流程活动的执行次数一样。BPMN2.0中允许多实例的流程活动,在一个流程中,一个流程活动(某些部分或者全部)可以被执行多次,现定义一个测试流程,如图11-16所示。


11-16 测试补偿次数流程

11-16表示一个简单的流程,流程首先会到达“正常工作”的ServiceTask,然后会到达“抛出错误”的ServiceTask,这个“抛出错误”的ServiceTask总会抛出错误,然后触发错误边界事件,然后流程会到达补偿中间事件,此时补偿中间事件会触发“正常工作”的补偿边界事件,补偿将会由“补偿工作”的ServiceTask执行,该流程对应的流程文件内容如代码清单11-37所示。

代码清单11-37codes\11\11.7\compensation-times\resource\bpmn\CompensationTimes.bpmn

<process id="ctProcess" name="ctProcess">

<startEvent id="startevent1" name="Start"></startEvent>

<serviceTask id="servicetask1" name="正常工作"

activiti:class="org.crazyit.activiti.RegularWork">

<multiInstanceLoopCharacteristics

isSequential="true">

<loopCardinality>3</loopCardinality>

</multiInstanceLoopCharacteristics>

</serviceTask>

<boundaryEvent id="boundarysignal1" cancelActivity="true"

attachedToRef="servicetask1">

<compensateEventDefinition></compensateEventDefinition>

</boundaryEvent>

<serviceTask id="servicetask2" name="抛出错误"

activiti:class="org.crazyit.activiti.ThrowError"></serviceTask>

<boundaryEvent id="boundaryerror1" cancelActivity="true"

attachedToRef="servicetask2">

<errorEventDefinition></errorEventDefinition>

</boundaryEvent>

<intermediateThrowEvent id="signalintermediatethrowevent1"

name="SignalThrowEvent">

<compensateEventDefinition></compensateEventDefinition>

</intermediateThrowEvent>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨大仙的程序空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值