w_serviceMessage"/>
</variables>
...
在这里,您看到声明了两个合作伙伴链接。第一个是接受初始的实例化调用的主要合作伙伴链接(参见清单 10 中的 receive 元素),随后的合作伙伴链接定义将为业务流程中各项任务调用的服务。在调用业务流程期间,变量需要执行复制、存储和读取数据操作,这样您可以看到在两个变量元素中封装的需要在上面定义的每个变量。
用Eclipse执行业务流程(17)
时间:2011-02-14 IBM Tyler Anderson
您将了解如何开始执行业务流程。
清单 10. 启动流程
...
</variables>
<sequence name="sequenceComponent_5">
<receive name="ProcessInstantiation"
partnerLink="mybiz_flowPartnerLink"
portType="test:mybiz_flowPortType"
operation="execute"
variable="toyChosen"
createInstance="yes" />
<assign name="copyToy">
<copy>
<from variable="toyChosen" part="Message" />
<to variable="addToyToCart_data_in" part="Message"/>
</copy>
</assign>
<sequence name="sequenceComponent_0">
<invoke name="addToyToCart"
partnerLink="mybiz_flow_servicePartnerLink"
portType="sns:mybiz_flow_servicePortType"
operation="addToyToCart"
inputVariable="addToyToCart_data_in"
outputVariable="addToyToCart_data_out" />
<invoke name="viewCart"
partnerLink="mybiz_flow_servicePartnerLink"
portType="sns:mybiz_flow_servicePortType"
operation="viewCart"
inputVariable="addToyToCart_data_out"
outputVariable="viewCart_data_out" />
</sequence>
...
首先,外部客户需要调用您在 mybiz_flow.wsdl 文件中定义的 mybiz_flow 服务的执行操作,启动玩具购买业务流程。这将发生在清单 10 所示的 receive 元素中,同时有效负载保存在 toyChosen 变量中。接着,把 toyChosen 变量的 Message 部分复制到 addToyToCart_data_in 变量的 Message 部分中(由于两者类型不同,因此此复制语句是必须添加的),这是调用 addToyToCart 操作的输入。addToyToCart 操作的输出随后作为输入提供给 viewCart 操作。注意,执行流程与您先前建模的玩具购买业务流程完全相同(参见图 1)。
继续填充 BPEL,如下所示:
清单 11. while 循环
...
outputVariable="viewCart_data_out" />
</sequence>
<assign name="preShipping">
<copy>
<from variable="viewCart_data_out" part="Message" />
<to variable="shippingEstimator_data_in" part="Message"/>
</copy>
</assign>
<while>
<condition>
getVariableProperty(shippingEstimator_data_in,Message)
|