Geo*_*nis 1 loops list bpel netbeans6.8
我正在Netbeans 6.8中构建一个BPEL流程,我调用一个返回int列表的Web服务.
<xs:complexType name="getHotelsResponse">
<xs:sequence>
<xs:element name="return" type="xs:int" minOccurs="0" maxOccurs="unbounded"></xs:element>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
我希望(如果可能的话 - 不再确定......)迭代所有这些int并为它们中的每一个调用不同的Web服务.
我尝试使用ForEach活动,但我无法弄清楚我的用例.它需要一个启动值和最终值(如果我能以某种方式得到我有多少个整数回来),但即使如此,ForEach活动里面,如果说我把分配活动我如何才能在每个循环列表的当前元素?
我使用以下BPEL片段将列表的内容连接到逗号分隔的字符串.您可以使用相同的代码与调用来调用外部服务.
<bpel:forEach parallel="no" counterName="Counter" name="ForEach">
<bpel:startCounterValue>
<![CDATA[1]]>
</bpel:startCounterValue>
<bpel:finalCounterValue><![CDATA[count($input.payload/tns:return)]]></bpel:finalCounterValue>
<bpel:scope>
<bpel:assign validate="no" name="AppendItem">
<bpel:copy>
<bpel:from>
<![CDATA[concat($Response, $input.payload/tns:return[round($Counter)], ", ")]]>
</bpel:from>
<bpel:to variable="Response"></bpel:to>
</bpel:copy>
</bpel:assign>
</bpel:scope>
</bpel:forEach>
Run Code Online (Sandbox Code Playgroud)
您可以从以下XPath获取元素的数量
count($input.payload/tns:return)
Run Code Online (Sandbox Code Playgroud)
您可以使用以下XPath访问第i个元素的值
$input.payload/tns:return[round($Counter)]
Run Code Online (Sandbox Code Playgroud)
你可能会摆脱round()函数,但我必须用它来摆脱Apache ODE中的一个问题.