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]" />
Другие вопросы по тегам