Инструкция Max PI
Открытие IDE
Структура проекта
Разработка и отладка
Сохранение изменений
Публикация изменений
Входные интерфейсы
Выходные интерфейсы
Типы входных интерфейсов
Типы выходных интерфейсов
Типы обработки
Публикация изменений входного интерфейса
Публикация изменений выходного интерфейса
Развёртывание обработчика
Интерфейс чата
Формат сообщений
Генерация кода
Дополнительные возможности
SSH
Portrainer
Добавление нового шаблона обработки
Редактирование шаблона обработки
Удаление шаблона обработки
Добавление новой системы
Редактирование системы
Удаление системы
Обзор интеграций
Глубокий анализ сообщений
Группировка для удобства
Детализация сообщений
Повторная обработка
Фильтрация: точный поиск
Группировка: анализ по категориям
Статусы сообщений:
Возможные ошибки:
Дополнительная информация
Краткое описание интеграционной шины, ее назначение и возможности
Интеграционная шина – это программное решение, созданное для упрощения обмена данными между различными информационными системами. Она выступает в роли центрального хаба, принимая, обрабатывая и перенаправляя информацию в соответствии с заданными правилами.

Назначение:

Главная цель интеграционной шины – избавить вас от необходимости создавать индивидуальные интеграции для каждой пары систем. Вместо этого, все системы "подключаются" к шине, а она берет на себя ответственность за маршрутизацию и преобразование данных.

Возможности:

Унификация форматов данных: Шина преобразует данные из формата, используемого исходной системой, в формат, понятный целевой системе.
Маршрутизация сообщений: На основе настроек входных и выходных интерфейсов, шина определяет, куда нужно направить полученную информацию.
Обработка данных: Шина может не просто пересылать информацию, но и выполнять ее обработку с помощью Python-скриптов.
Асинхронная обработка: Шина способна обрабатывать запросы асинхронно, что повышает производительность и отказоустойчивость системы.
Мониторинг: Встроенная система мониторинга позволяет отслеживать работу интеграционных интерфейсов и анализировать сообщения.
Разработка и развертывание: Веб-интерфейс позволяет создавать, настраивать и публиковать новые интеграционные интерфейсы без необходимости глубоких знаний программирования.
Поддержка Docker: Шина развертывается с помощью Docker Compose, что упрощает ее установку и настройку на сервере.

Преимущества:

Упрощение интеграции: Сокращение времени и затрат на интеграцию различных систем.
Повышение гибкости: Легкое добавление новых систем и изменение интеграционных правил.
Централизованное управление: Удобное управление всеми интеграционными процессами из единого веб-интерфейса.
Повышенная надежность: Асинхронная обработка и механизмы повторных попыток повышают отказоустойчивость системы.
Введение
Интеграционная шина состоит из следующих ключевых компонентов:

1. Входные интерфейсы:

●Служат точками входа для данных, поступающих из различных систем.
●Имеют уникальный идентификатор (GUID) и буквенный тег для удобной адресации.
●Поддерживают два типа запросов: асинхронный (Request) и синхронный с ответом (RequestWithResponse).
●Могут быть настроены на ожидание ответа в течение определенного времени (ResponseTimeoutSeconds).
●Связываются с одной или несколькими "системами" для удобной классификации.

2. Выходные интерфейсы:

●Определяют, как обрабатывать данные, полученные через входные интерфейсы, и куда их направить.
●Так же имеют уникальный идентификатор (GUID) и буквенный тег.
●Поддерживают различные типы обработки данных (Python-скрипт, без обработки) и вывода (добавление в очередь, без действия).
●Могут быть настроены на выполнение нескольких параллельных потоков обработки (ParallelTasks) и повторные попытки в случае ошибок (ProcessingTries, ProcessingTriesPauseSeconds).
●Привязываются к серверу обработки, на котором будет выполняться обработчик.
●Связываются с одной или несколькими "системами".
●Используют шаблон обработки, определяющий среду выполнения (Docker-образ) для обработчика.

3. Серверы обработки:

●Физические или виртуальные серверы, на которых запускаются обработчики, связанные с выходными интерфейсами.
●Хранят настройки доступа (Host, Username, SshPassword) и параметры запуска обработчиков (AbsoluteScriptPath, PortrainerEnabled, PortrainerPort, RemoteWsPort).
●Могут быть локальными (LocalServer) или удалёнными.
●Могут быть интегрированы с Portrainer - инструментом для управления Docker-контейнерами.

4. Системы:

●Логические сущности, представляющие различные информационные системы, взаимодействующие с шиной.
●Используются для классификации входных и выходных интерфейсов, облегчая управление интеграциями.

5. Шаблоны обработки:

●Определяют среду выполнения для обработчиков, связанных с выходными интерфейсами.
●Хранят Dockerfile, который используется для создания Docker-образа с необходимыми зависимостями.

6. База данных (PostgreSQL):

●Хранит все настройки шины, информацию об интеграционных интерфейсах, сообщениях, пользователях и статистике.

7. Веб-интерфейс:

●Предоставляет пользователям доступ к функционалу шины: мониторинг, разработка, настройки, управление пользователями.
Описание основных компонентов системы
Для кого: Данная инструкция предназначена для системных администраторов и DevOps специалистов, которые будут заниматься установкой и настройкой интеграционной шины на сервере.

