Create By Any-Extract(WL-AE) 数据挖掘实验室
BPEL活动(Activity)是指BPEL流程中一条语句或者一个步骤的执行。BPEL常用的一些基本活动如下:
- <assign>/<invoke>(赋值/调用);
- <condition>/<otherwise>(条件/否则);
- <sequence>/<flow>(顺序/并行);
- <link>/<source>/<target>(链接/源/目标);
- <pick>/< onMessage>/ <onAlarm>(选择/监听/闹钟)。
下面将予以详细的介绍。 数据挖掘论坛
<receive> /<reply>(接收/恢复)
接收<receive>是整个BPEL的起点,一旦BPEL引擎从客户端接收到请求消息,它将会启动一个BPEL的流程。
<receive>的属性如下。
数据挖掘工具
- name:定义receive的名称,此处为“request”。
- partnerLink:对应于BPEL流程定义的partnerLink的名字,实例如下。
|
<bpel:partnerLink myRole="HouseLoanBrokerService" name="HouseLoanBroker" 数据挖掘工具
partnerLinkType="tns:HouseLoanBrokerPL"/> 数据挖掘研究院 |
- portType:对应于合作伙伴链接中partnerLinkType所定义的WSDL的接口portType。
- operation:对应于合作伙伴链接中partnerLinkType所定义的WSDL的接口操作(Operation)。
- variable:variable="request"表示客户端的请求消息将会被赋值到所定义的变量“request”中。
- createInstance:createInstance="yes"表示BPEL将会创建一个新的实例
下面是房屋贷款的receive实例: 数据挖掘工具
|
<bpel:receive name="request" partnerLink="HouseLoanBroker"
portType="tns:HouseLoanBroker" operation="getLoanQuote" variable="request" 数据挖掘工具
createInstance="yes"> 数据挖掘论坛
</bpel:receive> 数据挖掘论坛 |
恢复<reply>是整个BPEL的终点,BPEL流程将会把响应结果返回给服务请求者。 数据挖掘交友
< reply >的属性如下: 数据挖掘交友
- name:定义receive的名称,此处为“response”。
- partnerLink:对应于BPEL流程定义的partnerLink的名字;
|
<bpel:partnerLink myRole="HouseLoanBrokerService"
name="HouseLoanBroker" partnerLinkType="tns:HouseLoanBrokerPL"/> 数据挖掘论坛 |
- portType:对应于合作伙伴链接中partnerLinkType所定义的WSDL的接口portType。
- operation:对应于合作伙伴链接中partnerLinkType所定义的WSDL的接口操作(Operation)。
- variable:variable=" response "表示BPEL流程会将结果变量“response”返回给服务请求者。
下面是房屋贷款的reply的实例:
|
<bpel:reply name="response" partnerLink="HouseLoanBroker" 数据挖掘工具
portType="tns:HouseLoanBroker" operation="getLoanQuote" 数据挖掘研究院
variable="response" /> |
<assign> /<invoke>(赋值/调用)
<assign>赋值和<invoke>调用经常是一前一后的两个任务。这是因为在调用合作伙伴的服务时,需要先给合作伙伴的接口的输入变量赋值,然后再调用服务。 数据挖掘交友
下面是assign的写法实例,它主要是要定义两个元素,一个是<from>,一个<to>;其过程就是要将<from>变量下的某个参数复制到<to>变量下的某个参数中。值得注意的是,两个参数的类型必须一致。此外,不能将整个变量复制给另一变量,只能复制变量下面的参数。 数据挖掘研究院
|
<bpel:assign> 数据挖掘交友
<bpel:copy> 数据挖掘交友
<bpel:from variable="ca-housenumber-response" part="payload" 数据挖掘实验室
query="/ca:getHouseNumberResponse/ca:housenumber" /> 数据挖掘论坛
<bpel:to variable="bk-loanquote-request" part="payload"
query="/bk:getLoanQuoteRequest/bk:housenumber"/> 数据挖掘实验室
</bpel:copy>
</bpel:assign> 数据挖掘交友 |
<invoke>调用是BPEL中最重要的活动,其他所有的活动都是为了辅助整个活动,它将会调用合作伙伴的服务,得到返回结果。 数据挖掘实验室
<invoke>的属性如下: 数据挖掘论坛
- name:定义invoke的名称,此处为“bank0”。
- partnerLink:对应于BPEL流程定义的partnerLink的名字,实例如下:
|
<bpel:partnerLink partnerRole="BankService" name="Bank0"
partnerLinkType="bk:BankPL"/> 数据挖掘论坛 |
- portType:对应于合作伙伴链接中partnerLinkType所定义的WSDL的接口portType。
- operation:对应于合作伙伴链接中partnerLinkType所定义的WSDL的接口操作(Operation)。
- inputVariable:表示在调用合作伙伴服务之前,事先定义并且已经赋值的输入变量。
- outputVariable:存储合作伙伴服务调用结果的输出变量。
下面是房屋贷款的invoke的实例: 数据挖掘实验室
|
<bpel:invoke name="bank0" partnerLink="Bank0" 数据挖掘论坛
portType="bk:Bank" operation="getLoanQuote" 数据挖掘论坛
inputVariable="bk-loanquote-request"
outputVariable="bk-loanquote-response-0" 数据挖掘实验室
sm:endpoint="urn:logicblaze:soa:bank:Bank0:bank" /> 数据挖掘论坛 |
<condition> /<otherwise>(条件/否则)
<condition> /<otherwise>(条件/否则)是BPEL中的条件语句。因为BPEL是流程管理的程序语言,因此它需要根据不同的条件来调用不同的合作伙伴的服务。<condition> /<otherwise>一般会一起使用,<otherwise>表示上述条件都不满足时的下一步活动。 数据挖掘工具
<condition>通常会调用getVariableData()来得到变量中某一路径下的参数值,再和常量或者其他变量的参数值进行比较。
数据挖掘实验室
下面是房屋贷款中<condition> /<otherwise>的实例。
数据挖掘工具
首先是房屋数量为0时的情形的一个分支,调用Bank0的服务。 数据挖掘论坛
|
<bpel:switch> 数据挖掘工具
<bpel:case condition="getVariableData("bk-loanquote-request", "payload", 数据挖掘工具
"/bk:getLoanQuoteRequest/bk:housenumber") = 0 "> 数据挖掘研究院
<bpel:invoke name="bank0" partnerLink="Bank0" 数据挖掘实验室
portType="bk:Bank" operation="getLoanQuote" 数据挖掘实验室
inputVariable="bk-loanquote-request" 数据挖掘实验室
outputVariable="bk-loanquote-response-0" 数据挖掘论坛
sm:endpoint="urn:logicblaze:soa:bank:Bank0:bank" /> 数据挖掘研究院
</bpel:case> 数据挖掘研究院 |
最后用<otherwise>来实现BPEL条件的最后一个分支,房屋数量大于2时的一个分支。
|
<bpel:otherwise> 数据挖掘工具
<bpel:invoke name="bank3" partnerLink="Bank3" 数据挖掘实验室
portType="bk:Bank" operation="getLoanQuote" 数据挖掘工具
inputVariable="bk-loanquote-request" 数据挖掘交友
outputVariable="bk-loanquote-response-3"
sm:endpoint="urn:logicblaze:soa:bank:Bank3:bank" /> 数据挖掘工具
</bpel:otherwise> 数据挖掘论坛
</bpel:switch> 数据挖掘论坛 |
Create By Any-Extract(WL-AE)