迭代BPEL中的DSS响应(WSO2 BPS)

时间:2013-04-19 12:48:54

标签: wso2 bpel wso2carbon synapse

我正在使用WSO2 BPS and WSO2 DSS DSS的2 services如下:
(1)返回状态列表和
(2)将记录插入表中。

我成功调用BPEL Workflow的两个DSS服务。但我需要做到以下几点 我的第一个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个“状态”节点。

先谢谢。

1 个答案:

答案 0 :(得分: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'迭代两次。

快乐学习。