1. Скачайте и установите дистрибутив

  1. Пройдите по ссылке: https://disk.yandex.ru/d/Ri2VhmwSYT7Nww
  2. Скачайте и установите дистрибутив - distr20112024.tgz

2. Настройка конфигурации

  1. Откройте файл appsettings.json в текстовом редакторе.
  2. Найдите строку "AppDb":
"Host=postgres;
Database=pi;Username=pipguser;
Password=PG_PASSWD"
  1. Замените PG_PASSWD на пароль, который вы будете использовать для подключения к базе данных PostgreSQL.
  2. Сохраните изменения в файле appsettings.json.

3. Настройка Docker Compose

  1. Откройте файл docker-compose.yml в текстовом редакторе.
  2. **Найдите секцию, описывающую контейнер postgres, и внутри нее найдите строку:
  • POSTGRES_PASSWORD=PG_PASSWD
  1. Замените PG_PASSWD на ваш пароль для PostgreSQL.
  2. В той же секции, найдите строку - "5432:5432" и измените ее на - "127.0.0.1:5432:5432", чтобы ограничить доступ к базе данных только с локальной машины.
  3. Найдите секцию, описывающую контейнер pgadmin, и внутри нее найдите строку:
  • PGADMIN_DEFAULT_PASSWORD: "PG_ADMIN_PASSWD"
  1. Замените PG_ADMIN_PASSWD на пароль, который вы будете использовать для доступа к pgAdmin.
  2. В той же секции, найдите строку - "1080:80" и измените ее на - "127.0.0.1:1080:80", чтобы ограничить доступ к pgAdmin только с локальной машины.
  3. Сохраните изменения в docker-compose.yml.

4. Копирование сертификатов

  1. Скопируйте ваши сертификаты cert.crt и cert.key в директорию с установочными файлами.

5. Запуск Docker

  1. Откройте терминал или командную строку.
  2. Перейдите в директорию с установочными файлами.
  3. Выполните команду docker-compose up -d для запуска всех необходимых контейнеров. Docker Compose — это инструмент, который позволяет вам определять и управлять многоконтейнерными приложениями Docker. Файл docker-compose.yml описывает все сервисы, необходимые для работы вашего приложения (в данном случае, базу данных PostgreSQL, pgAdmin, nginx и саму интеграционную шину). Команда docker-compose up -d запускает эти сервисы в фоновом режиме.

6. Регистрация пользователя

  1. Откройте веб-браузер и перейдите по адресу https://[IP-адрес сервера] .
  2. Нажмите на ссылку "Регистрация" и создайте нового пользователя.
  3. Первый зарегистрированный пользователь автоматически получит права администратора.

7. Добавление сервера обработки

  1. Войдите в систему как администратор.
  2. Перейдите в раздел "Настройки" -> "Серверы обработки".
  3. Нажмите кнопку "Добавить сервер обработки" и заполните необходимые поля.
  4. Сохраните изменения.

8. Дальнейшая настройка

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

Дополнительные замечания

●Убедитесь, что у вас установлен Docker и docker-compose.
●В процессе установки может потребоваться настроить файрвол для разрешения входящих соединений на порты, указанные в docker-compose.yml.
●Для получения подробной информации о настройке и использовании интеграционной шины обратитесь к документации разработчика.

Демонстрация установки ПО производится нашим техническим специалистом:
ФИО: Коваленко Станислав Сергеевич
Телефон: 8 927 296 54 43

Показ серверной части ПО (исходного кода) производится нашим техническим специалистом:
ФИО: Коваленко Станислав Сергеевич
Телефон: 8 927 296 54 43
1. Инструкция по установке интеграционной шины
Описание ролей пользователей и их прав доступа
В системе интеграционной шины предусмотрены следующие роли:

Администратор:
oИмеет полный доступ ко всем разделам системы:
Мониторинг: Просмотр сообщений, анализ ошибок, повторная отправка сообщений.
Разработка: Создание, редактирование, удаление и публикация входных и выходных интерфейсов.
Настройки: Управление серверами обработки, системами и шаблонами обработки.
Пользователи: Добавление, редактирование, удаление и управление правами доступа пользователей.
oОтвечает за настройку и администрирование всей системы.

Разработчик:
oМониторинг: Просмотр сообщений, анализ ошибок.
oРазработка: Создание, редактирование, удаление и публикация входных и выходных интерфейсов (но только в рамках систем, к которым у него есть доступ).
oНастройки: Просмотр серверов обработки, систем и шаблонов обработки.
oПользователи: Просмотр списка пользователей.

Наблюдатель:
oМониторинг: Просмотр сообщений, анализ ошибок (но только в рамках систем, к которым у него есть доступ).
oРазработка: Просмотр входных и выходных интерфейсов.
oНастройки: Просмотр серверов обработки, систем и шаблонов обработки.
oПользователи: Просмотр списка пользователей.

Распределение прав доступа по системам:
Для каждой системы, зарегистрированной в интеграционной шине, администратор может назначать пользователям различные права доступа:

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

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

