网站首页 新闻首页 网页设计图形动画软件编程网站开发办公软件操作系统数据库网络技术认证考试范文资料黑客攻防 书籍教程 进入论坛

biztalk 2006 事务补偿模型[翻译]

http://www.diybl.com/ 2007-12-18  网络 点击:  [ 评论 ]
文章搜索:    【点击打包该文章】


1.       简介

Biztalk 2006的补偿模型(Compensation Model)为解决多种多样的商业过程应用场景提供了一种通用机制,被应用在某些条件下需要回滚跟同一个商业活动相关的已经完成的一部分工作单元的情况。在这些情况下,补偿模型通常需要重新访问已经完成的工作单元,检查这些单元在各个阶段的系统状态,以采用合适的动作补偿已经完成的动作,至少,也可以维护一个审查日志或提供相关通知。

一个课本上的此类场景是,在订单/发货过程,一个客户取消了已经被部分处理但是还没有发货的订单。取消操作何时发生具有不确定性,货物可能已经被从仓库提出,可能已经被分派,也可能已经在路途上,发票可能已经开具并发送等等。订单/发送过程中必须有强壮的取消订单的机制,无论取消操作发生在过程中的哪个环节。

Biztalk 2006的补偿就是设计用于这种情况的机制,它提供了向后跟踪已经完成的单独工作单元,同时自动忽略没有完成的工作单元的灵活手段,它允许补偿逻辑访问被认为已完成的工作单元的过程状态。与异常处理和事务管理协同工作,它允许流程设计者定义当补偿动作被执行时将被调用的商业过程的路径。它不能解决所有的问题和应付所有的场景,无论如何,它被认为是实现失败处理和还原逻辑的必需手段。

2.       长时间运行的事务(Long Running Transactions

Biztalk的补偿不可避免的跟长时间运行事务的概念有关系。长时间运行事务(L-R事务)是具有更高一层水平事务(面向商业)的工作单元,但它不是标准的ACIDatomic, consistent, isolated and durable)的事务。因为通常(虽然并不总是)这样的工作单元将耗费很长的时间,这里的很长可能意味着几秒钟到几天、几个月,甚至几年。ACID事务之所以不适合这种情况是因为,ACID事务在事务期间锁定访问的数据,并要求并发的事务串行化,而长L-R事务的运行时间很长,不可能在很长的时间内一直锁着数据。L-R事务通常用于需要人工交互的过程或者需要跨组织边界进行交互的过程。一个L-R事务内的子活动可能具有很大程度的不确定性 ,例如,一个商业过程会受许多不受控制的、难于预期的外部因素的影响。 L-R事务的不确定性不适合传统的ACID事务模型,需要一种不像ACID模型那样严格的事务模型。

通常根据简化ACID相关属性来定义L-R事务,比如,微软定义L-R事务为“过程具有一致性和耐久性,但不具原子性和隔离性”。 biztalk的环境下,这样的描述大致是正确的,但是有些过分简单。它容易让人认为L-R事务是一种有缺陷的ACID事务, 这样看待L-R事务是不正确的。 ACID事务假定具有确定的存在,并使用一组定义明确的约束进行事务管理。L-R事务没有这些假定,因此有更广泛的适应性。关系型数据库申请ACID事务只使用到保存在数据库表中的数据,一个orchestration,必须使用贯穿整个商业过程中使用到的各种各样的数据,这些数据可能是内部数据,也可能是外部数据,外部数据可能是各种各样毫不相干的系统管理的数据,它们可能支持,也可能不支持ACID事务。

L-R事务可以被简单的定义为一个不遵循ACID模型的模仿现实世界的商业事务的机制。一个商业事务的定义 (基于1999年美国的Uniform Electronic Transactions Act) 是“一个或一组有两个或多个合作伙伴或参与者参加的涉及商业或者政府事务的活动”。 一个L-R事务跟一个ACID事务不以同样的方式进行约束,虽然它会展现出某些跟ACID事务相同的特性,它可以被分解为许多更小的内部事务,这些小事务也可能是ACID事务。

欢迎光临DIY部落,点击这里查看更多文章教程   【点击打包该文章】
如果图片或页面不能正常显示请点击这里 站内搜索:   

文章评论

请您留言

 

最新新闻