Трансформация сообщений
Узел вида Транслятор предназначен для изменения сообщения. Изменение сообщения происходит в обработчике события ОбработчикПреобразования.
Если говорить точнее, то в этом узле создается копия исходного сообщения, она изменяется и отсылается дальше вместо исходного сообщения. Узел вида Транслятор — единственное место, где это можно сделать.
Преобразование тела сообщения
Есть следующий процесс интеграции:
Здесь сообщение создается в одном из модулей приложения, на встроенном языке, и затем отправляется в узел Вход, который является программным источником.
В узле Xml2Json выполняется преобразование тела сообщения из XML в JSON. Обработчик узла может выглядеть следующим образом:
метод КонвертацияТела(Контекст: КонтекстВызоваИнтеграции,
Сообщение: ПримерИнтеграции1.Сообщение): СообщениеИнтеграции
исп СтароеТело = Сообщение.ПолучитьТелоКакПоток()
пер Читатель = новый ЧтениеXml(СтароеТело)
исп Поток = новый ВременныйПотокЗаписи()
пер Писатель = новый ЗаписьJson(Поток)
ОбщиеМетоды.Xml2Json(Читатель, Писатель)
исп НовоеТело = Поток.ОткрытьПотокЧтения()
возврат Сообщение.УстановитьТелоИзПотока(НовоеТело)
;
Старое тело сообщения преобразуется в JSON, а затем оно устанавливается в качестве нового тела сообщения. В общем модуле ОбщиеМетоды находится набор методов, преобразующих XML в JSON.
Установка параметров сообщения
Есть следующий процесс интеграции:
Здесь сообщение также создается в одном из модулей приложения, на встроенном языке, и затем отправляется в узел Вход, который является программным источником.
В дальнейшем это сообщение будет отправлено HTTP-запросом, поэтому в узле вида «Транслятор» НастройкаЗапроса устанавливаются заголовки запроса и заполняется тело сообщения:
метод ПодготовитьЗапрос(Контекст: КонтекстВызоваИнтеграции,
Сообщение: ПримерИнтеграции2.Сообщение): СообщениеИнтеграции
исп Тело = новый ВременныйПотокЗаписи()
Тело.Записать("Новое содержимое")
исп Поток = Тело.ОткрытьПотокЧтения()
возврат Сообщение
.УстановитьПараметр("ChangedHeader", "NewValue")
.УстановитьПараметр("RemovedHeader", Неопределено)
.УстановитьПараметр("NewHeader", "NewValue")
.УстановитьТелоИзПотока(Поток)
;