BPEL 2.0服务契约之实战篇:如何创建WS-BPEL流程服务?

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

在本文的第三部分,我们用实例介绍了如何为封装WS-BPEL的服务设计WSDL定义。在这一部分,我们将运用更多的实例介绍创建WS-BPEL流程服务。   通常的面向服务设计都建议流程服务的设计应该从服务契约开始。所以为了提供更多的WSDL和WS-BPEL定义的例子,我们就来遵循这个过程。

  Hello服务的WSDL定义(抽象描述)   我们从一个简单的Hello服务的新WSDL文档开始:   点击查看例6。   例6中的高亮显示部分表示的是partnerLinkType结构。在该结构中,对WS-BPEL流程和它的使用者(客户端服务)的关系进行了定义。   注意,必须为所涉及的每一个伙伴服务指定……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

在本文的第三部分,我们用实例介绍了如何为封装WS-BPEL的服务设计WSDL定义。在这一部分,我们将运用更多的实例介绍创建WS-BPEL流程服务。

  通常的面向服务设计都建议流程服务的设计应该从服务契约开始。所以为了提供更多的WSDL和WS-BPEL定义的例子,我们就来遵循这个过程。

  Hello服务的WSDL定义(抽象描述)

  我们从一个简单的Hello服务的新WSDL文档开始:

  点击查看例6。

  例6中的高亮显示部分表示的是partnerLinkType结构。在该结构中,对WS-BPEL流程和它的使用者(客户端服务)的关系进行了定义。

  注意,必须为所涉及的每一个伙伴服务指定partnerLinkType的结构。不过在这个例子中,WS-BPEL流程只有一个伙伴,即流程的使用者。因此,只需在描述这个WS-BPEL流程服务的WSDL文档中指定一个partnerLinkType结构。

  Hello服务WSDL定义(抽象和具体描述)

  也许你已经注意到,例6中的WSDL定义没有包含部署信息(绑定和地址信息)。事实上客户端服务使用的是这个文档的修改版。基于上面的WSDL代码,WS-BPEL引擎可以动态地生成包含绑定和地址信息的文档。因此,当我们用浏览器请求这个WSDL定义时,我们应该收到下面的输出信息:

  点击查看示例7。

  WS-BPEL引擎隐式地生成了绑定和服务的定义,因此客户端伙伴服务能够使用这里讨论的流程服务。

  Hello WS-BPEL流程定义

  下一步要实施WS-BPEL流程定义。这些是相应hello.bpel文件的内容:

  点击查看例8。

  partnerLinks部分包含与伙伴服务建立关系的partnerLink部分;在执行过程中,这些伙伴服务与业务流程进行交互。在例8中,partnerLinks部分只包含了一个入口,即表示流程服务和客户端服务之间关系的入口。这种情况下,需要使用partnerLink元素中myRole属性,因为WS-BPEL流程服务是客户端服务的服务提供者。

  注意partnerLink元素中partnerLinkType属性指定的名字。这个很重要,它就是之前提到hello.wsdl文档中对应的partnerLinkType部分指定的名字。

  序列结构中定义的活动顺序非常直接明了。第一个是receive(接收)活动,用来处理客户端服务发送过来的请求消息。把receive的createInstance属性设置为“yes”,就是告诉WS-BPEL引擎:当活动接收到请求消息时,创建一个流程实例。

  序列活动中的下一个活动是assign(赋值)。这里实际上是基于输入消息中的信息,生成了输出消息。

  最后,定义了一个reply(回答)活动,它负责向客户端服务发送输出消息。部署完hello流程服务,知道了如何去获得向客户端描述这个服务的WSDL文档,接下来就是测试。为此,你可能需要创建并运行下面这段PHP脚本:

  点击查看例9。

  当执行时,上面的脚本应该会调用之前讨论的hello流程服务,并输出下面的hello消息:

  Hello,Larry!

  在本文的最后一部分,我们将进一步用实例介绍WS-BPEL流程服务如何与伙伴服务产生交互。

  关于作者

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

相关推荐

  • 当业务流程遭遇软件服务

    要是驾校的教练去出演像《速度与激情》这样的动作电影,我敢打赌他们给人的印象肯定有所不同。有人说:“他们应该更快绑好安全带。”这种分离类似于当今的业务流程管理。

  • 理解并使用IMS SOAP Web服务

    让我们从Web服务的角度来审视这一话题。为了通过简单对象访问协议(SOAP)支持Web服务,IMS需要三大部分的东西。首先是Rational Developer for System z……

  • 用WebSphere DataPower SOA Appliances重写SOAPAction报头

    IBM WebSphere DataPower通常被用于将一个SOAP/HTTP后端Web服务转换或调整为不同的Web服务接口。在这些情况中,几乎都使用中间逻辑来转换SOAP消息。

  • 如何在SOAP应用程序中使用WSDL?

    在过去的几年中,出现了一些标准协议,它们提供了XML中间件的一个重要组成部分:网络化服务的要求。这些网络化服务要求是通过网络。