事务(transaction)对于软件工程师来说是一个非常重要的概念。按照非正式的表述方式,事务是指一组作为同一单元的活动,要么全部成功,要么全部失败。这种“全部或者没有”的语义是数据库访问的基础。按照正式的表述,事务包括如下属性:原子性、一致性、隔离性和持久性(Atomic、Consistent、Isolated和Durable)——ACID。
事务对于业务交互来说至关重要,为了保证一致性,一个ACID事务用到的数据库条目通常会在处理过程中被锁定。如果事务失败,数据库将会回退到之前的状态。这一功能由数据库提供商提供。
对于一组被调用的Web服务,BPEL也可以采用类似的思路,使用Web服务的相应规范来实现业务流程的事务支持。WPS 6.0提供了WS-Atomic标准的支持。
但是,通常我们无法锁定跨越企业的资源。当进行酒店预订时,您的旅行代理无法在预定过程中(或者在打预定电话的过程中)锁定酒店的预定数据库或者让系统主动停下来。取而代之的操作是,连锁酒店数据库的本地ACID事务作为一个整体,包括以下几个任务:更新房间总量,添加信息到预订表和生成一个确认号。如果旅行代理需要取消预定操作,一个补偿动作将被完成。某些时候补偿需要一定的代价。例如,如果预定取消得太晚,可能需要收取一定费用。
由于一个业务流程可能需要运行几天、几个月甚至几年,而且流程可能涉及外部服务。在流程完成前,单个活动有可能已经完成,如果随后某个事件或错误发生而导致流程取消,已经完成的活动需要被复原。这种情况下,我们无法使用简单的事务处理机制来实现回退,我们需要补偿支持来完成这一任务。
补偿是管理业务数据的一种特定方式,它总是业务逻辑的一部分。补偿与数据库为ACID事务提供的原子性回滚不同。补偿可以避免另外一个问题;Internet上的任何人都可以锁定公司的数据可能会引发的拒绝服务攻击。采用补偿方案意味着数据不会被长时间锁定,但同时也失去了ACID事务,至少隔离性保证无法满足,因为数据在最初的修改和补偿操作之间是可见的。在BPEL中,Compensation(补偿)用来还原已经完成的活动。一旦进行补偿,它就要流程中已经运行完成的所有活动都会依照特定的逻辑进行补偿。
在工作流中,每个Invoke活动的调用都被称为一个转发服务(forward service),用于执行特定的服务调用。相关联用于补偿调用行为的服务被称为补偿服务。补偿服务仅当转发服务完成时才能够被调用。当流程中发生故障时,执行可选的补偿服务来补偿转发服务的行为。当一个服务活动完成时,如果已经定义了补偿服务,那么就向工作流的补偿域(Compensation Sphere)注册补偿服务及其输入数据。在流程实例结束时,补偿域查看是否抛出了故障。如果这个流程成功地完成,那么就不需要补偿任何活动。另一方面,如果这个流程失败了,那么您就需要执行补偿。如果需要流程补偿,补偿域就会调用它在后进先出(last-in first-out)队列(与转发服务完成的次序相反)中注册的补偿服务。
如图1所示是一个结合了错误处理与补偿机制的例子。第1个和第2个请求服务在同一个作用域中,它们都成功完成调用,作用域成功结束。属于流程作用域的第3个请求也成功完成。然而第4个请求调用却失败了,触发了错误处理程序。在第6步,错误处理程序执行补偿活动,将依次调用已注册的补偿处理程序,参见第7至第10步。
图1 错误处理与补偿机制示例
分享到:
相关推荐
4. **事务管理**:支持多种事务管理策略,如补偿事务(Compensation)和长期事务(Long-running Transactions),从而增强了业务流程的可靠性和一致性。 5. **变量与数据类型**:引入了丰富的数据类型系统,支持变量...
5. **错误处理和补偿**:BPEL支持错误处理和补偿机制,当流程执行出错时,可以定义错误处理流程。补偿用于回滚已完成但因错误而需要撤销的操作。 6. **流程实例管理和监控**:Oracle BPEL Process Manager提供了...
- **事件处理**:WS-BPEL支持对特定事件的响应机制,如错误处理(Error Handling)、补偿(Compensation)等。 #### 六、规范版本与状态 - **当前版本**:本文档定义的是2007年4月11日发布的最终修订版,是WS-BPEL TC...
- **事务一致性**:提供了两种类型的事务控制机制——补偿机制(compensation)和BTP(Business Transaction Protocol)。 - **错误处理**:通过错误处理框架,可以定义异常情况下的处理逻辑。 #### 三、WS-BPEL在...
2. **事务管理**:支持复杂的事务管理机制,如补偿事务(Compensation),即当业务流程中的某一步骤失败时,能够自动执行回滚操作来撤销之前的步骤,确保整个流程的一致性。 3. **并发执行**:BPEL4WS支持多个活动...
3. **错误处理与补偿**:BPEL提供了强大的错误处理机制,包括错误处理块(fault handlers)、补偿块(compensation handlers)和事件处理(event handling)。这有助于在流程执行出错时进行恢复或回滚。 4. **动态...
3. 补偿事务:当流程中某个部分失败时,BPEL提供补偿机制来撤销已完成的操作,确保数据的一致性。 4. 数据操作:通过XPath、XSLT和XQuery等工具,可以方便地在流程中处理和转换数据。 Oracle对BPEL的扩展: 1. 人类...
3. **事务支持**:为了保证业务流程的原子性和一致性,WS_BPEL支持多种事务模型,如补偿事务和两阶段提交等,以应对可能发生的故障和回滚需求。 4. **事件驱动**:WS_BPEL采用事件驱动的模型,允许流程根据外部事件...
5. **错误处理和补偿**:WS-BPEL提供了异常处理机制,允许在流程执行过程中捕获和处理错误。此外,它还引入了补偿概念,以便在流程出现问题时能回滚已完成的操作,保证业务一致性。 6. **合作伙伴链接**:合作伙伴...
补偿机制(compensation)则用于处理错误和异常,保证在流程执行出错时能够回滚到一个已知的良好状态。 业务流程可以是单工作流模式,即一系列服务按照特定顺序执行,形成一个完整的服务,不涉及与其他业务流程的...
- **特点**: 专注于Web服务之间的交互过程,支持事务处理、异常处理和补偿机制。 - **应用场景**: 适用于基于Web服务的业务流程集成场景,特别是多组织间的业务流程协作。 #### 功能比较 1. **活动类型**:BPML和...
6. **事务支持(Transaction Support)**:通过与WS-AtomicTransaction和WS-BusinessActivity等规范结合,WS-BPEL可以支持业务级别的事务处理。 7. **补偿(Compensation)**:当流程执行出现错误时,可以触发补偿...
FROGS(Forward Recovery for Open and Generalized Service Transactions)是一种专为前向恢复Web服务事务补偿设计的框架,旨在提高系统的可靠性和容错性。本文将深入探讨FROGS框架的核心概念、工作原理以及其与...
- **事务管理**: 支持补偿逻辑和错误处理机制,增强了流程的鲁棒性和可靠性。 - **异步通信**: BPEL支持异步消息传递,这有助于提高系统的响应速度和吞吐量。 ##### 3. BPEL的基本元素 - **Process**: 定义了一个...