Поскольку вы хотите объединить часть содержимого нескольких файлов xml (json), а ваш пример сложный, я упростил их.
Ваше требование эквивалентно объединению файла xml
<orderQuote>
<order_id>AZS000001</order_id>
<quote_id>345678</quote_id>
<rate_id>ABC001</rate_id>
</orderQuote>
и
<orderQuote>
<order_id>AZS000001</order_id>
<quote_id>8975545</quote_id>
<rate_id>ABC002</rate_id>
</orderQuote>
до
<orderQuote>
<order_id>AZS000001</order_id>
<quotationCollection>
<quotation>
<quote_id>8975545</quote_id>
<rate_id>ABC002</rate_id>
</quotation>
<quotation>
<quote_id>345678</quote_id>
<rate_id>ABC001</rate_id>
</quotation>
</quotationCollection>
</orderQuote>
Для этого требования я сначала инициализирую четыре переменные (переменная isFirstTime используется для определения, является ли она первым циклом вдля каждого).
Затем я подключаюсь к ftp и анализирую XML-файл, полученный из ftp в формат json.
Затем я установил значение переменной с помощью "order_id" (на этом шаге вам может потребоваться установить некоторые другие переменные, такие как "username", "user_first_name" .....)
Следующим шагом я создаю условие «если» для выполнения другой работы.
В нижней части цикла «Для каждого» нам нужно установить для переменной «isFirstTime» значение false.
После завершения цикла «Для каждого» у нас есть два последних шага. Выражение "fx concat (...)" равно
concat(concat(concat(concat('{"orderQuote":{"order_id":"', variables('order_id')), '","quotationCollection":['), variables('jsonstring')), ']}}')
После этого мы можем получить файл результата в формате json.
{
"orderQuote": {
"order_id": "AZS000001",
"quotationCollection": [
{
"quotation": {
"quote_id": "345678",
"rate_id": "ABC001"
}
},
{
"quotation": {
"quote_id": "8975545",
"rate_id": "ABC002"
}
}
]
}
}
Кстати, нам лучше выполнить некоторые настройки, прежде чем использовать цикл «Для каждого», нажмите значок «…» рядом с действием «Для каждого» -> нажмите «Настройки» и затем включите «Управление параллелизмом».»и измените« Степень параллелизма »на 1.