Важно:
●Администратор имеет полный доступ ко всем системам и может управлять правами доступа других пользователей.
●Первый зарегистрированный пользователь автоматически получает роль администратора.
●Рекомендуется создавать отдельные учетные записи для каждого пользователя, работающего с системой.
●Для обеспечения безопасности необходимо использовать надежные пароли и хранить их в секрете.
2. Доступ к системе
Описание раздела Мониторинг
Раздел "Мониторинг" — это центр управления интеграционными процессами. Он предоставляет все необходимые инструменты для наблюдения за работой интеграционной шины, анализа сообщений и оперативного выявления проблем.

Обзор интеграций

На главной странице "Мониторинг" вы увидите набор интерактивных плиток, отображающих ключевые показатели работы шины. Они показывают общее количество сообщений, прошедших через шину, количество сообщений, обработанных с ошибками, число активных интеграций, состояние серверов обработки и другие важные данные. Каждая плитка является ссылкой на соответствующий раздел "Мониторинга", где вы можете получить более детальную информацию.

Глубокий анализ сообщений

В разделе "Сообщения" представлен расширенный журнал всех входящих запросов (InputData). Каждая строка журнала содержит информацию о времени получения сообщения, используемых входном и выходных интерфейсах, IP-адресе отправителя, типе запроса, размере запроса и ответа, адресе запроса, серверах обработки, времени обработки, присвоенных тэгах, результате обработки и другой релевантной информации.
Для удобства анализа журнал сообщений оснащен мощной системой фильтров. Вы можете отобрать сообщения, соответствующие определенным входным или выходным интерфейсам, IP-адресу отправителя, типу запроса, результату обработки (успешно/сбой), времени обработки, наличию определенных тэгов, содержимому URL запроса и другим критериям.

Группировка для удобства

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

Детализация сообщений

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

Повторная обработка

Если обработка сообщения завершилась с ошибкой, вы можете отправить его на повторную обработку напрямую из раздела "Мониторинг". Это позволяет исправить ситуацию без необходимости вмешательства в исходную систему, отправившую сообщение.
Раздел "Мониторинг" - это ваш надежный помощник в обеспечении бесперебойной работы интеграционных процессов. Он дает вам полный контроль над интеграционной шиной, позволяя оперативно реагировать на проблемы и принимать необходимые меры
3. Мониторинг
Инструкция по использованию фильтров и группировки для анализа сообщений
Раздел "Мониторинг -> Сообщения" предоставляет мощную систему фильтров и группировки, которая поможет вам быстро находить нужные сообщения и анализировать их по различным параметрам.

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

Доступные фильтры:
Входные системы: Выберите одну или несколько систем, от которых были получены сообщения.
Входной интерфейс: Введите название или буквенный идентификатор входного интерфейса.
Выходные системы: Выберите одну или несколько систем, в которые были отправлены сообщения.
Выходной интерфейс: Введите название или буквенный идентификатор выходного интерфейса.
IP отправителя: Введите IP-адрес отправителя сообщения.
Тип запроса: Выберите один или несколько HTTP-методов (GET, POST, PUT, DELETE и т.д.).
Длина запроса: Введите размер запроса в байтах.
Длина ответа: Введите размер ответа в байтах.
Адрес запроса: Введите часть URL адреса запроса.
Серверы: Выберите один или несколько серверов обработки.
Время, ms: Введите значение или диапазон времени обработки (например, >1000 для сообщений, обработанных более 1 секунды).
Тэги: Введите один или несколько тегов, которые были присвоены сообщениям.
Результат: Выберите "Сбой" или "Успешно", чтобы отфильтровать сообщения по результату обработки.

Применение фильтров:

●После ввода значений в поля фильтров нажмите Enter или кликните вне поля ввода, чтобы применить фильтры.
●Вы можете использовать несколько фильтров одновременно.
●Чтобы сбросить фильтры, очистите поля ввода и нажмите Enter.

Группировка: анализ по категориям

Группировка позволяет объединить сообщения по определенным параметрам, что упрощает анализ больших объемов данных.

Доступные варианты группировки:

Без группировки: Все сообщения отображаются в едином списке.
Время получения (час/день): Сообщения группируются по часу или дню получения.
Входной интерфейс: Сообщения группируются по входным интерфейсам.
Выходной интерфейс: Сообщения группируются по выходным интерфейсам.
IP отправителя: Сообщения группируются по IP-адресам отправителей.
Сервер обработки: Сообщения группируются по серверам обработки.
Время обработки: Сообщения группируются по диапазонам времени обработки (например, 0-100 мс, 100-500 мс, 500-1000 мс и т.д.).
Результат: Сообщения группируются по результату обработки (успешно/сбой).

Выбор группировки:

●Нажмите кнопку "Группы" над таблицей "Сообщения".
●Выберите нужный вариант группировки из списка.
●Таблица "Сообщения" будет обновлена, отображая сгруппированные данные.
●Вы можете выбрать конкретную группу, кликнув по ней. В таблице "Сообщения" будут отображены только сообщения, belonging to этой группы.

Комбинация фильтров и группировки:

●Вы можете использовать фильтры и группировку одновременно для более точного анализа данных.
●Например, вы можете сгруппировать сообщения по выходному интерфейсу, а затем отфильтровать их по результату обработки, чтобы увидеть, какие сообщения, отправленные на определенный интерфейс, были обработаны с ошибкой.

