Web 服务业务流程执行语言,第 2 版 (WS-BPEL 2.0,简称 BPEL),基于伙伴链接 (基于 WSDL1.1 的定义) 为不同 Web 服务之间的交互定义了编配模型。这一语言包含了描述复杂控制流所需要的特性,包括错误处理和补偿行为。
该语言的一大限制就是要求使用伙伴链接来定义目标 Web 服务,这导致了流程实现和服务之间的点对点通讯。语义 Web 服务 BPEL(BPEL4WS) 试图通过使用语义 Web 服务框架定义通讯信道来克服这一限制。相对于显式地指定活动,它借助对服务请求者和提供者的本体描述,为描述带来了极大的灵活性。该规范:
为 BPEL 引入一个扩展以支持使用语义 Web 服务框架而不是 WSDL1.1 来描述交互。语义 Web 服务 (SWS) 可看作是 Web 服务之上的集成层;它们使用本体作为数据模型并且拥有丰富的概念模型。语义面向服务架构参考本体论 (RO4SSOA) 致力于将这一概念模型进行标准化。
在 SOA-RM(SOA 参考模型) 中,它根据接口和能力对服务描述的概念进行了形式化。不同于 SOA-RM 的是,它还显式地对所需求的能力和服务消费者的潜在交互进行了建模。用来容纳这些描述的概念被叫作目标(goal)。
该规范的核心引入了一个“WSDL-less 交互”的模型,基于新近引入的对话(conversation)概念:
一个对话是对伙伴链接的一个 WSDL-less 抽象:对话不是引用一个伙伴链接,而是引用一个目标或是基于 RO4SSOA 定义的 Web 服务描述
对于对话的支持是建立在该标准引入的几个新类型之上的:
为了定义伙伴之间的消息交换,BPEL4SWS 定义了新的活动类型:表示 WSDL-less 接收的回复和调用活动;一个 WSDL-less 活动;和一个 WSDL-less。这些活动可使用元素来分组。以此方式,一个 BPEL4SWS 流程可以参与到与伙伴的长期多消息交互中。对话可使用元素来分组。这种方式可以定义与单一伙伴进行的多个对话。
BPEL4SWS 对话被认为适于解决具体问题,比如,预订航班。每一对话里面都有两个角色——一个伙伴提供预订航班的功能,通过 RO4SSOA 的服务概念来描述;另一个想要使用 / 消费该功能的伙伴,通过目标的概念来描述。作为结果,BPEL4SWS 将区分提供对话(providing conversation)和消费对话(consuming conversation)。对于提供对话,流程可以为伙伴服务提供功能,而在消费对话里,一个 BPEL4SWS 流程将会使用伙伴服务所提供的功能。提供对话是用服务描述来描述的,而消费对话是用目标描述来标记的,即附加了目标。目标描述被用来发现相应的 Web 服务。如果没有找到相应的服务,将会抛出noServiceFound错误。
BPEL4SWS 里的对话是使用 RO4SSOA 的概念来描述的:
RO4SSOA 于 Web 服务之上构建了一层。它从技术细节当中抽象出来,为服务请求者和服务提供者提供的服务描述不仅专注于接口,同时还用假设和影响描述了服务的能力……实现 RO4SSOA 的框架要求一个提供如下功能的中间件组件: - 基于目标的服务发现
- 服务请求者与服务提供者之间的通讯生命周期管理
- 能接收来自服务请求者和提供者两方面数据的端点
- 能调用服务请求者和提供者两者的手段
尽管这一规范还处于非常早期的阶段,BPEL4SWS 是以“现有情况提供并只用于审阅和评估”,但它提供了服务编配和语义 Web 服务之间的直接集成路径,反过来它也能支持更加显著的服务集成模式,并能更好的匹配现实业务场景。
查看英文原文: WS-BPEL Extension for Semantic Web Services (BPEL4SWS)
评论