如何遍历BPEL流程中的int列表



我正在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>

我希望(如果可能的话-不再确定…)遍历所有这些int,并为它们中的每一个调用不同的Web服务。

我尝试使用ForEach活动,但我不知道我的案例的用法。它需要一个开始值和结束值(如果我能以某种方式得到我得到的int数),但即使在ForEach活动中,如果说我放了一个Assign活动,我如何在每个循环中获得列表的当前元素?

我使用以下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>

您可以从以下XPath 中获得元素的计数

count($input.payload/tns:return)

您可以使用以下XPath 访问第i个元素的值

$input.payload/tns:return[round($Counter)]

您可能会去掉round()函数,但我不得不使用它来解决ApacheODE中的一个问题。

相关内容

  • 没有找到相关文章