Фильтры и группировка помогут вам эффективно анализировать большие объемы данных в журнале сообщений, выявлять проблемные интеграции и принимать необходимые меры для их исправления.
Пояснение статусов сообщений и их возможных ошибок
В разделе "Мониторинг" каждое сообщение в журнале имеет свой статус, отражающий этап обработки и ее результат. Понимание этих статусов поможет вам быстро оценить ситуацию и принять необходимые меры.

Статусы сообщений:

Выполняется: Сообщение находится в процессе обработки.
Успешно: Обработка сообщения завершена без ошибок.
Сбой: При обработке сообщения возникла ошибка.

Возможные ошибки:

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

Дополнительная информация

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

Код ответа обработчика: HTTP-код ответа, возвращенный Python-скриптом обработчика.
Код ответа исходящего запроса: HTTP-код ответа, полученный от целевой системы при попытке отправить обработанные данные.

Анализируя статусы сообщений и возможные ошибки, вы можете эффективно контролировать работу интеграционной шины и оперативно реагировать на возникающие проблемы.
Инструкция по повторной отправке сообщений
В процессе работы интеграционной шины, некоторые сообщения могут столкнуться с ошибками обработки. Причины могут быть разными – временные сбои в целевой системе, некорректные данные в запросе или ошибки в коде обработчика.
Раздел "Мониторинг" позволяет вам не только отслеживать такие ситуации, но и повторно отправить сообщение на обработку, если проблема уже устранена.

Для этого:
  1. Откройте раздел "Мониторинг -> Сообщения".
  2. Найдите сообщение, которое завершилось с ошибкой (статус "Сбой").
  3. Нажмите на кнопку с иконкой "стрелки по кругу" в строке сообщения.
  4. Подтвердите повторную отправку во всплывающем окне.

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

Концепция "Вход-Выход":

Работа интеграционной шины строится на концепции "Вход-Выход". Входные интерфейсы отвечают за прием информации из внешних систем, а выходные интерфейсы определяют, как и куда перенаправлять полученные данные.

Создание входного интерфейса:
Для начала работы создайте входной интерфейс, который будет принимать данные от определенной системы. Вы можете задать ему имя, буквенно-числовой идентификатор (tag), тип (асинхронный запрос или синхронный запрос с ответом) и время ожидания ответа (для синхронных запросов). Каждый входной интерфейс имеет уникальный URL, который вы можете использовать для отправки данных на шину.

Создание выходного интерфейса:
После создания входного интерфейса, добавьте к нему один или несколько выходных интерфейсов. Каждый выходной интерфейс определяет, что делать с данными, полученными от входного интерфейса. Вы можете выбрать тип обработки (без обработки, Python-скрипт), тип вывода (ничего не делать, положить в очередь и ждать) и другие параметры, такие как количество потоков для обработки, число попыток обработки и пауза между попытками.

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

Публикация и развёртывание:
После настройки входного и выходных интерфейсов, опубликуйте изменения. Шина автоматически развернет обработчики на выбранном сервере обработки, и ваш интеграционный сценарий будет готов к работе.

Встроенный IDE:
Для разработки обработчиков на Python вы можете использовать встроенный IDE, доступный прямо из веб-интерфейса. IDE поддерживает подсветку синтаксиса, автодополнение и другие удобные функции для написания кода.

Помощь генеративной модели:
Шина интегрирована с генеративной моделью, которая поможет вам в написании кода обработчиков. Просто опишите, что должен делать обработчик, и модель сгенерирует соответствующий код на Python.
Раздел "Разработка" предоставляет интуитивно понятный интерфейс для создания гибких и эффективных интеграционных сценариев любой сложности.
4. Разработка интеграций
Инструкция по созданию входных и выходных интерфейсов
В разделе "Разработка" веб-интерфейса вы можете создавать и настраивать входные и выходные интерфейсы для интеграции различных систем. Каждый интерфейс представляет собой точку входа или выхода для данных, проходящих через интеграционную шину.

Входные интерфейсы

Входные интерфейсы определяют способ, которым внешние системы могут отправлять данные в шину. Для создания нового входного интерфейса нажмите кнопку "Создать входной интерфейс".
Основные параметры:
Наименование: Человекочитаемое название интерфейса.
Буквенно-числовой идентификатор: Уникальный идентификатор (tag), используемый для формирования URL адреса интеграции.
Тип входного интерфейса:
oАсинхронный запрос: Внешняя система отправляет данные без ожидания ответа.
oСинхронный запрос с ответом: Внешняя система отправляет запрос и ожидает ответа от шины.
Сколько ждать ответ (сек): Время ожидания ответа для синхронного запроса.
Интеграционные системы: Выбор систем, к которым относится данный интерфейс.
URL интеграции: Автоматически формируется на основе ID и Tag.
Сохранение: Для сохранения изменений нажмите кнопку "Сохранить".

Выходные интерфейсы

