BPEL 2.0服务契约之实战篇:如何为封装WS-BPEL的服务设计WSDL定义?

日期: 2009-06-30 作者:Yuli Vasilev翻译:杨晓明 来源:TechTarget中国 英文

在本文的第二部分中,我们介绍了如何使用WS-BPEL。在这一部分,我们将着重用实例介绍如何为封装WS-BPEL的服务设计WSDL定义。   鉴于WS-BPEL编制与WSDL定义之间的联系,这样就可以把编制本身当成一个服务,这个服务可以被另一个服务调用,或者作为另一个编制或编排的一部分。   如果WS-BPEL流程作为一个服务的形式存在的话,那么应该有相应的WSDL文档,客户服务才能调用这个流程。

例如,图3中描述的WS-BPEL流程可能与下面的WSDL定义相关联。   点击查看例1。   你会看到,该WSDL文档没有包含binding或service元素。事实上,WS-BPEL流程服务的WSDL……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

在本文的第二部分中,我们介绍了如何使用WS-BPEL。在这一部分,我们将着重用实例介绍如何为封装WS-BPEL的服务设计WSDL定义。

  鉴于WS-BPEL编制与WSDL定义之间的联系,这样就可以把编制本身当成一个服务,这个服务可以被另一个服务调用,或者作为另一个编制或编排的一部分。

  如果WS-BPEL流程作为一个服务的形式存在的话,那么应该有相应的WSDL文档,客户服务才能调用这个流程。例如,图3中描述的WS-BPEL流程可能与下面的WSDL定义相关联。

  点击查看例1。

  你会看到,该WSDL文档没有包含binding或service元素。事实上,WS-BPEL流程服务的WSDL文档只包含了服务的抽象定义和partnerLinkType部分,该partnerLinkType部分代表流程服务与其客户端服务之间的交互。在这个具体的例子中,WSDL定义只包含了一个partnerLinkType部分,支持客户端使用的一个操作来初始化流程。

  partnerLinkType部分最多定义两种角色,每一种角色结果都和之前提及的WSDL文档中定义的portType有关。WS-BPEL使用伙伴链接机制对WS-BPEL流程和参与者之间的关系进行定义。在本章的稍后部分你会看到,WS-BPEL流程的定义包含了partnerLink元素,用来指定WS-BPEL流程和客户端,及合作伙伴者之间的交互。WS-BPEL流程定义文档中的每个partnerLink都和对应的WSDL文档中的partnerLinkType相关联。用示意图表示的话,如图4所示。

  一旦你为流程服务创建了WSDL定义,那么对于流程执行时将被调用的伙伴服务,就要确保修改这些服务的WSDL文档。为了能够让一个服务成为WS-BPEL编制的一部分,你可能想在对应的WSDL文档中增加一个partnerLinkType元素。例如,为了能够让图3中的Notification服务参与到编制中,你需要创建一个如下的WSDL文档。

  点击查看例2。

  注意高亮加粗的partnerLinkType部分。在描述服务的WSDL文档末加入这一部分,可以让这个服务成为一个伙伴链接,让这个服务可能成为编制的一部分。

  之前提到过,WS-BPEL使用伙伴链接机制为业务流程中交互的服务进行建模。这有一段图3所示的WS-BPEL业务流程定义,描述了使用伙伴链接的proposalProcessingService流程服务:

  点击查看例3。

  上面的例子只显示了流程定义中的两个partnerLink。第一个partnerLink指定了WS-BPEL流程和它的客户端之间的交互。另一个partnerLink指定了WS-BPEL流程与在这里作为伙伴服务的Notification服务之间的交互。

  图4也许能帮你更好地理解在WS-BPEL中如何使用伙伴链接机制。

            

  图4:WSDL文档中指定的partnerLinkType如何和WS-BPEL流程定义中的partnerLink之间相关联

  图中的这个例子表示了描述WS-BPEL流程服务的WSDL文档中的partnerLinkType和流程定义中的partnerLink之间的关系。当定义partnerLinkType时,使用myRole属性来指定WS-BPEL流程的角色。为了指定伙伴的角色,则需要使用partnerRole属性,参见之前讨论过的流程定义文档。

  看一下这里讨论的流程定义文档中的partnerLink部分,你会发现它们其实没有提供任何关于WSDL文档位置的信息。这些WSDL文档包含相应的伙伴链接类型。这些信息其实储存在流程部署描述符(descriptor)文件中。这个文件的格式会因为你所用的WS-BPEL工具有所不同。

  下面是两个不同描述符的例子,它们是由不同的工具创建的:

  点击查看例4。

  点击查看例5。

  在接下来的第四部分,我们将用更多的实例来演示如何为流程创建WS-BPEL流程服务。

  关于作者

  Yuli Vasiliev是软件开发者、自由撰稿人和咨询师。目前专注于开源开发、Oracle技术和SOA。他具有十多年的软件开发经验和七年多的技术写作经验。他出版的新书《SOA and WS-BPEL》具体详述了如何使用开源产品PHP和ActiveBPEL引擎创建和部署你自己的面向服务解决方案。

相关推荐