Welcome

首页 / 脚本样式 / Ajax / 异步操作和Web服务,第3部分:向Web服务添加业务语义

异步操作和Web服务,第3部分:向Web服务添加业务语义2010-07-22 IBM Holt Adams在这个系列的前面两部分,Holt Adams 解释了 Web 服务异步操作的相关性并讨论了一些构建异步服务的模式。现在,他要开始讲解三个新规范 ― Web 服务的业务流程执行语言(Business Process Execution Language for Web Services)、Web 服务协调(Web Services Coordination)和 Web 服务事务(Web Services Transaction)― 并说明它们如何为 Web 服务开发者提供许多可能性。您将看到这三个规范如何支持异步操作并创建一个反映实际业务交互的可运行编程环境。

对于想使用 Web 服务来集成他们所在的企业与其伙伴之间的业务流程的 IT 设计师和业务分析师来说,日子只是好过了一点点。在这个系列的第一篇文章中,我提到过“随着业界进一步开发决定如何协调 Web 服务间的流以及如何描述实现业务流程的 Web 服务间相关性的规范,对异步操作的支持将被简化。”那么,猜一下刚刚发生了什么事?8 月 9 日,IBM、Microsoft 和 BEA 发布了共同开发的一组用于向 Web 服务添加业务语义的规范。这三个规范被发布到了整个业界以进行进一步的开发,同时发布的还有一些逐条列出要满足的各项额外功能的计划,这些计划的目的是启动满足一组非常重要的客户流程和事务要求所需的标准化过程。这些规范是 Web 服务的业务流程执行语言(BPEL4WS 或 BPEL)、Web 服务协调(WS-Coordination 或 WS-C)和 Web 服务事务(WS-Transaction 或 WS-T)。这三个规范确实能使企业用一个全面的模型来描述他们的业务流程,并且还提供了一个用来执行该模型、协调业务活动和事务行为的实现框架。本文将概述一下 BPEL、WS-C 和 WS-T 规范如何简化对异步操作的支持。更重要的是,您还将了解这些规范如何描述和实现这样的企业业务交互,这些业务交互通常在涉及到两方或更多方的、长时间运行的有状态交互中进行一系列点对点消息交换的企业业务交互。

在本系列前面的文章中,我介绍了异步 Web 服务操作的一些概念,同时还介绍了用来实现双方之间各个异步操作的各种集成模式。这些模式本质上是被建模为无状态的、独立的交互。在这些模式中,我提出了参与应用程序或消息传递传输在将请求映射到响应时要创建和管理相关器的要求。同样,解决方案设计者也需要提供一种方法,通过这种方法把 回复地址(reply-to address)(响应将被发送到这个地址)提供给服务提供者;这样,当响应可用时,就可以在分开的执行线程上把它们发送到请求客户机。所有这些要求,以及其他更为重要的要求(比如协调一组有状态交互和将请求路由到有状态流程实例等要求)都将在新规范中得到满足。于是,我们就可以在 业务流程引擎(business process engine)内对复杂的、实际的企业流程进行建模和直接执行(更多时候是在引擎上立即执行)。

目前,Web 服务描述语言(Web Services Description Language,WSDL)规范的版本 1.1 自身(不包括扩展)只支持无状态的交互模型,按这种模型在两方之间交换同步消息或相互之间无关联的异步消息。这三个新规范的发布使得这样的企业业务流程有可能得到支持,这些企业业务流程要求涉及到在两方或更多方之间的有状态且长时间运行的交互中进行的点对点消息交换序列(同步的和异步的)的交互模型。

在进一步学习本文之前,您应该对 BPEL、WS-C 和 WS-T 规范有一个基本的理解,因为我们将在这里探讨来自这些规范的许多概念。异步操作要求:回顾

支持实际的企业业务流程本质上要涉及到异步操作,因为这些流程持续的时间比较长。每个流程的各个活动都需要与初始请求分开以优化系统资源的使用,并且需要把处理过程分解为一组可恢复的事务。我在这个系列的第一篇文章中提到过,支持异步操作需要完成下面几个任务:

为它们的交换定义一个或一组相关器和一种机制。

定义一个 回复地址,这个地址指定应该把响应发送到何处,并确保向服务提供者通知了这个目的地。

服务提供者生成响应的过程作为一个事务与请求分开。

客户机接收到异步响应。

客户机和服务提供者把响应与相应的请求关联在一起。

另外,由于我将在可能涉及到流程及其伙伴间许多交互的较大型有状态业务事务的范畴内讨论异步操作,在异步操作期间交换的消息将需要被路由到同一个业务流程实例。因此,我还需要提出先前这个系列的第一篇文章中没有列入的另一个要求:

把请求路由到有状态业务流程实例。

BPEL XML 语法元素

本文将概述 BPEL 如何为长时间运行的业务事务简化集成伙伴间业务流程的过程,其中一个业务事务由流程及其伙伴之间的多个交互组成。在下面几部分中,我将提供可以用来满足上面标识出的异步操作要求的具体 BPEL XML 语法示例。

BPEL XML 流语言具有用来对活动和用于控制流程行为的机制进行描述的语法。在我的示例中,我将使用这种语法的一个子集,这个子集中包含下面的 活动标记(activity token)和 元素(element):

基本活动(Basic activity):用于处理入站请求和响应的接收、数据向全局容器的分配以及出站 Web 服务请求的生成。本文将演示的这些活动的示例包括 receive 和 invoke 。

结构化活动(Structured activity):用于管理活动序列的整个流程流、活动的并行处理以及在控制流程流时添加条件逻辑。本文将演示的这些活动的示例包括 sequence 和 flow 。

其他的 BPEL XML 元素帮助定义支持业务事务中的异步操作所需的关系和相关性。本文将演示的这些元素的示例包括 partners 、 serviceLinkTypes 、 role 、 link 、 source 和 target 。