Выходные интерфейсы определяют, как данные, обработанные шиной, будут отправлены во внешние системы. Для создания нового выходного интерфейса нажмите кнопку "Создать выходной интерфейс" в таблице "Выходные интерфейсы".
Основные параметры:
Наименование: Человекочитаемое название интерфейса.
Буквенно-числовой идентификатор: Уникальный идентификатор (tag).
Тип обработки:
oБез обработки: Данные пересылаются без изменений.
oPython-скрипт: Данные обрабатываются Python-скриптом перед отправкой.
Тип вывода:
oНичего не делать: Данные не отправляются.
oПоложить в очередь и ждать, пока заберут: Данные помещаются в очередь и ожидают обработки.
Потоков для обработки: Количество параллельных потоков для обработки данных.
Сколько предпринять попыток обработки: Количество попыток обработки в случае ошибки.
Пауза между попытками (сек): Время ожидания между попытками обработки.
Сервер обработки: Выбор сервера, на котором будет выполняться обработка.
Шаблон обработки: Выбор шаблона, определяющего окружение для выполнения Python-скрипта.
Интеграционные системы: Выбор систем, к которым относится данный интерфейс.
Сохранение: Для сохранения изменений нажмите кнопку "Сохранить".
Публикация изменений: Для публикации изменений, требующих перезапуска контейнера обработчика, нажмите кнопку "Применить изменения".
Пересоздание контейнера: Для принудительного перезапуска контейнера обработчика нажмите кнопку "Пересоздать контейнер".
Пояснение типов входных и выходных интерфейсов, а также типов обработки
Интеграционная шина поддерживает различные типы входных и выходных интерфейсов, а также предоставляет гибкие возможности для обработки данных.

Типы входных интерфейсов

Асинхронный запрос (Request): Внешняя система отправляет запрос к шине, не ожидая ответа. Этот тип подходит для сценариев, где не требуется немедленное подтверждение доставки данных. Например, отправка логов или уведомлений.
Синхронный запрос с ответом (RequestWithResponse): Внешняя система отправляет запрос и ожидает ответа от шины. Данный тип используется, когда необходима обратная связь, например, для получения результата обработки данных или подтверждения успешного выполнения операции.

Типы выходных интерфейсов

Ничего не делать (None): Этот тип используется, если обработанные данные не нужно никуда отправлять. Например, если задача шины заключается только в валидации данных.
Положить в очередь и ждать, пока заберут (AddToQueue):Обработанные данные помещаются в очередь. В дальнейшем они могут быть получены внешней системой, подписанной на данную очередь. Этот тип применяется для асинхронного взаимодействия между системами.

Типы обработки

Без обработки (None): Данные пересылаются во внешнюю систему без каких-либо изменений.
Python-скрипт (Python): Предоставляет возможность обрабатывать данные с помощью Python-скрипта. Вы можете использовать встроенный IDE для написания и отладки скрипта. Python-скрипты позволяют выполнять преобразования данных, выполнять расчеты, взаимодействовать с другими системами и т.д.
Привязка интеграционных интерфейсов к системам
Интеграционные интерфейсы, как входные, так и выходные, могут быть привязаны к одной или нескольким интеграционным системам. Это позволяет группировать интерфейсы по их принадлежности к конкретной системе и упрощает фильтрацию и анализ сообщений в разделе "Мониторинг".
Для привязки интерфейса к системе необходимо выполнить следующие шаги:

1. Открытие редактора интерфейса.
Откройте редактор интерфейса, который вы хотите привязать к системе. Это можно сделать в разделе "Разработка", выбрав нужный входной или выходной интерфейс и нажав кнопку "Редактировать".

2. Выбор интеграционных систем.
В редакторе интерфейса найдите поле "Интеграционные системы". В этом поле вы увидите список доступных интеграционных систем.

3. Добавление системы.
Выберите из списка системы, к которым вы хотите привязать интерфейс. Для выбора нескольких систем используйте множественный выбор.
Если нужной системы нет в списке, вы можете добавить ее, выбрав опцию "Добавить новую интеграционную систему". Введите название новой системы и нажмите Enter.

4. Сохранение изменений.
После выбора всех необходимых систем нажмите кнопку "Сохранить" в редакторе интерфейса.
Важно: Привязка интерфейса к системе не влияет на его функциональность. Это дополнительная информация, используемая для классификации и анализа.
Публикация изменений и развёртывание обработчиков
В процессе разработки интеграционного интерфейса могут быть внесены изменения в входной или выходной интерфейсы, а также в сам код обработчика. Для того чтобы эти изменения вступили в силу, необходимо выполнить процедуру публикации изменений и развёртывания обработчика.

Публикация изменений входного интерфейса

Изменения, внесённые в параметры входного интерфейса, сохраняются автоматически при нажатии кнопки "Сохранить" в окне редактора входного интерфейса. После этого URL адрес интеграции изменится, если вы меняли тег.

Публикация изменений выходного интерфейса

Аналогично входному интерфейсу, изменения параметров выходного интерфейса (название, тип обработки, тип вывода, количество потоков, количество попыток обработки, пауза, сервер обработки, шаблон обработки, интеграционные системы) сохраняются автоматически при нажатии кнопки "Сохранить" в окне редактора.
Важно: Простое сохранение изменений не приводит к автоматическому развёртыванию изменённого обработчика.

Развёртывание обработчика

Развёртывание обработчика – это процесс создания и запуска Docker-контейнера, в котором будет выполняться код обработчика. Для развёртывания обработчика необходимо нажать кнопку "Применить изменения" напротив соответствующего выходного интерфейса в таблице выходных интерфейсов.

