0

我正在使用WSO2 BPS and WSO2 DSS.
DSS 具有2 services以下功能:
(1)返回状态列表和
(2)将记录插入表中。

我成功地从BPEL Workflow. 但我需要实现以下目标。
我的第一个 DSS 将返回“状态列表”。我必须迭代(使用'forEach' or 'while'或...)该响应并从中选择特定的节点(StatusDescription)并将其用于下一次 DSS 调用。我的第一个 DSS 回复如下。

<Response xmlns="http://ws.wso2.org/dataservice">
    <Status>
        <StatusId>1</StatusId>
        <StatusDescription>Active</StatusDescription>
    </Status>
    <Status>
        <StatusId>2</StatusId>
        <StatusDescription>Inactive</StatusDescription>
    </Status>
</Response>  

任何人都可以建议一些可以遍历上述 DSS 响应的教程或代码片段吗?即,我bpel:finalCounterValue将是“2”,因为上述 XML 中有 2 个“状态”节点。

提前致谢。

4

1 回答 1

1

我找到了迭代节点的方法。请在下面找到代码片段。

<bpel:forEach parallel="no" counterName="Counter" name="ForEach">
            <bpel:startCounterValue>
                <![CDATA[1]]>
            </bpel:startCounterValue>
            <bpel:finalCounterValue>                
                <![CDATA[count($GetStatusPLResponse.parameters/ns:Status)]]>
            </bpel:finalCounterValue>
            <bpel:scope>
                <!-- Some activity goes here. Say Assign or Invoke or .... -->
            </bpel:scope>
        </bpel:forEach>  

count命名空间下可用的方法xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"帮助我们找到节点数('Status')。
count方法返回值“2”,因此'forEach'迭代两次。

祝学习愉快。

于 2013-04-22T06:32:37.957 回答