Трансформация сообщений

Узел вида Транслятор предназначен для изменения сообщения. Изменение сообщения происходит в обработчике события ОбработчикПреобразования.

Если говорить точнее, то в этом узле создается копия исходного сообщения, она изменяется и отсылается дальше вместо исходного сообщения. Узел вида Транслятор — единственное место, где это можно сделать.

Преобразование тела сообщения

Есть следующий процесс интеграции:

Здесь сообщение создается в одном из модулей приложения, на встроенном языке, и затем отправляется в узел Вход, который является программным источником.

В узле Xml2Json выполняется преобразование тела сообщения из XML в JSON. Обработчик узла может выглядеть следующим образом:

метод КонвертацияТела(Контекст: КонтекстВызова, 
                      Сообщение: ПримерИнтеграции1.Сообщение): СообщениеИнтеграции

   исп СтароеТело = Сообщение.ПолучитьТелоКакПоток()
   пер Читатель   = новый ЧтениеXml(СтароеТело)
   исп Поток      = новый ВременныйПотокЗаписи()
   пер Писатель   = новый ЗаписьJson(Поток)
   ОбщиеМетоды.Xml2Json(Читатель, Писатель)

   исп НовоеТело = Поток.ОткрытьПотокЧтения()
   возврат Сообщение.УстановитьТелоИзПотока(НовоеТело)
;

Старое тело сообщения преобразуется в JSON, а затем оно устанавливается в качестве нового тела сообщения. В общем модуле ОбщиеМетоды находится набор методов, преобразующих XML в JSON.

Установка параметров сообщения

Есть следующий процесс интеграции:

Здесь сообщение также создается в одном из модулей приложения, на встроенном языке, и затем отправляется в узел Вход, который является программным источником.

В дальнейшем это сообщение будет отправлено HTTP-запросом, поэтому в узле вида «Транслятор» НастройкаЗапроса устанавливаются заголовки запроса и заполняется тело сообщения:

метод ПодготовитьЗапрос(Контекст: КонтекстВызова, 
                        Сообщение: ПримерИнтеграции2.Сообщение): СообщениеИнтеграции

   исп Тело = новый ВременныйПотокЗаписи()
   Тело.Записать("Новое содержимое")
   исп Поток = Тело.ОткрытьПотокЧтения()

   возврат Сообщение
            .УстановитьПараметр("ChangedHeader", "NewValue")
            .УстановитьПараметр("RemovedHeader", Неопределено)
            .УстановитьПараметр("NewHeader", "NewValue")
            .УстановитьТелоИзПотока(Поток)
;

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