WSO2 BPEL分配给映射列表或集合

时间:2015-10-20 07:52:20

标签: wso2 variable-assignment bpel

我正在使用WSO2 BPS 3.2.0,我有一个奇怪的问题是为映射列表赋值 我有用

初始化的消息类型变量ObjectMappings
<tns:Message xmlns:tns="http://www.test.sk">
<tns:ObjectMappings>
  <tns:ObjectMapping>
    <tns:ObjectId/>
    <tns:Id/>
  </tns:ObjectMapping>
</tns:ObjectMappings>
</tns:Message>

我在输入变量中有另一个集合。我遍历输入和处理数据。最后,我将每个已处理的ObjectId的新Id分配给上面的变量。

<bpel:copy>
  <bpel:from part="return" variable="input"><bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
    <![CDATA[Body/Object[round($Counter)]/@Id]]></bpel:query></bpel:from>
  <bpel:to part="parameters" variable="ObjectMappings"><bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
    <![CDATA[ns4:ObjectMappings/ns4:ObjectMapping[round($Counter)]/ns4:ObjectId]]></bpel:query></bpel:to>
</bpel:copy>

但不幸的是,它最终会出现错误{http://docs.oasis-open.org/wsbpel/2.0/process/executable} selectionFailure:表达式没有结果:'ObjectMappings / ObjectMapping [round($ Counter)] / ObjectId'by

<Message xmlns="http://www.test.sk">
  <tns:ObjectMappings xmlns="" xmlns:tns="http://www.test.sk">
     <tns:ObjectMapping>
        <tns:ObjectId/>
        <tns:Id/>
     </tns:ObjectMapping>
     <tns:ObjectMapping>
        <tns:ObjectId/>
        <tns:Id/>
     </tns:ObjectMapping>
  </tns:ObjectMappings>

故障数据无可用数据。

故障在计数器值= 1时上升 当我用固定值1替换索引值round($ Counter)时,它可以正常工作。即使我添加逻辑来处理具有固定值的2个循环,它也会没有错误地结束。 所以问题是:如何将值分配到集合中?

1 个答案:

答案 0 :(得分:0)

我在分配新元素时找到了改变顺序的解决方案 最初我在变量

的末尾添加了新元素

<tns:ObjectMappings xmlns="" xmlns:tns="http://www.test.sk"> <tns:ObjectMapping> <tns:ObjectId>1</tns:ObjectId> <tns:Id>10</tns:Id> </tns:ObjectMapping> <tns:ObjectMapping> <tns:ObjectId/> <tns:Id/> </tns:ObjectMapping> </tns:ObjectMappings>

所以我不得不使用索引来分配值。 现在我在变量

的开头添加新元素

<tns:ObjectMappings xmlns="" xmlns:tns="http://www.test.sk"> <tns:ObjectMapping> <tns:ObjectId/> <tns:Id/> </tns:ObjectMapping> <tns:ObjectMapping> <tns:ObjectId>1</tns:ObjectId> <tns:Id>10</tns:Id> </tns:ObjectMapping> </tns:ObjectMappings>

现在我可以通过固定索引= 1来分配值     

我在分配新元素时找到了改变顺序的解决方案 最初我在变量的末尾添加了新元素。所以我不得不使用索引来分配值。 现在我在变量的开头添加新元素。所以我可以通过fixed index = 1

分配值
<bpel:to part="parameters" variable="ObjectMappings"><bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[ns4:ObjectMappings/ns4:ObjectMapping[1]/ns4:ObjectId]]></bpel:query>
</bpel:to>