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

原创 2011年01月18日 16:10:00

最近在帮助公司研发新一代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章节。

相关文章推荐

分布式事务常用策略

分布式事务常见的策略。 1、两阶段型:就是分布式事务两阶段提交,对应技术上的XA、JTA/JTS。 这是分布式环境下事务处理的典型模式。 2、补偿型: TCC型事务(Try/Confi...

分布式事务的典型处理方式:2PC、TCC、异步确保和最大努力型

1. 柔性事务和刚性事务2. 两阶段提交(2PC)型2、事务补偿型(TCC事务):3、异步确保型4、最大努力型 1. 柔性事务和刚性事务 柔性事务满足BASE理论(基本可用,最终一致)...

BPMN这点事-BPMN核心元素(上)

10.1.1   核心元素什么是BPMN核心元素?我们为什么要从BPMN元素中界定出一个核心元素的子集?BPMN核心元素是我们认为可以建模进行业务分析的BPMN元素的必要子集,使用BPMN基本元素适合...

java学习路线-Java技术人员之路从初级到高级

传智播客,尚学堂,尚硅谷,各种全套 视频教程 分享

命令模式实现事务补偿

  • 2017年02月03日 15:33
  • 165KB
  • 下载

Activiti in Action(实战Activiti)-第一章 BPMN 2.0: what’s in it for developers?(1)

This chapter covers 本章介绍 Introducing the world of BPM 引入BPM世界 Designing processes with BPMN 2....

BPMN2.0规范

BPMN2.0-概要    作者:AliKevin2011,发布于2012-6-27   一、BPMN简介 BPM...

开源驰骋工作流引擎ccbpm(CCFlow与JFlow)对bpmn2.0的支持

各位ccbpmer :     Ccbpm将要支持bpmn2.0了。     我们会保留现在的ccbpm设计模式,也支持bpmn2.0的规范,让ccbpm与国际接轨。包括.net版本ccflow与ja...
  • jflows
  • jflows
  • 2015年09月18日 15:03
  • 868

BPMN2.0-概要

BPMN2.0-概要      一、BPMN简介 BPMN(Business Process Model And Notation)...

在eclipse中设计BPMN 2.0工作流定义的根本步骤

原文地址:http://www.myexception.cn/eclipse/1863140.html 在eclipse中设计BPMN 2.0工作流定义的基本步骤 1. Activiti问我...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于BPMN 2.0中的事务块和补偿
举报原因:
原因补充:

(最多只允许输入30个字)