在 Web 服务中将业务流程和事务自动化

简述 BPELWS、WS-Coordination 和 WS-Transaction

Comments

动态电子商务在企业中的角色是在技术和公司领域简化业务和应用程序流程的集成。诸如 SOAP、WSDL 和 UDDI 这些比较新颖的 Web 服务技术的出现已经改变了我们对分布式应用程序的看法 ― 它们如何以更加动态的方式相互连接并协同工作,从而实现更动态的经济环境。

这些核心 Web 服务规范(SOAP、WSDL、UDDI 等)的初衷都不是提供自己的机制来描述如何将各个独立的 Web 服务连接起来以创建具有一定复杂程度的可靠的企业解决方案。业界还没有产生一种标准化的 Web 服务视图来定义和实现业务流程,从而能够描述这样的连接。为了满足客户的关注和需求,IBM 再次与 Microsoft 及其它公司联手开发并推出 Web 服务业务流程执行语言,这种新的规范将取代以往的 IBM Web 服务流语言(IBM Web Services Flow Language,WSFL)和 Microsoft XLANG 语法,并提供比它们各自更多的功能和更强的灵活性。

Web 服务业务流程执行语言(Business Process Execution Language for Web Services,简称 BPEL4WS 或 BPEL)是一种基于 XML 的工作流定义语言,它使企业能够描述既能使用又能提供 Web 服务的复杂的业务流程。我们在本文档中将介绍 BPEL 的基本概念,还要介绍两种重要的补充规范 ― WS-Coordination 和 WS-Transaction,它们也是由 IBM 与 Microsoft 共同开发的。这两种规范用来协调对短期和长期运行的企业活动来说都可靠的结果。这个问题对于分布式业务流程的成功实现是至关重要的。

为了说明 BPEL、WS-Transaction 和 WS-Coordination 规范的功能和优点,我们将研究这些技术在真实的业务模式中的应用。

难题

Acme 旅行服务(Acme Travel Service)是一个虚拟的旅行社,它旨在让客户能够方便地通过基于 Web 的应用程序安排和预定旅行行程。在该应用程序中,Acme 认识到要让业务伙伴和客户能够通过 Web 服务接口用程序的方式访问服务,从而使客户或业务伙伴可以松散地将 Acme Travel 的服务集成到它们的业务旅行流程中 ― 这种能力会让在策略上有很大的优势,并有助于使业务更有效率。

Acme Travel 尝试通过开发并部署它们的 Web 服务来实现三个主要目标:

  1. 允许客户向 Acme Travel 代理提交旅行计划,
  2. 根据客户计划自动获取合适的航班、旅店和车辆预约,然后
  3. 在旅行计划处理完毕后马上将所有预约的确认返回到客户。

然而,Acme Travel 认识到要让这种解决方案能够实现,它必须通过某种方式将自己的旅行计划处理工作流与和它有业务关系的航班、旅店和汽车租赁公司的工作流相集成。这一事实引出了几个独特的难题。

  • Acme Travel 必须能够以某种方式将它希望具体化的面向客户的 Web 服务与它希望自动进行并与其业务伙伴集成的业务流程连接起来。
  • 每个伙伴必须将一种使 Acme Travel 直接把其业务流程集成到该伙伴的预约系统中的方法具体化。
  • Acme Travel 必须能够确保整个流程的可靠性和可依赖性。
  • Acme Travel 必须能够协调各个伙伴的活动,从而有效地确保客户计划的处理令人满意。

Acme Travel 要实现的基本流程如 图 1所示。

图 1:预约过程流程
图 1:预约过程流程
图 1:预约过程流程
  1. Acme Travel 从客户 Karla 收到计划。
  2. 在检查旅程错误后,流程将决定要进行哪些预约,同时发送请求到合适的航班、旅店和汽车租赁代理以进行合适的预约。
  3. 如果以上三个预约任务中的任意一个失败了,就会执行“补偿”活动以取消旅程并通知 Karla 这个问题。
  4. Acme Travel 将等待这三个预约请求的确认。
  5. 在收到确认之后,Acme Travel 会通知 Karla 流程成功完成,并将预约确认号和最终的旅程细节发送给她。
  6. 一旦 Karla 被告知她请求的旅程成功或失败之后,她就可以提交另一个旅行请求了。

