Перейти к основному содержимому

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также