Войти

Использование Blob Адаптера для обмена blob объектами

Порой во время взаимодействия между системами участников появляется необходимость в передаче или получении некоторых документов. Тогда с сообщением передается вложение. И если в СМЭВ 3 используются такие методы передачи документов как MTOM (когда файл передается в двоичном формате посредством протокола SOAP) и протокол FTP (загрузка файлов в Файловое хранилище (ФХ). Что дает возможность передавать вложения как ответчику, так и поставщику. То для СМЭВ 4 используется специальный программный модуль Витрины данных, именуемый BLOB-адаптером. Данный модуль оперирует BLOB-объектами. И настраивается исключительно в контуре поставщика. Таким образом, в СМЭВ 4 пока есть возможность передавать вложения только у поставщика. Потребитель в свою очередь их запрашивает и получает от поставщика.

Так что же подразумевается под BLOB-объектами?

BLOB-объект (Binary Large Object – двоичный большой объект) представляет из себя массив двоичных данных, предназначенный для хранения бинарных неизменяемых и необработанных файлов: аудио, видео, почта, архивы, изображения, копии документов, текстовые файлы и т.д.

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

Важно учитывать, что Хранилища BLOB-объектов настраиваются на стороне поставщика.    Т.е. для работы с вложениями необходимо, чтобы у поставщика было настроено и Хранилище, и BLOB-адаптер. Обращение с подобными BLOB-объектами возможно через отдельное ПО под названием MinIO. Оно необходимо для настройки Хранилища BLOB-объектов. MinIO является популярной технологией распределенного хранения объектов. Основной задачей этого хранилища будет хранение документов с постоянной возможностью их загрузки или выгрузки. Приложение может быть установлено на любой локальной или отдельной удаленной машине.

Для обеспечения возможности получения системой Потребителя BLOB-объектов необходимо выполнение следующих условий:

  • Витрина Поставщика данных должна поддерживать тип данных «двоичный объект»;
  • в метаданных Витрины для соответствующих атрибутов Витрины Поставщика данных должен быть установлен тип данных «двоичный объект».

BLOB-адаптер предназначен для следующих задач:

  • настройка доступа в Хранилище BLOB-объектов;
  • предоставление регламентированного доступа к BLOB-объектам;
  • получение и отправка запросов на получение BLOB-объектов;
  • чтение BLOB-объектов.

Подробнее о том, как развернуть BLOB-адаптер можно узнать в статье Установка Blob-адаптера.

У BLOB-адаптера имеется основной вариант взаимодействия с BLOB-объектами. Это инициализация запросов с использованием ПОДД Агента. Доступ к считыванию BLOB-объектов производится через HTTP протокол согласно указанным параметрам в конфигурации BLOB-адаптера.

Взаимодействие через СМЭВ 4

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

  1. непосредственно сам двоичный объект;
  2. уникальная ссылка на получение двоичного объекта с Витрины Поставщика данных.

Процесс обработки запроса на получение BLOB-объекта через Адаптер ПОДД (Рисунок 1):

  1. Запрос на получение данных направляется из Агента ПОДД потребителя в СМЭВ 4 (в Ядро ПОДД);
  2. Из Ядра ПОДД запрос передается через Агент ПОДД поставщика в Витрину;
  3. Витрина данных осуществляет обработку запроса и возвращает ответ, в котором содержится ссылка на вложение;
  4. Ответ передается в СМЭВ 4, после чего доставляется в Агент ПОДД потребителя;
  5. Потребитель вновь направляет запрос, но на этот раз на получение вложения по ссылке, которую получил ранее в ответе;
  6. Запрос вновь проходит через Ядро ПОДД и передается Витрине данных;
  7. Адаптер ПОДД поставщика считывает данные полученные от Витрины и отправляет ответ в Kafka, на стороне ПОДД. В случае, если в теле запроса содержится ссылка на BLOB-объект Kafka (на стороне ПОДД), отправляет запрос в BLOB-адаптер на получение этого файла. BLOB-адаптер, считывает ссылку на BLOB-объект и обращается в Хранилище BLOB-объектов на стороне ведомства. После получения BLOB-объекта, возвращает его в ПОДД.

 Схема обмена blob-объектами через СМЭВ4.png

Рисунок 1 – Схема обмена blob-объектами через СМЭВ4.

Авторизуйтесь, чтобы оставить комментарий к статье