BPEL活动浅析
http://tech.ddvip.com 2008年01月05日 社区交流
内容摘要:BPEL活动(Activity)是指BPEL流程中一条语句或者一个步骤的执行。
对于比较复杂的并行的流程,通过链接的定义使得流程能从一个活动跳转到另一个活动。每个<link>链接都会定义一个<source>源和一个<target>目标;如果链接<source>源的转换条件满足的话,将会跳到链接<target>源所在的活动;可以通过transitionCondition来给<source>加上转换条件,如果不加条件,那么认为是true。
下面将房屋贷款的实例做一点改造来说明这个用法。首先定义两个链接“invoke-bank0”和“invoke-bank1”,它们的<source>源都放在<bpel:assign>的活动中。并通过transitionCondition分别给这两个链的源接加上跳转的条件。如果invoke-bank0的源的条件transitionCondition满足的话(即房屋数量为0),它将会跳转到invoke-bank0的目标所在的活动,即invoke Bank0的活动;同理,如果invoke-bank1的源的transitionCondition转换条件(即房屋数量为1)满足的话,它将会跳转到invoke-bank1的目标所在的活动,即invoke Bank1的活动。
<bpel:flow>
<links>
<link name="invoke-bank0"/>
<link name="invoke-bank1"/>
</links>
<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>
<source linkName="invoke-bank0"
transitionCondition="getVariableData('bk-loanquote-request', 'payload',
'/bk:getLoanQuoteRequest/bk:housenumber') = 0 "/>
<source linkName="invoke-bank1"
transitionCondition="getVariableData('bk-loanquote-request', 'payload',
'/bk:getLoanQuoteRequest/bk:housenumber') = 1 "/>
</bpel:assign>
<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" >
<target linkName="invoke-bank0"/>
</bpel:invoke>
<bpel:invoke name="bank1" partnerLink="Bank1"
portType="bk:Bank" operation="getLoanQuote"
inputVariable="bk-loanquote-request"
outputVariable="bk-loanquote-response-1"
sm:endpoint="urn:sample:soa:bank:Bank1:bank" >
<target linkName="invoke-bank1"/>
</bpel:invoke>
</flow>
<pick> /< onMessage>/ <onAlarm>(选择/监听/闹钟)
责编:豆豆技术应用