Skip to content

SoftlineDevGroup/RequestLog

Repository files navigation

Решение «Журнал запросов»

Уникальные особенности решения

  • Акцент на интеграцию — быстрый старт и упрощение процессов внедрения за счет реализации методов интеграции справочников организационно-штатной структуры и контрагентов. Решение поддерживает технологии обмена данными 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
Loading

Как работать с исходящими запросами

Возможна работа с несколькими сценариями:

  • используются разные системы, с разными 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 и выше. Адаптация под иные версии не требуется.

Установка для ознакомления

  1. Склонировать репозиторий RequestLog в папку.
  2. Указать в _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 репозитория

  1. Сделать fork репозитория RequestLog для своей учетной записи.
  2. Склонировать созданный в п. 1 репозиторий в папку.
  3. Указать в _ConfigSettings.xml DDS:
    <block name="REPOSITORIES">
      <repository folderName="Base" solutionType="Base" url="" />
      <repository folderName="<Папка из п.2>" solutionType="Work"
        url="<Адрес репозитория gitHub учетной записи пользователя из п. 1>" />
    </block>

B. Подключение на базовый слой.

Вариант не рекомендуется, так как при выходе версии решения не гарантируется обратная совместимость.

  1. Склонировать репозиторий RequestLog в папку.
  2. Указать в _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. Копирование репозитория в систему контроля версий.

Рекомендуемый вариант для проектов внедрения.

  1. В системе контроля версий с поддержкой git создать новый репозиторий.
  2. Склонировать репозиторий RequestLog в папку с ключом --mirror.
  3. Перейти в папку из п. 2.
  4. Импортировать клонированный репозиторий в систему контроля версий командой:
    git push –mirror <Адрес репозитория из п. 1>

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages