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

在BPEL中迭代DSS响应(WSO2 BPS),wso2,bpel,wso2carbon,synapse,Wso2,Bpel,Wso2carbon,Synapse,我正在使用WSO2 BPS和WSO2 DSS DSS有两项服务,如下所示: (1) 返回状态和状态的列表 (2) 将记录插入表中 我成功地从BPEL工作流调用了这两个DSS服务。但我需要实现以下目标。 我的第一个DSS将返回“状态列表”。我必须迭代(使用'forEach'或'while'或…)该响应,并从中选择特定节点(StatusDescription),并将其用于下一次DSS调用。我的第一个DSS回复如下 <Response xmlns="http://ws.wso2.org/data

我正在使用
WSO2 BPS和WSO2 DSS

DSS有两项服务,如下所示:
(1) 返回状态和状态的列表
(2) 将记录插入表中

我成功地从
BPEL工作流
调用了这两个DSS服务。但我需要实现以下目标。
我的第一个DSS将返回“状态列表”。我必须迭代(使用
'forEach'或'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>  

1.
活跃的
2.
不活跃的
有人能推荐一些教程或代码片段来迭代上述DSS响应吗?i、 e,My
bpel:finalCounterValue
将为“2”,因为上面的XML中有2个“Status”节点


提前感谢。

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

<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>  

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


学习愉快

没有理由使用BPEL活动进行迭代。只需在赋值中使用普通XPath表达式。类似于
$VariableName/*[child::StatusId=2]/StatusDescription
(省略名称空间)的东西应该可以做到这一点。但上述回答只是一个样本。在实际中,状态的数量可能不同(动态)。所以,我必须考虑其他的选择。谢谢