PartnerLink,PartnerLinkType详解
来源:互联网 发布:群发短信软件免费版 编辑:程序博客网 时间:2024/06/05 10:00
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
- PartnerLink,PartnerLinkType详解
- BPEL中的partnerlink和partnerlinktype
- BPEL流程的状态与形式化定义---第二部分:partnerLink与partnerLinkType
- 未定义partnerLinkType问题的解决方案
- 关于partnerLinkType的相关实验
- 例说BPEL4WS(3)--什么是partnerLinkType
- 例说BPEL4WS(3)--什么是partnerLinkType
- 例说BPEL4WS(3)--什么是partnerLinkType
- 终于明白了bpel中partnerLink中role的含义
- 例说BPEL4WS(转自HongSoft大哥)--3.什么是partnerLinkType
- 详解
- 详解
- 详解
- 详解
- &,&&,|,||详解
- 详解
- Scala详解--------基础知识详解
- Spring详解-----------事务详解
- vb 整图复制
- Eclipse 插件大全介绍
- 按拼音对HashMap中的key进行排序
- NS2.3 在 fedora上的安装出现 致命错误:X11/Xlib.h:没有那个文件或目录
- LINUX 和 WINDOWS 内核的区别
- PartnerLink,PartnerLinkType详解
- docx,xlsx等在android中的type
- Oracle 关于日期时间比较、格式转化等操作
- Android4.0.3 显示系统深入理解
- 解决"链接服务器 '(null)' 的 OLE DB 访问接口 'STREAM' 返回了对列 '[!BulkInsert].fieldname' 无效的数据"的一种替换方法
- Android 与 .net 互通的RSA加密
- Android中attr自定义属性详解
- linux下获取本地IP信息(没看代码)
- eclipse不能自动编译APK