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

Типы встроенного языка, порождаемые элементом проекта вида «ПроцессИнтеграции»

После того как вы добавили в проект процесс интеграции и дали ему имя, «1С:Шина» создаст несколько типов встроенного языка. В общем случае имена этих типов выглядят следующим образом:

  • имя-процесса-интеграции
  • имя-процесса-интеграции.КонтекстВызова
  • имя-процесса-интеграции.Метрики
  • имя-процесса-интеграции.Параметры
  • имя-процесса-интеграции.Сообщение
  • имя-процесса-интеграции.Схема
  • имя-процесса-интеграции.УзелПути
  • имя-процесса-интеграции.УзлыПути
  • имя-процесса-интеграции.УзлыСхемы

Например, если в проекте есть процесс интеграции «СетьМагазинов», то будут созданы следующие типы:

  • СетьМагазинов
  • СетьМагазинов.КонтекстВызова
  • СетьМагазинов.Метрики
  • СетьМагазинов.Параметры
  • СетьМагазинов.Сообщение
  • СетьМагазинов.Схема
  • СетьМагазинов.УзелПути
  • СетьМагазинов.УзлыПути
  • СетьМагазинов.УзлыСхемы

Тип «имя-процесса-интеграции»

Тип имя-процесса-интеграции доступен на сервере.

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

Этот тип не имеет конструктора и имеет единственный экземпляр, обращение к которому выполняется по имени типа:

// Запустить процесс интеграции СетьМагазинов
СетьМагазинов.Запустить()

Модуль процесса интеграции

В проекте модуль, расширяющий тип имя-процесса-интеграции, называется модулем процесса интеграции. Они исполняется на сервере.

В этом модуле вы можете обработать события всех узлов процесса интеграции.

Тип «имя-процесса-интеграции.КонтекстВызова»

Тип имя-процесса-интеграции.КонтекстВызова доступен на сервере.

Этот тип не имеет конструктора, экземпляры этого типа доступны в обработчиках событий узлов процесса интеграции в параметре Контекст. Они описывают то место, в котором вызван обработчик. Это либо узел схемы (свойство ТекущийУзел), либо маршрут из одного узла в другой (свойство ТекущийМаршрут).

Например, в узле вида МаршрутизаторПоСодержимому простейший способ отправить сообщение во все следующие узлы:

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

возврат Контекст.ТекущийУзел.СледующиеУзлы.Значения()
;

Тип «имя-процесса-интеграции.Сообщение»

Тип имя-процесса-интеграции.Сообщение доступен на сервере.

Он описывает сообщение и содержит методы для работы с параметрами сообщения, а также для получения и установки тела сообщения.

Также объекты этого типа доступны в обработчиках событий узлов процесса интеграции в параметре Сообщение. Они описывают то сообщение, которое передается по маршруту.

Важным свойством этого типа является свойство УзлыПути. Оно описывает движение сообщения внутри процесса. С его помощью, например, можно узнать, из какого узла пришло сообщение, из Источник1 или из другого:

метод ИмяИзИстории(Контекст: ПримерИнтеграции3.КонтекстВызова, 
Сообщение: ПримерИнтеграции3.Сообщение): Строка
пер Префикс = Сообщение.УзлыПути.Источник.Узел == Схема.Узлы.Источник1
? "1"
: "2"
возврат "%{Префикс}-%{Контекст.Участник.Код}"
;

Можно создать сообщение с нуля и отправить его в узлы процесса интеграции. Например, следующий метод получает запрос, в теле которого содержится тело сообщения. Создается новое сообщение и отправляется в узел вида «ПрограммныйИсточник» ОтПартнеров процесса интеграции СетьМагазинов.

метод ОтправитьСообщение(Запрос: HttpСервисЗапрос)
пер ЯвляетсяАрхивом = Запрос.Заголовки.ПолучитьПервый("content-type") == "application/zip"
пер Сообщение = новый СообщениеИнтеграции({"ЯвляетсяАрхивом":ЯвляетсяАрхивом},
Запрос.Тело)
СетьМагазинов.ОтправитьСообщениеВУзлы(Сообщение, СетьМагазинов.Схема.Узлы.ОтПартнеров)
;