Типы встроенного языка, порождаемые элементом проекта вида «ПроцессИнтеграции»
После того как вы добавили в проект процесс интеграции и дали ему имя, «1С:Шина» создаст несколько типов встроенного языка. В общем случае имена этих типов выглядят следующим образом:
имя-процесса-интеграции
имя-процесса-интеграции.КонтекстВызова
имя-процесса-интеграции.Метрики
имя-процесса-интеграции.Параметры
имя-процесса-интеграции.Сообщение
имя-процесса-интеграции.Схема
имя-процесса-интеграции.УзелПути
имя-процесса-интеграции.УзлыПути
имя-процесса-интеграции.УзлыСхемы
Например, если в проекте есть процесс интеграции «СетьМагазинов», то будут созданы следующие типы:
СетьМагазинов
СетьМагазинов.КонтекстВызова
СетьМагазинов.Метрики
СетьМагазинов.Параметры
СетьМагазинов.Сообщение
СетьМагазинов.Схема
СетьМагазинов.УзелПути
СетьМагазинов.УзлыПути
СетьМагазинов.УзлыСхемы
Тип «имя-процесса-интеграции»
Тип имя-процесса-интеграции
доступен на сервере.
Он описывает процесс интеграции и содержит методы для запуска и остановки процесса интеграции, для работы с его участниками, для отправки сообщений и др.
Этот тип не имеет конструктора и имеет единственный экземпляр, обращение к которому выполняется по имени типа:
// Запустить процесс интеграции СетьМагазинов
СетьМагазинов.Запустить()
Модуль процесса интеграции
В проекте модуль, расширяющий тип имя-процесса-интеграции
, называется модулем процесса интеграции. Они исполняется на сервере.
В этом модуле вы можете обработать события всех узлов процесса интеграции.
Тип «имя-процесса-интеграции.КонтекстВызова»
Тип имя-процесса-интеграции.КонтекстВызова
доступен на сервере.
Этот тип не имеет конструктора, экземпляры этого типа доступны в обработчиках событий узлов процесса интеграции в параметре Контекст. Они описывают то место, в котором вызван обработчик. Это либо узел схемы (свойство ТекущийУзел
), либо маршрут из одного узла в другой (свойство ТекущийМаршрут
).
Например, в узле вида МаршрутизаторПоСодержимому простейший способ отправить сообщение во все следующие узлы:
метод ПроверкаУпаковки(Контекст: КонтекстВызоваИнтеграции,
Сообщение: ПримерИнтеграции.Сообщение): Коллекция<УзелСхемыИнтеграции>
возврат Контекст.ТекущийУзел.СледующиеУзлы.Значения()
;
Тип «имя-процесса-интеграции.Сообщение»
Тип имя-процесса-интеграции.Сообщение
доступен на сервере.
Он описывает сообщение и содержит методы для работы с параметрами сообщения, а также для получения и установки тела сообщения.
Также объекты этого типа доступны в обработчиках событий узлов процесса интеграции в параметре Сообщение. Они описывают то сообщение, которое передается по маршруту.
Важным свойством этого типа является свойство УзлыПути
. Оно описывает движение сообщения внутри процесса. С его помощью, например, можно узнать, из какого узла пришло сообщение, из Источник1 или из другого:
метод ИмяИзИстории(Контекст: ПримерИнтеграции3.КонтекстВызова,
Сообщение: ПримерИнтеграции3.Сообщение): Строка
пер Префикс = Сообщение.УзлыПути.Источник.Узел == Схема.Узлы.Источник1
? "1"
: "2"
возврат "%{Префикс}-%{Контекст.Участник.Код}"
;
Можно создать сообщение с нуля и отправить его в узлы процесса интеграции. Например, следующий метод получает запрос, в теле которого содержится тело сообщения. Создается новое сообщение и отправляется в узел вида «ПрограммныйИсточник» ОтПартнеров процесса интеграции СетьМагазинов.
метод ОтправитьСообщение(Запрос: HttpСервисЗапрос)
пер ЯвляетсяАрхивом = Запрос.Заголовки.ПолучитьПервый("content-type") == "application/zip"
пер Сообщение = новый СообщениеИнтеграции({"ЯвляетсяАрхивом":ЯвляетсяАрхивом},
Запрос.Тело)
СетьМагазинов.ОтправитьСообщениеВУзлы(Сообщение, СетьМагазинов.Схема.Узлы.ОтПартнеров)
;