- Акцент на интеграцию — быстрый старт и упрощение процессов внедрения за счет реализации методов интеграции справочников организационно-штатной структуры и контрагентов. Решение поддерживает технологии обмена данными REST API и SOAP, что позволяет интегрироваться с такими системами, как 1С, SAP ERP, CRM-системами (например, Microsoft Dynamics, Bitrix24), и прочими, при наличии API.
- Механизм «Гарантированная доставка» — контроль обмена между системами. Обеспечивает повторные попытки отправки запросов при выявлении сбоев, продолжая попытки до тех пор, пока запрос не будет успешно выполнен, или до достижения установленного лимита попыток.
- Гибкость — позволяет переопределять любые методы решения и реализовывать собственную логику. Для этого используются
virtual-методы и свойство расширения в структурахObjectExtension, позволяющее добавить индивидуальные значения. - Настраиваемость — решение предоставляет ряд параметров для настройки, что позволяет адаптировать его под конкретные требования инсталляции, включая количество попыток отправки, пакетную отправку, отладочную информацию, фиксацию входящих запросов и время «жизни» запросов.
- Полный аудит — все запросы, как исходящие, так и успешно обработанные входящие, фиксируются в соответствующих справочниках, что позволяет проводить первичный анализ без необходимости обращаться к системным логам. Кроме того, существует возможность открытия конкретных сущностей из справочника исходящих/входящих запросов для удобного просмотра.
- Отсутствие перекрытий — решение полностью совместимо с любыми инсталляциями системы Directum RX, что обеспечивает его интеграцию без конфликтов.
- Справочники «Запрос» (BaseRequest, абстрактный), «Входящий запрос» (IncRequest), «Исходящий запрос» (OutRequest), «Подключение к внешним системам» (ExternalConnection), «Метод внешней системы» (ExternalMethod), справочник для хранения "тяжелых" тел запросов (LargeBody)
- Роль «Ответственные за интеграцию» с полным доступом к справочникам модуля.
- Фоновые процесс «Интеграция. Отправка запросов» (SendingRequest), фоновый процесс «Интеграция. Очистка старых запросов» (DeleteOldRequest), асинхронный обработчик для пакетной отправки запросов (AsyncSendRequests).
Фоновый процесс «Интеграция. Отправка запросов» отбирает новые запросы, формирует пакет и запускает асинхронный обработчик. Асинхронный обработчик обрабатывает свой пакет запросов, и неотправленные и(или) недоставленные запросы отправляет повторно, если количество попыток не закончилось.
sequenceDiagram
Directum RX->>SAP: POST /SapMethodName
SAP-->>Directum RX: 503 Error
Directum RX->>SAP: Повтор (через X мин)
SAP-->>Directum RX: 200 OK
Возможна работа с несколькими сценариями:
- используются разные системы, с разными URL - например, договора отправляются в SAP, авансовые отчеты в 1С
- используется одна система, с одним URL, но вызываются разные методы - например, вы взаимодействуете с шиной для отправки как договоров, так и авансовых отчетов.
Порядок действий:
- Создать запись справочника «Подключение к внешним системам», и заполнить его данными, включая заголовки, специфичные для этого подключения. Примечание: заголовки аутентификации лучше передавать в коде, чтобы обеспечить безопасность учетных данных.
- Создать запись справочника «Метод внешней системы» по кнопке «Добавить метод» в ранее созданном справочнике, и заполнить его данными, включая заголовки, специфичные для этого метода. Примечание: этот пункт не обязателен, во всех сценариях можно использовать только справочник «Подключение к внешним системам»
- Реализовать преобразование вашей сущности в структуру и создание на основании структуры исходящего запроса.
- Пример кода можно посмотреть в файле https://github.com/SoftlineDevGroup/RequestLog/blob/main/RequestLogSamples.cs
При реализации ваших интеграционных методов, необходимо добавить в код создание записи справочника входящих запросов. Пример кода можно посмотреть в файле https://github.com/SoftlineDevGroup/RequestLog/blob/main/RequestLogSamples.cs
В решении реализована синхронизация справочников организационно-штатной структуры и контрагентов. Примеры запросов к реализованным методам интеграции в решении можно посмотреть в коллекции Postman https://github.com/SoftlineDevGroup/RequestLog/blob/main/IntegrationCore.postman_collection.json
На обложке модуля доступно задание настроек решения. Сами настройки хранятся в базе данных, в таблице Sungero_Docflow_Params.
- Добавить новый справочник, соответствия типов/видов документов – по справочнику соответствий автоматически выбирать нужную систему (или системы) для отправки документа.
- Любое изменение кода решения, и (или) перекрытие объектов решения под различные задачи.
- Решение продолжает дорабатываться, о всех проблемах и замечаниях сообщайте через Issues.
Для работы требуется установленный Directum RX версии 4.11 и выше. Адаптация под иные версии не требуется.
- Склонировать репозиторий RequestLog в папку.
- Указать в _ConfigSettings.xml DDS:
<block name="REPOSITORIES"> <repository folderName="Base" solutionType="Base" url="" /> <repository folderName="RX" solutionType="Base" url="<адрес локального репозитория>" /> <repository folderName="<Папка из п.1>" solutionType="Work" url="https://github.com/SoftlineDevGroup/RequestLog" /> </block>
Возможные варианты:
A. Fork репозитория
- Сделать fork репозитория RequestLog для своей учетной записи.
- Склонировать созданный в п. 1 репозиторий в папку.
- Указать в _ConfigSettings.xml DDS:
<block name="REPOSITORIES"> <repository folderName="Base" solutionType="Base" url="" /> <repository folderName="<Папка из п.2>" solutionType="Work" url="<Адрес репозитория gitHub учетной записи пользователя из п. 1>" /> </block>
B. Подключение на базовый слой.
Вариант не рекомендуется, так как при выходе версии решения не гарантируется обратная совместимость.
- Склонировать репозиторий RequestLog в папку.
- Указать в _ConfigSettings.xml DDS:
<block name="REPOSITORIES"> <repository folderName="Base" solutionType="Base" url="" /> <repository folderName="<Папка из п.1>" solutionType="Base" url="" /> <repository folderName="<Папка для рабочего слоя>" solutionType="Work" url="<Адрес репозитория gitHub>" /> </block>
C. Копирование репозитория в систему контроля версий.
Рекомендуемый вариант для проектов внедрения.
- В системе контроля версий с поддержкой git создать новый репозиторий.
- Склонировать репозиторий RequestLog в папку с ключом
--mirror. - Перейти в папку из п. 2.
- Импортировать клонированный репозиторий в систему контроля версий командой:
git push –mirror <Адрес репозитория из п. 1>