BPEL过程组件

http://tech.ddvip.com   2008年01月05日    社区交流

内容摘要:BPEL流程的本质就是通过BPEL的活动(Activity)将BPEL的过程组件“串起来”。所谓“串起来”就是通过BPEL的活动让BPEL的过程组件产生一种动态的交互。比如说将一个变量赋值给另外一个变量,就是一种变量之间的动态的交互。

<bpel:partnerLink myRole="HouseLoanBrokerService" name="HouseLoanBroker"
partnerLinkType="tns:HouseLoanBrokerPL"/>

  2.在对应的WSDL中定义< partnerLinkType >

  为了使合作伙伴能够对应相应的WSDL的接口,需要在对应的bank.wsdl里面通过<partnerLinkType>定义它所对应的WSDL的portType:

<plnk:partnerLinkType name="BankPL">
<plnk:role name="BankService" portType="tns:Bank" />
</plnk:partnerLinkType>

  上面就将BPEL的partnerLinkTyp(BankPL)和WSDL的portType(Bank)对应上了。

  BPEL是通过合作伙伴的名字来调用<invoke>外部服务的,BPEL引擎也是通过合作伙伴的名字来和真正的服务提供者进行绑定的,如前面的实例将通过“Bank0”来调用外部的Bank0服务。

<bpel:invoke name="bank0" partnerLink="Bank0"
portType="bk:Bank" operation="getLoanQuote"
inputVariable="bk-loanquote-request"
outputVariable="bk-loanquote-response-0"
sm:endpoint="urn:sample:soa:bank:Bank0:bank" />

  变量Variables

  BPEL里面的变量Varaibles类似于Java的变量的概念,是一个保存数据的地方。但是BPEL和Java语言不太一样,Java语言的参数可以直接调用,比方说,Java程序的其他函数接口可以直接调用上面的double parameter1。但是作为BPEL语言是不行的。因为BPEL需要集成WSDL定义的Web Service。同一个参数名字在不同的WSDL中参数是不一样的,因为WSDL是一种XML结构,其本质是一种树状的数据结构,直接赋值是赋不进去的,所以需要先定义变量。一般来说对每一个合作伙伴,不管有多少输入参数和输出参数,定义两个变量即可,一个请求(request)变量,一个响应变量。

责编:豆豆技术应用

正在加载评论...