Индикация процесса:
●Наличие кнопки "Применить изменения" свидетельствует о том, что изменения, внесённые в обработчик, ещё не развёрнуты.
●Во время развёртывания кнопка "Применить изменения" заменяется на иконку "Часы", что обозначает активный процесс развёртывания.
●После успешного развёртывания иконка "Часы" исчезает, а в столбце "Дата публикации" отображается время последнего развёртывания.

Особенности:
●Развёртывание обработчика может занять некоторое время, в зависимости от сложности кода и скорости сервера обработки.
●Если развёртывание завершается с ошибкой, то в логе обработчика (доступен в разделе "Мониторинг") будет отображена соответствующая информация.
●Для принудительного пересоздания Docker-контейнера с обработчиком можно воспользоваться кнопкой "Пересоздать контейнер". Эта операция может быть полезна в случае возникновения проблем с работой обработчика.
Разработка обработчиков с помощью встроенного IDE
Для разработки Python-обработчиков, интеграционная шина предоставляет встроенную среду разработки (IDE), основанную на JupyterLab. Доступ к IDE осуществляется непосредственно из веб-интерфейса шины, что исключает необходимость установки и настройки дополнительных инструментов на вашем локальном компьютере.

Открытие IDE

Для открытия IDE, перейдите в раздел "Разработка" и выберите интеграционный интерфейс, для которого требуется создать обработчик. В таблице выходных интерфейсов, напротив нужного обработчика, нажмите кнопку с иконкой </>.
Система автоматически проверит наличие JupyterLab на сервере обработки, привязанном к выбранному выходному интерфейсу. При необходимости, JupyterLab будет установлен и запущен. После завершения процесса подготовки, откроется новая вкладка браузера с запущенной IDE.

Структура проекта

Внутри IDE, вы увидите структуру файлов проекта, соответствующую файловой системе контейнера Docker, в котором запущен обработчик.
Ключевые файлы:
process.py: Основной файл обработчика, содержащий Python-код для обработки данных.
process.ipynb: Jupyter Notebook, альтернативный способ редактирования кода обработчика.
autoexec.py: Файл, который выполняется при запуске контейнера Docker. Может использоваться для инициализации дополнительных параметров или запуска фоновых процессов.
autoexec.ipynb: Jupyter Notebook, альтернативный способ редактирования кода autoexec.py.
maxpi.py: Общий файл с вспомогательными функциями, доступными для всех обработчиков.

Разработка и отладка

В IDE доступны стандартные инструменты JupyterLab для разработки и отладки Python-кода, такие как:
●Редактор кода с подсветкой синтаксиса.
●Интерактивный интерпретатор Python.
●Возможность запуска кода по шагам.
●Точки останова для отладки.

Сохранение изменений

После внесения изменений в код обработчика, не забудьте сохранить их, нажав кнопку "Сохранить" в IDE.

Публикация изменений

Для того, чтобы изменения в коде обработчика вступили в силу, необходимо опубликовать их на сервере обработки. Для этого вернитесь в веб-интерфейс шины и нажмите кнопку "Применить изменения" напротив соответствующего выходного интерфейса.
Система автоматически преобразует Jupyter Notebook (если вы использовали его) в Python-скрипт, скопирует файлы обработчика на сервер и перезапустит контейнер Docker.
Помощь генеративной модели: ускорение разработки обработчиков
В процессе создания выходного интерфейса, пользователю предоставляется возможность ускорить написание кода обработчика, используя "Помощь генеративной модели". Данный функционал, основанный на искусственном интеллекте, позволяет получать варианты кода, а также задавать уточняющие вопросы по структуре и логике обработчика.

Интерфейс чата

Взаимодействие с генеративной моделью осуществляется через интерфейс чата, доступный в редакторе выходного интерфейса. Чат отображает историю переписки пользователя с моделью, где каждое сообщение четко идентифицировано по роли ("user" или "model").

Формат сообщений

Пользователь может вводить текст запроса в свободном формате, однако для получения наиболее релевантных ответов рекомендуется формулировать запросы в виде конкретных вопросов или задач. Например, "Как получить значение заголовка 'Content-Type' из входного запроса?".

Генерация кода

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

Дополнительные возможности

Подсветка синтаксиса: Для удобства восприятия сгенерированный код отображается с подсветкой синтаксиса.
Копирование кода: Пользователь может скопировать сгенерированный код в буфер обмена для дальнейшего использования.
Удаление сообщений: Пользователь может удалять ненужные сообщения из истории чата.
Важно: Генеративная модель, хоть и способна значительно упростить разработку, не гарантирует абсолютно корректный и оптимизированный код. Пользователь несет ответственность за проверку, доработку и тестирование сгенерированного кода перед его использованием.
Раздел "Настройки": управление инфраструктурой интеграции
Раздел "Настройки" предоставляет инструменты для управления ключевыми элементами инфраструктуры, обеспечивающими функционирование интеграционной шины.

Серверы обработки: Здесь осуществляется конфигурирование серверов, на которых выполняются обработчики для выходных интерфейсов. Управление серверами включает в себя настройку параметров подключения (SSH, локальный/удалённый сервер), активацию/деактивацию Portrainer, установку пути к директории хранения скриптов обработчиков.

