MuleSoft - Управление потоком и трансформаторы
Управление потоком (маршрутизаторы)
Основная задача компонента Flow Control - принять входное событие Mule и направить его в одну или несколько отдельных последовательностей компонентов. По сути, это маршрутизация входящего события Mule к другим последовательностям компонентов. Поэтому его еще называют маршрутизаторами. Маршрутизаторы Choice и Scatter-Gather являются наиболее часто используемыми маршрутизаторами в компоненте Flow Control.
Выбор маршрутизатора
Как следует из названия, этот маршрутизатор применяет логику DataWeave для выбора одного из двух или более маршрутов. Как обсуждалось ранее, каждый маршрут представляет собой отдельную последовательность обработчиков событий Mule. Мы можем определить маршрутизаторы выбора как маршрутизатор, который динамически направляет сообщение через поток в соответствии с набором выражений DataWeave, используемых для оценки содержимого сообщения.
Принципиальная схема Choice Router
Эффект от использования маршрутизатора Choice аналогичен добавлению условной обработки к потоку или if/then/elseблок кода в большинстве языков программирования. Ниже приводится схематическая диаграмма маршрутизатора выбора, имеющего три варианта. Среди них один - маршрутизатор по умолчанию.
Маршрутизатор Scatter-Gather
Другой наиболее часто используемый обработчик событий маршрутизации - это Scatter-Gather component. Как следует из названия, он работает на принципах разброса (копирование) и сбора (объединение). Мы можем понять его работу с помощью следующих двух пунктов:
Во-первых, этот маршрутизатор копирует (Scatter) событие Mule на два или более параллельных маршрута. Условие состоит в том, что каждый маршрут должен быть последовательностью из одного или нескольких обработчиков событий, которые подобны подпотоку. Каждый маршрут в этом случае будет создавать событие Mule с использованием отдельного потока. Каждое событие Mule будет иметь свою полезную нагрузку, атрибуты, а также переменные.
Затем этот маршрутизатор собирает созданные события Mule из каждого маршрута и затем объединяет их вместе в новое событие Mule. После этого он передает это объединенное событие Mule следующему обработчику событий. Здесь условие состоит в том, что маршрутизатор SG передает консолидированное событие Mule следующему обработчику событий только после успешного завершения каждого маршрута.
Принципиальная схема маршрутизатора Scatter-Gather
Ниже представлена принципиальная схема маршрутизатора Scatter-Gather с четырьмя обработчиками событий. Он выполняет все маршруты параллельно, а не последовательно.
Обработка ошибок маршрутизатором Scatter-Gather
Во-первых, мы должны знать, какие ошибки могут возникать в компоненте Scatter-Gather. Любая ошибка может быть сгенерирована в обработчиках событий, в результате чего компонент Scatter-Gather выдаст ошибку типаMule: COMPOSITE_ERROR. Эта ошибка будет выдана компонентом SG только после сбоя или завершения каждого маршрута.
Чтобы обработать этот тип ошибки, try scopeможет использоваться в каждом маршруте компонента Scatter-Gather. Если ошибка успешно обработанаtry scope, тогда маршрут наверняка сможет сгенерировать событие Mule.
Трансформеры
Предположим, что если мы хотим установить или удалить часть любого события Mule, компонент Transformer - лучший выбор. Компоненты трансформатора бывают следующих типов -
Удалить переменный трансформатор
Как следует из названия, этот компонент принимает имя переменной и удаляет эту переменную из события Mule.
Настройка удаления переменного трансформатора
В таблице ниже показаны названия полей и их описание, которые следует учитывать при настройке удаления преобразователя переменных -
Старший Нет | Поле и объяснение |
---|---|
1 |
Display Name (doc:name) Мы можем настроить это, чтобы отображать уникальное имя для этого компонента в нашем рабочем потоке Mule. |
2 | Name (variableName) Он представляет собой имя удаляемой переменной. |
Установить трансформатор полезной нагрузки
С помощью set-payloadкомпонент, мы можем обновить полезную нагрузку сообщения, которая может быть буквальной строкой или выражением DataWeave. Не рекомендуется использовать этот компонент для сложных выражений или преобразований. Его можно использовать для простых, таких какselections.
В таблице ниже показаны названия полей и их описание, которые необходимо учитывать при настройке преобразователя полезной нагрузки.
Поле | Применение | Объяснение |
---|---|---|
Значение (значение) | Обязательный | Поле значений требуется для установки полезной нагрузки. Он будет принимать буквальную строку или выражение DataWeave, определяющее, как установить полезную нагрузку. Примеры похожи на «какую-то строку» |
Тип пантомимы (mimeType) | Необязательный | Это необязательно, но представляет собой mime-тип значения, присвоенного полезной нагрузке сообщения. Примеры похожи на text / plain. |
Кодировка (кодировка) | Необязательный | Это также необязательно, но представляет собой кодировку значения, присвоенного полезной нагрузке сообщения. Примеры похожи на UTF-8. |
Мы можем установить полезную нагрузку через код конфигурации XML -
With Static Content - Следующий код конфигурации XML установит полезную нагрузку с использованием статического содержимого -
<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }"
mimeType = "application/json" encoding = "UTF-8"/>
With Expression Content - Следующий код конфигурации XML установит полезную нагрузку с использованием содержимого Expression -
<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>
В приведенном выше примере сегодняшняя дата будет добавлена к сообщению «Привет».
Установить переменный трансформатор
С помощью set variableкомпонент, мы можем создать или обновить переменную для хранения значений, которые могут быть простыми буквальными значениями, такими как строки, полезные данные сообщения или объекты атрибутов, для использования в потоке приложения Mule. Не рекомендуется использовать этот компонент для сложных выражений или преобразований. Его можно использовать для простых, таких какselections.
Настройка трансформатора набора переменных
В таблице ниже показаны названия полей и их описание, которые необходимо учитывать при настройке преобразователя полезной нагрузки.
Поле | Применение | Объяснение |
---|---|---|
Имя переменной (variableName) | Обязательный | Это обязательное поле, которое представляет собой имя переменной. Давая имя, следуйте соглашению об именах, так как оно должно содержать число, символы и подчеркивания. |
Значение (значение) | Обязательный | Поле значений требуется для установки переменной. Он будет принимать буквальную строку или выражение DataWeave. |
Тип пантомимы (mimeType) | Необязательный | Это необязательно, но представляет собой mime-тип переменной. Примеры похожи на text / plain. |
Кодировка (кодировка) | Необязательный | Это также необязательно, но представляет собой кодировку переменной. Примеры похожи на ISO 10646 / Unicode (UTF-8). |
пример
В приведенном ниже примере переменная будет установлена на полезную нагрузку сообщения -
Variable Name = msg_var
Value = payload in Design center and #[payload] in Anypoint Studio
Точно так же в приведенном ниже примере будет установлена переменная для полезной нагрузки сообщения -
Variable Name = msg_var
Value = attributes in Design center and #[attributes] in Anypoint Studio.