Центр управления сообщениями в Directum

> 100 000

Количество обрабатываемых сообщений за месяц

до 50%

Сокращение трудозатрат на задачи интеграции

Задача

Практически каждый проект внедрения системы DIRECTUM включает задачи, связанные с первичной миграцией данных из исторических систем и организацией информационного обмена с другими системами. Реализация таких задач может кардинально отличаться в зависимости от требований Заказчика и технических возможностей интегрируемых систем. При этом выбранный вариант реализации зачастую влияет на дальнейшее сопровождение и развитие системы.

Анализ результатов завершенных проектов подтолкнул к цели – сформировать единый подход к разработке решений для интеграции и миграции данных, который позволит сократить затраты при внедрении и сопровождении. Для достижения поставленной цели было принято решение разработать универсальный настраиваемый инструмент, который позволил бы реализовывать следующие задачи:

  • импорт данных из различных источников;
  • экспорт данных в различные источники;
  • отправка GET/POST запросов во внешние системы;
  • рассылка почтовых сообщений;
  • хранение, обработка и логирование всех входящих/исходящих пакетов;
  • создание альтернативы веб-сервисам DIRECTUM с более простой структурой сообщений и их валидацией на уровне XSD схем.

Разработанное решение получило название – Центр управления сообщениями (ЦУС).

Архитектура решения

Решение состоит из двух частей:

  • Прикладной модуль DIRECTUM для хранения и обработки сообщений.
  • Веб-сервис для приема сообщений из внешних систем.

Рисунок 1. Архитектура решения

Прикладной модуль DIRECTUM

Хранение и обработка сообщений

Все входящие и исходящие сообщения в рамках информационного обмена создаются и хранятся в справочнике Очередь сообщений. Запись справочника (Рисунок 2) содержит служебную метаинформацию, а также позволяет просматривать содержимое сообщения и журнал его обработки.

Рисунок 2. Карточка записи справочника Очередь сообщений

Для всех создаваемых записей в справочнике Очередь сообщений присваивается начальный статус «Подготовлено». Обработка каждого сообщения выполняется в зависимости от настроек его типа. Реализованы следующие способы запуска обработки:

  • из планировщика Windows;
  • через серверные события;
  • из веб-сервиса ЦУС.

В зависимости от результата выполнения обработки, статус записи справочника Очередь сообщений может принимать значения «Обработано» или «Ошибка». В случае возникновения ошибки, администратор может вручную отменить (статус «Отменено») или возобновить (статус «Подготовлено») обработку сообщения.

Рисунок 3. Жизненный цикл сообщения

Настройка обработчиков сообщений

Справочник Типы сообщений содержит настройки, отвечающие за валидацию и обработку сообщений. При настройке новых типов можно воспользоваться готовыми функциями обработки:

  • Отправка запросов: GET, POST, SOAP.
  • Отправка сообщений: E-mail, SMS, уведомлений DIRECTUM.
  • Захват сообщений с E-mail.
  • Импорт документов и справочников из внешних источников: Excel, XML, SQL-таблицы.
  • Выполнение SQL запроса.
  • Загрузка файлов: из каталога, с FTP-сервера.

Перечисленные функции обработки и их параметры хранятся в отдельном справочнике Параметры типов сообщений и могут быть автоматически перенесены в создаваемые записи справочника Типы сообщений с помощью действия - Заполнить по умолчанию. На основе готовых функций обработки разработчики могут создавать новые функции для решения различных задач, возникающих в рамках внедрения/сопровождения DIRECTUM.

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

Настройки соответствия между реквизитами объектов DIRECTUM и содержимым сообщений (параметры XML, столбцы Excel) выполняются с помощью стандартных справочников: Интегрированные системы и Настройки обмена данными с интегрированными системами.

Для отладки и выполнения разовых операций (например, загрузка исторических данных) в карточке записи справочника Типы сообщений предусмотрена возможность ручного запуска настроенного обработчика.