Системы: В этом разделе производится управление интеграционными системами. Вы можете добавлять, редактировать и удалять системы, к которым впоследствии будут привязаны ваши входные и выходные интерфейсы.

Шаблоны обработки: Здесь вы можете создавать и настраивать шаблоны, определяющие среду выполнения для обработчиков. Шаблоны описывают Dockerfile, который будет использоваться для создания Docker-контейнера, в котором будет запускаться Python-скрипт обработчика.
Более подробная информация о настройке каждого элемента представлена в соответствующих разделах инструкции.
5. Настройки
Управление серверами обработки
Серверы обработки являются ключевым компонентом интеграционной шины, отвечающим за выполнение Python-скриптов для обработки данных. Для управления серверами предназначен раздел "Серверы обработки" в меню "Настройки".

Добавление сервера обработки:
Чтобы добавить новый сервер обработки, нажмите кнопку "Добавить сервер обработки". Откроется модальное окно с формой для ввода параметров сервера.
Обязательные параметры:
GUID: Уникальный идентификатор сервера, генерируется автоматически.
Название: Наименование сервера, используемое для отображения в интерфейсе.
Абсолютный путь к директории: Полный путь к директории на сервере, где будут храниться файлы обработчиков.
Хост: Имя хоста или IP-адрес сервера.
Имя пользователя: Имя пользователя для доступа к серверу по SSH.
Пароль SSH: Пароль для доступа к серверу по SSH.
Порт для связи: Порт, используемый для связи между микросервисами и оркестратором на удаленном сервере.
Дополнительные параметры:
Локальный сервер: Если установлен флажок, SSH-подключение не используется, а доступ к Docker осуществляется через локальный сокет.
Активен Portrainer: Флажок, определяющий, будет ли запущен Portrainer для управления Docker-контейнерами на сервере.
Порт Portrainer: Порт, на котором будет доступен веб-интерфейс Portrainer.
Пароль Portrainer: Пароль администратора для доступа к Portrainer.
Редактирование сервера обработки:
Для редактирования существующего сервера найдите его в таблице и нажмите кнопку с иконкой карандаша. Откроется модальное окно с формой, содержащей текущие параметры сервера. Внесите необходимые изменения и нажмите кнопку "Сохранить".
Удаление сервера обработки:
Для удаления сервера найдите его в таблице и нажмите кнопку с иконкой корзины. Подтвердите удаление во всплывающем окне.
Важно:
●Изменение параметров сервера, связанного с активными обработчиками, может привести к некорректной работе интеграций.
●При удалении сервера все связанные с ним обработчики будут остановлены.
Пояснение параметров SSH и Portrainer
SSH

Локальный сервер:
Включено: SSH-подключение не используется. Доступ к Docker на сервере обработки осуществляется через локальный сокет /var/run/docker.sock. Этот вариант подходит, если интеграционная шина и сервер обработки установлены на одной машине.
Выключено: Для доступа к Docker на сервере обработки используется SSH-туннель. Необходимо указать следующие параметры:
oХост: IP-адрес или доменное имя сервера обработки.
oИмя пользователя: Имя пользователя для доступа по SSH.
oПароль SSH: Пароль для аутентификации по SSH.
oПорт для связи: Порт, на котором оркестратор будет ожидать подключения от микросервисов, запущенных на удаленном сервере. Этот порт должен быть проброшен через SSH-туннель.
Ключ SSH:
Для подключения по SSH можно использовать аутентификацию по ключу. Публичный ключ сервера интеграционной шины отображается в поле "Ключ SSH". Необходимо скопировать этот ключ на сервер обработки и добавить его в файл ~/.ssh/authorized_keys пользователя, от имени которого будет осуществляться подключение.
Команда для записи ключа SSH:
Поле "Команда для записи ключа SSH" отображает команду ssh-copy-id, которую можно использовать для копирования публичного ключа на сервер обработки.

Portrainer

Активен Portrainer:
Включено: На сервере обработки будет запущен Portrainer - веб-интерфейс для управления Docker.
Выключено: Portrainer не будет запущен.
Порт Portrainer:
Порт, на котором будет доступен веб-интерфейс Portrainer.
Пароль Portrainer:
Пароль администратора для доступа к веб-интерфейсу Portrainer.
Важно:
●При использовании Portrainer необходимо настроить файрвол для разрешения входящих соединений на указанный порт.
●Для безопасного подключения к Portrainer рекомендуется использовать HTTPS.
Управление интеграционными системами
В разделе "Настройки" -> "Системы" вы можете управлять интеграционными системами, используемыми в интеграционной шине. Интеграционная система представляет собой логическую единицу, которая объединяет входные и выходные интерфейсы, относящиеся к определенной информационной системе.

Добавление новой системы

Для добавления новой системы нажмите кнопку "Добавить интеграционную систему". Откроется модальное окно, содержащее поля для ввода информации о системе:
GUID: Уникальный идентификатор системы, генерируется автоматически.
Название: Наименование системы, например, "CRM", "ERP", "1C".
Заполните поле "Название" и нажмите кнопку "Сохранить". Новая система будет добавлена в список интеграционных систем.

Редактирование системы

Для редактирования существующей системы найдите ее в списке и нажмите кнопку с изображением карандаша. Откроется модальное окно с информацией о системе.
Вы можете изменить название системы и нажать "Сохранить" для применения изменений.

