Я использовал следующий фрагмент BPEL, чтобы объединить содержимое списка в строку через запятую.
Вы можете использовать тот же код с вызовом для вызова внешней службы.
<bpel:forEach parallel="no" counterName="Counter" name="ForEach">
<bpel:startCounterValue>
<![CDATA[1]]>
</bpel:startCounterValue>
<bpel:finalCounterValue><![CDATA[count($input.payload/tns:return)]]></bpel:finalCounterValue>
<bpel:scope>
<bpel:assign validate="no" name="AppendItem">
<bpel:copy>
<bpel:from>
<![CDATA[concat($Response, $input.payload/tns:return[round($Counter)], ", ")]]>
</bpel:from>
<bpel:to variable="Response"></bpel:to>
</bpel:copy>
</bpel:assign>
</bpel:scope>
</bpel:forEach>
Количество элементов можно узнать из следующего XPath
count($input.payload/tns:return)
Вы можете получить доступ к значению i-го элемента, используя следующий XPath
$input.payload/tns:return[round($Counter)]
Вы можете избавиться от функции round (), но мне пришлось воспользоваться, чтобы избавиться от проблемы в Apache ODE.