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