关闭

关于BPMN 2.0中的事务块和补偿

标签: 活动schema引擎api产品
1348人阅读 评论(0) 收藏 举报
分类:

最近在帮助公司研发新一代BPM产品的过程中,全面引入了BPMN 2.0标准,今天将BPMN 2.0中比较激动人心的事务块概念根据自己的理解介绍一二,与大家一起共勉!

1.与事务块相关的BPMN标准图元

  • Transaction:即事务子流程(通常称之为事务块,下同),在BPMN 2.0中,使用双细实线的矩形来表示一个事务块。

image

  • Cancel End Event:取消结束事件,会引发一个事务块内的取消(Cancellation)

image

  • Cancel Intermediate Event:取消中间事件,捕获从事务块内抛出的取消

image

  • Error Intermediate Event:错误中间事件,捕获事务块中抛出的错误或未处理的未知错误

image  

  • Compensation:补偿中间事件,当事务块内引发Cancellation事件时,已完成的活动会执行本活动上绑定的补偿中间事件及其后继流程片断

image

2.事务块的作用:

      结合BPM在业界的应用,事务块(Transaction)旨在将一组具有一定业务关系或为同一个业务目标服务的活动看作一个事务逻辑单元,这个逻辑单元完全结束才能满足或达到业务目标,如果其中任何一个失败就必须全部撤回(补偿),如下例是一个在网上订购机票和酒店的例子:

image 当用户发出一个网上订购机票和酒店的请求后,后台流程会将请求及相关表单信息传递给事务块处理,事务块会像一个子流程一样启动,并同时调用订机票和订酒店的两个活动,这两个活动会像第三方(大家可以想像一下携程的业务)发出订购请求,其中任何一个环节出现问题后,事务块将触发Cancellation事件(一个Cancellation事件可能会被两种方式触发:API或流程本身),事务块抛出该事件,并由boundary在其上的Cancel Intermediate Event捕获,并触发其块内两个活动上Boundary的补偿动作,从而取消机票或酒店的订单动作。当然一个事务块中也可能出现其它的一些未被有效处理的错误,这些错误也可经由Error intermediate Event捕获,从而进行这些错误出现后的例外处理,如转人工客服。

 

 

 

下面是BPMN对运行期的事务块的三种执行过程及结果的定义

  • 成功完成:事务块内的子流程以正常的顺序(Sequence Flow)流向执行并结束
  • 失败完成:当一个事务块内的流程因被取消(is cancelled)时,事务块内将执行回滚并补偿已被指定了补偿动作的哪些活动,然后跳转至一个被绑定在事务块上的取消中间事件,然后执行取消中间事件后续的流程片断。注意:

•只有Cancel End Event和Cancel Message是引起事务块流程取消的仅有的两种机制

•其它任何机制引起的事务块内活动的中断,不会引发事务块的取消动作

•一个事务块仅能绑定一个Cancel Intermediate Event

•Cancel End Event仅能使用在事务块中

  • 异常中止(Hazard):指事务块因为若干以正常结束或取消方式结束之外的方式结束,或因系统严重错误引发的事务块被中止的方式结束。当这些情况发生时,事务块将被中止,并跳转至Error Intermediate Event上,执行其后续的流程片断。
  • 关于事务块在流程引擎的实现及其模型定义,大家可以参考规范中的Schema章节。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3723次
    • 积分:65
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档