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>(选择/监听/闹钟)

责编:豆豆技术应用

正在加载评论...