流程本身并不十分令人惊讶,也不非常复杂。然而,问题并不在于这样一个流程的定义,而在于它的实现 ― 特别是在同时应对多个独立的业务伙伴时,他们都可能会用不兼容的技术以及不同的业务需求来实现流程中属于自己的那部分。不过在对问题应用了 BPEL、WS-Coordination 和 WS-Transaction 之后,这个问题的解决方案就变得很清楚了。

解决方案

由 IBM 和 Microsoft 发布的业务流程执行语言(Business Process Execution Language)、Web 服务协作(Web Services Coordination)以及 Web 服务事务(Web Services Transaction)规范提供了允许 Acme Travel 实现其目标的机制,其方式为:

  • 定义如何将航班、旅店和汽车租赁伙伴的预约服务集成到它的业务流程中
  • 定义如何将业务流程的具体活动作为 Web 服务公开地具体化。(例如等待客户旅程。)
  • 协调整个业务事务中多个 Web 服务的活动。
  • 在运行时根据来自流程本身的数据(客户希望乘坐哪个航班,聘用哪家汽车租赁公司等等)动态地链接到来自多个提供者的服务。

这种解决方案假定每个与 Acme Travel 有业务关系的航班、旅店和汽车租赁代理都将其预约系统作为 Web 服务而具体化了。

第 1 步:定义业务流程

Acme Travel 的第一步是定义将实现的业务流程并对其存档。业务流程执行语言提供了一种 XML 语法,Acme Travel 可以用它来创建旅程预定流程的简要描述。

BPEL 与其它基于 Web 服务的流程协作规范不同的主要一个地方就在于,BPEL 文档是可执行的脚本,可以由业务流程引擎解释,从而实现所描述的流程。流程中的每一步都对应于一个业务活动。每个活动都被作为与 Acme Travel 或它的业务伙伴之一提供的 Web 服务之间的交互而实现。该脚本中有一些部分需要被具体化,从而使信息能够流入流程中并触发各种行为 ― 例如从客户接收旅程或通知客户预约已经完成。脚本中的这些部分是作为 Web 服务具体化的。理解 BPEL 的业务流程执行引擎将提供实现所有以上任务的资源。Acme Travel 的开发者只需要定义流程、为每个活动提供业务逻辑并告知引擎如何定位业务伙伴的 Web 服务和与流程进行交互的客户。

第 2 步:协作和事务

一旦定义了业务流程和与业务伙伴之间的连接,下一步就是提供一种机制来协调所有与 Acme Travel 业务流程有关的活动,从而产生一个可靠的结果。您必须成功地完成几个不同的独特任务,它们中有一些是同时运行的,Acme Travel 必须确认作为一个整体,所有任务都成功完成还是失败。

分布式的长期运行的业务事务一直是难于解决的问题。抛开基本的技术问题不说,不同的业务伙伴可能运行不兼容的软件体系结构,他们执行的一组业务任务所引起的延长的持续时间和通信延迟就会使需求复杂化。诸如 Acme Travel 希望实现的流程这样的事务必须在逐个任务的基础上加以控制,使用监控并管理每个活动的结果的体系结构,因为它与整个流程有关。传统的事务和协作框架最适合于管理单独的业务任务。

另一个难题在于如何直接将已有的专有事务服务实现连接起来。多数这样的产品都不能以“取出即可用”的方式实现这一点。Web 服务提供了一种通用框架帮助您在这些产品之间架起一座桥梁,不同的平台可以通过这种框架集成在一起。