Удаление системы

Для удаления системы найдите ее в списке и нажмите кнопку с изображением корзины. Система будет удалена после подтверждения. Обратите внимание, что удаление системы может привести к нарушению работы интеграционных интерфейсов, связанных с ней.
Важно:
●Буквенно-числовой идентификатор (GUID) системы генерируется автоматически и не может быть изменен.
●Перед удалением системы убедитесь, что она не используется в активных интеграционных интерфейсах.
Управление шаблонами обработки
Шаблоны обработки – это основа для создания Docker-контейнеров, в которых выполняется обработка данных выходными интерфейсами. Каждый шаблон определяет среду выполнения, включая операционную систему, набор необходимых библиотек и инструментов.

Добавление нового шаблона обработки

Для добавления нового шаблона обработки нажмите кнопку "Добавить шаблон обработки" в разделе "Управление шаблонами обработки". Откроется модальное окно "Шаблон обработки".
В поле "GUID" отображается автоматически сгенерированный уникальный идентификатор шаблона.
В поле "Название" введите наименование шаблона. Название должно быть информативным и отражать назначение шаблона.
В поле "Dockerfile" введите код Dockerfile, который определяет конфигурацию Docker-контейнера.
Для сохранения шаблона нажмите кнопку "Сохранить".

Редактирование шаблона обработки

Для редактирования существующего шаблона нажмите кнопку с иконкой карандаша в строке соответствующего шаблона в таблице. Откроется модальное окно "Шаблон обработки" с заполненными полями.
Внесите необходимые изменения в поля "Название" и "Dockerfile".
Для сохранения изменений нажмите кнопку "Сохранить".

Удаление шаблона обработки

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

После добавления, редактирования или удаления шаблона обработки, система автоматически обновит список доступных шаблонов.
Управление пользователями
Раздел "Пользователи" предназначен для администрирования учетных записей пользователей, имеющих доступ к веб-интерфейсу интеграционной шины.
Доступ к разделу:
Доступ к разделу "Пользователи" предоставляется только пользователям с правами администратора. Администратор может перейти в этот раздел из главного меню.
Функциональность:
В разделе "Пользователи" администратор может:
Просматривать список существующих пользователей:Отображается таблица со списком всех зарегистрированных пользователей, включающая имена пользователей, ФИО и статус учетной записи (активна/неактивна).
Добавлять новых пользователей: Администратор может создавать новые учетные записи пользователей, указывая имя пользователя, пароль, ФИО и другие необходимые данные.
Редактировать учетные записи пользователей: Администратор может изменять данные существующих пользователей, такие как пароль, ФИО, контактная информация и статус учетной записи.
Удалять учетные записи пользователей: Администратор может удалять учетные записи пользователей, если они больше не нужны.
Права доступа:
Права доступа к функциям раздела "Пользователи" ограничены ролью пользователя:
Администратор: Полный доступ ко всем функциям раздела.
Другие роли: Доступ к разделу "Пользователи" не предоставляется.
Важно:
Удаление учетной записи пользователя является необратимой операцией. Будьте внимательны при выполнении этой операции.
6. Управление пользователями
Описание мер безопасности, принятых в системе.
Интеграционная шина реализует комплекс мер безопасности для защиты данных и обеспечения стабильной работы системы.

Аутентификация и авторизация:
Доступ к веб-интерфейсу осуществляется посредством аутентификации пользователей. Для входа в систему используются имя пользователя и пароль. Интеграционная шина поддерживает регистрацию новых пользователей и восстановление паролей. Первый зарегистрированный пользователь автоматически получает роль администратора, которая предоставляет полный доступ ко всем разделам и функциям системы.
Ролевая модель доступа:
Доступ к различным разделам и функциям системы ограничивается в зависимости от роли пользователя.
Защита паролей:
Пароли пользователей хранятся в базе данных в зашифрованном виде с использованием алгоритма bcrypt. Bcrypt – это адаптивный алгоритм хеширования, устойчивый к атакам полного перебора, что гарантирует безопасность хранения паролей.
Защита SSH-соединений:
При подключении к серверам обработки по протоколу SSH, интеграционная шина использует аутентификацию по ключам SSH. Ключи генерируются автоматически при первом запуске системы. Кроме того, для повышения безопасности может использоваться аутентификация по паролю, который шифруется с помощью механизма ASP.NET Core Data Protection.
Защита данных:
Все конфиденциальные данные, такие как пароли, ключи и токены, шифруются перед записью в базу данных и расшифровываются только при необходимости.
Ограничение доступа:
Доступ к базе данных PostgreSQL и pgAdmin ограничен только локальной машиной. Внешние соединения блокируются для предотвращения несанкционированного доступа.
Логирование:
Все действия пользователей и системные события записываются в логи, что позволяет отслеживать работу системы и выявлять потенциальные угрозы безопасности.
Рекомендации по безопасности:
●Регулярно меняйте пароли администратора и пользователей.
●Используйте сложные пароли, состоящие из букв разного регистра, цифр и специальных символов.
●Храните сертификаты в безопасном месте.
●Настройте файрвол для ограничения доступа к портам, используемым интеграционной шиной.
●Следите за обновлениями программного обеспечения и своевременно устанавливайте их.
7. Безопасность