Свойства узла процесса интеграции вида «Транслятор»

Узел этого вида позволяет менять тело и заголовок сообщения.

Свойства узла

ОбновлениеМетрик
Обработчик, внутри которого можно обновлять метрики, добавленные в проект разработчиком. Пример:
// Разработчик добавил в проект метрику «СчетчикВУзле». Тогда обновить метрику в узлах
// можно следующим образом:
метод ОбновлениеМетрик(Контекст: МойПроцессИнтеграции.КонтекстВызова, Сообщение: МойПроцессИнтеграции.Сообщение)
    пер СчетчикВУзле = МойПроцессИнтеграции.Метрики["СчетчикВУзле"]
    СчетчикВУзле.Обновить(Сообщение.УзлыПути.Текущий.Узел.Имя, 1)
;
Преобразование
Обработчик, который позволяет изменить заголовки и тело сообщения.
Сообщение находится в параметре Сообщение. Результирующее сообщение может быть получено из исходного путем изменения свойств его заголовка и/или тела. Если при выполнении обработчика возникает неперехваченная ошибка, сообщение отправляется в канал недоставленных сообщений.

Пример использования

Контекст: Приложение хочет отправить сообщение по протоколу HTTP другой информационной системе. Приложение-отправитель передает сообщение в формате XML, в то время как приложение-получатель способно интерпретировать сообщения только в формате JSON.

Задача: В процессе обмена трансформировать тело сообщения из XML в JSON и доставить его в новом формате получателю.

Решение: Используем ПрограммныйИсточник («Вход»), как узел, при помощи которого сообщение из обработчика HTTP-сервиса программно отправляется в процесс интеграции. Из программного источника сообщение попадает в узел-транслятор («Xml2Json»). В обработчике этого узла читается тело сообщения: оно интерпретируется как XML, после чего конвертируется в JSON. Из этого JSON’а получается тело нового сообщения и именно это сообщение возвращается из обработчика. Таким образом, старое сообщение остается неизменным, а далее по маршруту двигается новое сообщение. Оно попадает в Канал1СНазначение, где сохраняется в очередь. На заключительном шаге получатель считывает сообщение из этой очереди.

Обработчик преобразования:
метод КонвертацияТела(Контекст: КонтекстВызова, 
                      Сообщение: Стд::ИнтеграционнаяШина::СообщениеИнтеграции): Стд::ИнтеграционнаяШина::СообщениеИнтеграции
    исп СтароеТело = Сообщение.ПолучитьТелоКакПоток()
    пер Читатель = новый ЧтениеXml(СтароеТело)
    исп Поток = новый ВременныйПотокЗаписи()
    пер Писатель = новый ЗаписьJson(Поток)
    ОбщиеМетоды.Xml2Json(Читатель, Писатель)
    исп НовоеТело = Поток.ОткрытьПотокЧтения()
    возврат Сообщение.УстановитьТелоИзПотока(НовоеТело)
;