Сервисы интеграции
Сервисы интеграции
Для организации взаимодействия различных информационных систем можно использовать, в том числе, обмен сообщениями систем класса сервисная шина
предприятия (Enterprise Service Bus, сокращенно ESB или СШИ). Под термином "сервисная шина предприятия" понимается программное обеспечение, обеспечивающее централизованный и унифицированный событийно-ориентированный обмен сообщениями между различными информационными системами на принципах сервисно-ориентированной архитектуры.
Такой обмен сообщениями сохраняет слабую связанность взаимодействующих систем аналогично файловому обмену. Обмен сообщениями дает возможность частого и быстрого взаимодействия небольшими сообщениями. При помощи обмена сообщениями можно интегрировать функциональность систем, используя паттерн "запрос-ответ". Передаваемые сообщения, при необходимости, могут быть трансформированы без участия и уведомления отправителя и получателей. При обмене сообщениями предоставляется возможность доставить одно сообщение множеству потребителей в оригинальном или измененном виде без изменения логики работы отправителя. Работа через сообщения меняет логику взаимодействия систем, обмен становится асинхронным. В этой схеме отправитель не должен ожидать ответа на свое сообщение, а должен быть готовым в любой момент времени принять какое-либо сообщение и адекватно на него отреагировать.
Для поддержки обмена данными через сообщения в платформе "1С:Предприятие" предназначен механизм сервисов интеграции. При рассмотрении механизма будут использоваться следующие термины:
- Внешний сервис интеграции ‑ продукт класса ESB, к которому выполняется подключение системы "1С:Предприятие". "1С:Предприятие" подключается к внешнему сервису интеграции с помощью протокола AMQP (https://www.amqp.org/ [https://www.amqp.org/]). Адаптером для внешнего сервиса интеграции в объектной модели "1С:Предприятие" является объект Сервис интеграции.
- Канал ‑ логический адрес в системе обмена сообщениями. Канал предназначен для передачи сообщений определенного типа. Канал может быть:
- Входящим ‑ используется для получения сообщений от внешнего сервиса интеграции.
- Исходящим ‑ используется для отправки сообщений внешнему сервису интеграции.
- Канал не может быть двунаправленным (одновременно и входящим и исходящим).
- Сообщение ‑ это минимальный и неделимый элемент обмена. Сообщение включает в себя собственно данные (в любом поддерживаемом формате) и заголовок сообщения, который используется внешним сервисом интеграции. Сообщение имеет определенное время жизни, которое используется сервисом интеграции во время доставки сообщения.
- Сообщения помещаются в канал отправителем последовательно.
- Сообщения получаются из канала получателем последовательно. Последовательность получения сообщений из канала совпадает с последовательностью помещения сообщений в канал.
- Сообщения разных каналов обрабатываются и доставляются параллельно.
- Любые два сообщения, полученные из разных каналов в определенной последовательности, не обязательно будут обработаны в этой же последовательности, так как обработка сообщений из разных каналов может идти с разной скоростью.
- Отправляемое сообщение сохраняется в информационной базе до тех пор, пока от внешнего сервиса интеграции не будет получено подтверждение того, что сообщение им получено.
- Система "1С:Предприятие" будет выполнять попытки доставить сообщения внешнему сервису интеграции до тех пор, пока не будет получено подтверждение получения сообщения или сообщение не устареет.
- При получении сообщения от внешнего сервиса интеграции это сообщение сохраняется в информационной базе, и только после этого внешний сервис интеграции получает подтверждение о получении сообщения.
- Предварительные требования:
- Узнать адрес внешнего сервиса интеграции (одного или нескольких), который планируется использовать. Указать адреса внешних сервисов интеграции можно при внедрении прикладного решения.
- Узнать имена каналов (в каждом сервисе интеграции), которые будут использоваться в системе "1С:Предприятие".
- Порядок действий при разработке:
- Создать в конфигурации нужное количество объектов Сервис интеграции. Один объект соответствует одному внешнему сервису интеграции.
- Для каждого созданного сервиса интеграции создать список каналов, который будет использоваться конфигурацией. Корректно указать имена каналов и направления их (каналов) использования.
- Для исходящих каналов реализовать программный код, который позволит отправлять сообщения в нужный канал требуемого внешнего сервиса интеграции. В результате прикладное решение сможет отправлять данные в СШИ.
- Для каждого входящего канала реализовать обработчик, который будет срабатывать при получении события в конкретном канале конкретного сервиса интеграции. В результате прикладное решение сможет получать данные из СШИ.
- Для отладки созданного программного интерфейса, разработчику прикладного решения необходимо предоставить доступ к развернутому тестовому внешнему сервису интеграции. Тестовый внешний сервис интеграции должен предоставлять точно такие же возможности, что и реальная СШИ, которая будет использоваться в производственной системе.
- Порядок действий при внедрении:
- С помощью стандартной функции управления сервисами интеграции указать адреса используемых внешних сервисов интеграции.
- С помощью стандартной функции управления сервисами интеграции указать признаки использования сервисов интеграции (при необходимости).
При работе с сообщениями следует помнить о следующих особенностях:
Механизм сервисов интеграции "1С:Предприятия" не является альтернативной механизмам планов обмена, так как отвечает только за транспортировку сообщений, а не за формирование исходящих и интерпретацию входящих сообщений. В тоже время, механизм планов обмена может выступать в качестве источника данных для сообщений, отправляемых с помощью сервиса интеграции.
Внимание! Внешний сервис интеграции не входит в комплект поставки "1С:Предприятия" и распространяется отдельно.
Взаимодействие с внешним сервисом интеграции выполняется с гарантированной доставкой сообщения, что означает:
Общая схема использования сервиса интеграции
Для использования внешнего сервиса интеграции необходимо: