在本文的第二部分中,我们介绍了如何使用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中国
在本文的第二部分中,我们介绍了如何使用WS-BPEL。在这一部分,我们将着重用实例介绍如何为封装WS-BPEL的服务设计WSDL定义。
鉴于WS-BPEL编制与WSDL定义之间的联系,这样就可以把编制本身当成一个服务,这个服务可以被另一个服务调用,或者作为另一个编制或编排的一部分。
如果WS-BPEL流程作为一个服务的形式存在的话,那么应该有相应的WSDL文档,客户服务才能调用这个流程。例如,图3中描述的WS-BPEL流程可能与下面的WSDL定义相关联。
你会看到,该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文档。
注意高亮加粗的partnerLinkType部分。在描述服务的WSDL文档末加入这一部分,可以让这个服务成为一个伙伴链接,让这个服务可能成为编制的一部分。
之前提到过,WS-BPEL使用伙伴链接机制为业务流程中交互的服务进行建模。这有一段图3所示的WS-BPEL业务流程定义,描述了使用伙伴链接的proposalProcessingService流程服务:
上面的例子只显示了流程定义中的两个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工具有所不同。
下面是两个不同描述符的例子,它们是由不同的工具创建的:
在接下来的第四部分,我们将用更多的实例来演示如何为流程创建WS-BPEL流程服务。
关于作者
Yuli Vasiliev是软件开发者、自由撰稿人和咨询师。目前专注于开源开发、Oracle技术和SOA。他具有十多年的软件开发经验和七年多的技术写作经验。他出版的新书《SOA and WS-BPEL》具体详述了如何使用开源产品PHP和ActiveBPEL引擎创建和部署你自己的面向服务解决方案。
作者
翻译
相关推荐
-
SAP收购CallidusCloud 与Salesforce竞争
一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]
-
API设计如龙生九子 各不相同
IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查结果表明,JSON与XML可谓两分天下。
-
从头开始实现领域驱动设计
领域描述业务;它是驱动企业的概念和逻辑的集合。如果遵循领域驱动设计(DDD)这一本质,那么领域就是应用程序中最重要的组成部分。
-
走出思维定式 数据库/大型机现代化不再是问题
升级和改变组织的主要利益驱动应用的前景,正处于一个压倒性的位置,所以组织将要面临一系列的改变。