WS-Coordination 和 WS-Transaction 规范是这样补充 BPEL 的 ― 它们提供了一种基于 Web 服务的方法,以可扩展、可互操作的方式增强自动进行、长期运行的业务事务的可靠性。

它实现的方式非常简单。Acme Travel 业务流程包括很多 Web 服务,它们共同运行以提供通用的解决方案。它们中的每个服务都需要能够协调它们的活动,从而使流程能够成功进行。协调是这样进行的,每个 Web 服务都要共享一些通用信息,这些信息可以用来将单独的活动链接到整个流程。WS-Coordination 规范将定义一个框架,这些服务都可以通过这个框架从共享的“协调上下文”运行。这个上下文包含链接各个活动所需的信息。

另一方面,WS-Transaction 提供的框架允许 Acme Travel 监控每个单独的、协调的活动的成功或失败。它为 Acme Travel 提供监控预约流程并在流程中出现问题时“可靠地”取消流程的方法。在这里,“可靠地”就是说,如果旅程的任意一个部分不能被处理,那么旅程的任何一个部分都不会被处理,或者说,如果旅程的一部分已经被处理(例如飞机票已经预定),所执行的工作可以补偿并撤销。WS-Transaction 基于 Web 服务这一事实意味着,我们可以在特定于供应商的事务管理应用程序之间将事务支持变为可互操作的。

优点

我们提出的业务流程、协调和事务管理模型能帮助客户认识到几个重要的优点。

  • 它构建在 Web 服务体系结构的基础之上。Web 服务允许在不同的、可能不兼容的运行时平台上运行的应用程序以灵活、动态的方式进行集成并互相交互。在这个基础上加以扩展,BPEL、WS-Coordination 和 WS-Transaction 可以帮助企业更有效地集成流程并实现更灵活的业务流程。
  • 它是可扩展的。BPEL、WS-Coordination 和 WS-Transaction 本质上提供了一个用于实现业务流程的大体框架,但留下了充分的空间,让企业扩展并定制其中的细节,以满足不断发展的业务需求。这使得工具在业务需求发展的同时也不断发展,从而在您的需求发生变化时节省长期开发费用。
  • 它很灵活。BPEL、WS-Coordination 和 WS-Transaction 引入的框架为种类繁多的事务性和非事务性业务流程提供了支持。
  • 它使得耐用可靠的流程处理成为可能。WS-Transaction 规范提供了监控必须在更大的流程中完成的每个单独任务的可靠性的方法。BPEL 规范同时还提供了定义如何补偿失败任务的方法。

在业务层面上,BPEL、WS-Coordination 和 WS-Transaction 帮助 Acme Travel 实现所有目标,方法是使它们能够容易地将自己的业务活动与伙伴的业务活动集成在一起,而不需要参照每一方选择使用的特定开发或运行时平台。这使得 Acme Travel 和它们的伙伴集中精力处理真正重要的方面:企业解决方案。

最后,我们在这里提供了一些很简单的示例,目的是让您对这三个规范能提供什么有所了解。在真实的业务中,还有更多的细节和选择,我们可能嵌套业务流程,甚至在其它协调的事务中嵌套协调的事务。BPEL、WS-Coordination 和 WS-Transaction 的初衷是,建立在其它种种 Web 服务标准的基础上并对其扩展,用这种相一致的方法解决各种程度的复杂问题。

总结

IBM 已经承诺与我们的客户、伙伴、标准机构以及整个业界共同配合,进一步开发这种体系结构。在这项工作进行的过程中,会发布一些技术预览,其中最早的是用于 IBM 动态电子商务 Web 服务工具包(IBM Web Services ToolKit for dynamic e-business)以及 IBM Web 服务 Java 运行时业务流程执行语言(IBM Business Process Execution Language for Web Services Java Runtime),它们都可以从 alphaWorks获得。这些技术将使开发者能够尽早获得新规范的使用经验。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and web services
ArticleID=21822
ArticleTitle=在 Web 服务中将业务流程和事务自动化
publish-date=08012002