Для каждой записи справочника Типы сообщений можно также задать:

  • Порядок обработки. Данная настройка позволяет обрабатывать сообщения в определенной последовательности в зависимости от их типа (например, сначала сообщения с записями справочника Контрагенты, а затем сообщения с записями справочника Договоры).
  • Количество неудачных попыток обработки. При возникновении ошибки система не изменяет статус сообщения на «Ошибка» до тех пор, пока количество итераций обработки не превысит установленное значение. Это позволяет исключить временные ошибки, например, связанные с блокировкой объектов.
  • Период хранения. По истечении указанного срока выполняется автоматическая очистка обработанных записей справочника Очередь сообщений. Это позволяет решить проблемы с переполнением данных в справочнике.

Рисунок 4. Карточка записи справочника Типы сообщений

Настройка шаблонов и списков рассылки для исходящих сообщений

Справочник Сообщения позволяет настраивать шаблоны для исходящих сообщений с помощью встроенного редактора. В данном редакторе реализована возможность добавления параметров, связанных с объектами DIRECTUM (реквизиты справочников/документов, параметры задач, константы и т. д.), а также предпросмотра настроенных шаблонов в форматах HTML и XML.

Рисунок 5. Карточка записи справочника Сообщения

Для настройки списков рассылки исходящих сообщений различных типов используется справочник Подписки на сообщения. В зависимости от выбранного типа сообщения в качестве получателей могут использоваться записи справочника DIRECTUM, содержащего реквизит-адрес для отправки сообщений (например, E-mail или Телефон).

Рисунок 6. Карточка записи справочника Подписки на сообщения

Веб-сервис ЦУС

Веб-сервис архитектурно представляют собой WCF-сервис, состоящий из одного метода CreateMessage, предназначенного для добавления полученных запросов в справочник Очередь сообщений. Обработка запросов может выполняться в синхронном режиме или асинхронном с помощью отложенного запуска через планировщик Windows / серверные события.

Взаимодействие внешних систем с веб-сервисом ЦУС осуществляется путем передачи SOAP-сообщений, с использованием в качестве транспорта протокола HTTP(S). Веб-сервис является многопоточным и способен обрабатывать параллельно несколько запросов.

Описание схемы взаимодействия

Процесс обработки входящих сообщений включает следующие этапы:

  1. Валидация XSD. Веб-сервис ЦУС выполняет валидацию полученного сообщения на соответствие настроенной XSD схеме.
  2. Запуск сценария DIRECTUM. Веб-сервис ЦУС запускает сценарий DIRECTUM в SBRte процессе,  передавая полученное сообщение в качестве параметров.
  3. Валидация сообщения. Функция валидации проверяет данные в сообщении (например, на наличие записей в связанных справочниках). Данный этап опциональный и выполняется, если для типа сообщения настроена валидация.
  4. Добавление сообщения в очередь. Сценарий DIRECTUM выполняет создание новой записи справочника Очередь сообщений.
  5. Обработка сообщения. Сценарий DIRECTUM запускает обработку созданной записи справочника Очередь сообщений. Данный этап опциональный и выполняется, если в сообщении передано значение параметра SyncProcessing = «True».
  6. Передача результата. Сценарий DIRECTUM возвращает результат выполнения веб-сервису ЦУС.
  7. Отправка ответа. Веб-сервис ЦУС отправляет результат в качестве ответа на сообщение во внешнюю систему.

Рисунок 7. Схема взаимодействия

Структура сообщения

Структура сообщения представляет собой две части:

MCC_Core.xsd – статичная структура, содержащая жестко заданный набор параметров запроса и ответа, который нельзя изменять:

  • GUID. Содержит уникальный идентификатор сообщения (если идентификатор не передан, то значение формируется веб-сервисом).
  • Type. Содержит код записи справочника Типы сообщений.
  • SyncProcessing. Содержит значение, определяющее способ обработки: синхронный/асинхронный.
  • MetaData. Содержит XML со структурой, соответствующей записи справочника Типы сообщения.

MCC_Сustom.xsd – настраиваемая структура, определяющая набор параметров, которые могут содержаться внутри параметра MetaData в зависимости от передаваемого значения параметра Type.

Рисунок 8. Структура сообщения

Обработка ошибок

В случае возникновения ошибки веб-сервис ЦУС возвращает в ответе для внешней системы код состояния HTTP 500 с текстом ошибки, а также код SOAP FAULT, позволяющий установить на каком этапе она возникла:

  • 100. Ошибка валидации XSD.
  • 2xx. Ошибки работы сценария DIRECTUM.
  • 200. Ошибка проверки параметров при вызове сценария DIRECTUM.
  • 210. Ошибка добавления записи в справочник ЦУС. Очередь сообщений.
  • 220. Ошибка обработки записи ЦУС. Очередь сообщений.
  • 400. Ошибка RunTime веб-сервиса ЦУС.

