PartnerLink,PartnerLinkType详解

BPEL Process主要包括了Activity的概念,里面有包括最基本的Receive,Invoke, Reply等primitive Activity,也包括了strcture activity,比如sequence, flow, case等. 那既然我们定义了这些activity,又是怎么跟外部的已有服务进行联系上呢. 那么就是通过我们所要讲的PartnerLink, PartnerLinkType来关联.

我们先来看下PartnerLinkType. 我比较赞同把PartnerLinkType比喻成通道{Note: 来自于reference[2]的文章}. 可以这么想, BPEL Process是一个web service,这个服务是通过什么方法来与其他已经存在的另外一些web service(s)进行关联呢?PartnerLinkType就是定义这样的一个通道.

先看下PartnerLinkType的例子.

1 <plnk:partnerLinkType name="AuctionHouse_SellerLT">
2 <plnk:role name="AuctionHouse" portType="tns:sellerPT" />
3 <plnk:role name="Seller" portType="tns:sellerAnswerPT" />
4 </plnk:partnerLinkType>

注意这里定义的role可以有1个或者2个,在这个例子当中,我们看到的是2个,代表着需要两个portType(类似Java的Interface)来完成这个通道.这种情况一般是属于异步(Asynchronous)的情况. 我们也可以看做是2个的叫做双向,1个的叫做单向. 1个的一般直接是同步(Synchronous)的,可以直接获取到结果的,不用向异步那样需要一个回调方法(callback).

介绍完PartnerLinkType,可以把PartnerLink想做是PartnerLinkType的实例化.但有点不同的是,在上面我们讲到PartnerLinkType是有单向和双向的,在双向的情况下,那到底是哪个方向呢?比方说,到底是从A ->B 还是从 B -> A呢? PartnerLink的定义就会明确规定了这个方向,比如说:

1 <partnerLink name=”seller”
2    partnerLinkType=”AuctionHouse_SellerLT”
3    myRole=”AuctionHouse” partnerRole=”Seller”>
4 </partnerLink>

注意到这里的myRole和partnerRole的属性,这两个属性指明了PartnerLinkType的方向. 这里, MyRole是指BPEL Process, partnerRole是指外部的we service. 那么,这个例子当中就是,这个通道是从bpel process流向exernal web service.也就是有个请求发送到bpel process,然后bpel process通过这个通道,调用到外面的web service,然后外部的web service再传递结果给bpel process.

这里,我们还得看下单向的情况(也就是在定义PartnerLinkType时,只有一个role的). 比方下面的这个例子.

1 <plnk:partnerLinkType name="loanPartnerLT">
2 <plnk:role name="loanService" portType="tns:loanServicePT" />
3 </plnk:partnerLinkType>
4 <plnk:partnerLinkType name="loanApprovalLT">
5 <plnk:role name="approver" portType="tns:loanApprovalPT" />
6 </plnk:partnerLinkType>

再看PartnerLink的定义.

1 <partnerLink  name="customer"
2 partnerLinkType="lns:loanPartnerLT"
3 myRole="loanService" />
4  
5 <partnerLink name="approver"
6 partnerLinkType="lns:loanApprovalLT"
7 partnerRole="approver" />

在这里,第一个customer的partnerLink定义,说明这个管道是从bpel process这个方向开的,也就是说Request的message应该是发到 Bpel Process. 相反的,第二个approver是属于partnerRole,也就是说这个Request Message应该是BPEL Process发给 partner (也就是外部真正提供服务的web service).

可以推知,凡是partnerLink中定义了myrole的地方,都是外界要调用bpel process的地方,必然对应receive操作.

注意,因为这个PartnerLinkType是WSDL的一个扩展点,所以很多时候,对于这个PartnerLinkType就直接定义在WSDL文件里,而不放在.bpel文件中.[Reference]
0. WSBPEL 2.0 specification
1. PartnerLinks and PartnerLinkTypes
2. BPEL中的PartnerLink和PartnerLinkType

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值