我正在使用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个循环,它也会没有错误地结束。 所以问题是:如何将值分配到集合中?
答案 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>