Mule: вернуть исходное сообщение в поток (например, For Each)
В разделе "Для каждого" мы видим: "Область Foreach разбивает коллекцию на элементы и итеративно обрабатывает их с помощью процессоров, встроенных в область, а затем возвращает исходное сообщение в поток".
Я хотел бы знать, если у нас есть форма для возврата исходного сообщения в поток, когда в середине потока у нас есть обработка с новым сообщением (полезная нагрузка), аналогичная для каждого работает, но это не тот случай, чтобы использовать для каждого!
Пример:
Поток (полезная нагрузка AA) -> ["Sub" поток (полезная нагрузка BB)] -> Поток (полезная нагрузка AA)
Есть ли форма для этого?
1 ответ
Самый простой способ - использовать обогащение, в котором хранится результат sub-flow
в flowVar, чтобы исходная полезная нагрузка не изменялась:
<enricher target="#[flowVars.someSubFlowResult]">
<flow-ref name="mySubFlow" />
</enricher>
Или, альтернативно, вручную сохранить исходную полезную нагрузку в переменной потока при входе в поток и в конце потока установить полезную нагрузку обратно в исходную полезную нагрузку, используя переменную потока. Например:
<set-variable variableName="originalPayload" value="#[payload]" />
<!-- do some other processing -->
<set-payload value="#[flowVars.originalPayload]" />