Аутентификация

Веб-сервис ЦУС поддерживает следующие типы аутентификации:

  • Анонимная. Используется, если нет необходимости вести аутентификацию пользователей при обращении к веб-сервису.
  • WS Security Username. При использовании каждый вызов веб-сервиса должен сопровождаться реквизитами пользователя (логин/пароль) в заголовках SOAP-сообщения. Данный тип аутентификации требует использование протокола HTTPS.
  • Windows. Взаимодействие с веб-сервисом выполняется от имени пользователя Windows.

В зависимости от выбранного типа аутентификации все действия в DIRECTUM осуществляются:

  • От имени служебного пользователя, задаваемого в настройках Web.config, если используется Анонимная или Windows аутентификация;
  • От имени пользователя, указанного в передаваемом XML, если используется WS Security Username аутентификация.

Рисунок 9. Доступные способы аутентификации

Логирование

Логирование осуществляется с помощью библиотеки NLog (https://nlog-project.org/), которая позволяет настраивать:

  • каталог хранения лог файлов;
  • правила создания отдельных файлов лога (периодически или при достижении определенного размера);
  • формат наименования файлов;
  • содержимое лога.

Рисунок 10. Содержимое лог файла

Ключевым полем в логе является GUID, по которому можно идентифицировать пакет и проанализировать все выполненные с ним действия.

В дополнение к логированию веб-сервис ЦУС может осуществлять хранение полученных запросов и отправленных ответов в виде отдельных файлов формата XML. Данная опция настраивается в Web.config файле веб-сервиса ЦУС.

Инсталлятор

Установка и первичная настройка веб-сервиса ЦУС осуществляется через инсталлятор, разработанный с помощью набора инструментов Windows installer XML (WiX). В инсталляторе пошагово задаются параметры для добавляемого пула приложений IIS, реквизиты подключения к базе данных DIRECTUM и настройки логирования. По результатам работы инсталлятора автоматически создаются:

  • Веб-приложение IIS (Диспетчер служб IIS).
  • Приложение MCC Service (Программы и компоненты).

Результаты применения решения

Появление ЦУС поспособствовало стандартизации и унификации процесса разработки интеграционных решений в части расчета требований проектов и написания технической документации. Разработанные шаблоны оценки требований и технического проекта интеграции, а также документация по решению обеспечивают возможность быстрого обучения новых сотрудников и подключения их к решению задач интеграции и миграции данных.

На данный момент решение ЦУС уже внедрено и активно используется более чем в десятке организаций различной величины. В некоторых из них суммарное количество обрабатываемых сообщений за месяц составляет более 100 тысяч.

Простота настройки и гибкость решения помогли адаптироваться к проблеме часто изменяющихся требований и позволили значительно упростить реализацию механизмов межсистемного взаимодействия и рассылки сообщений, а также уменьшить трудозатраты по данным задачам на проектах до 50%.

У вас похожая задача?

Обсудите реализацию с экспертом Directum

Обязательное поле
Обязательное поле
Обязательное поле

Благодарим за интерес! Мы свяжемся с вами.

Комментарии (2)

Денис Архипов

А в чем преимущество этого решение от Directum Cross-system Interaction Toolset, DCI?

Денис Архипов: обновлено 27.11.2020 в 16:25
Данил Дорфман

Directum Cross-system Interaction Toolset (DCI) - узкоспециализированное решение, предназначенное в первую очередь для построения сквозных бизнес-процессов между системами Directum. В стандартную поставку DCI входят инструменты для связывания только систем Directum, а для работы с другими системами необходимо выполнять дополнительную разработку под каждую из них.

ЦУС позволяет реализовать межсистемное взаимодействие с любыми системами. Кроме того, список возможных сценариев использования значительно шире, чем в DCI.

Данил Дорфман: обновлено 27.11.2020 в 17:14
Данил Дорфман: обновлено 27.11.2020 в 17:14
Авторизуйтесь, чтобы написать комментарий