NAV
json

Package sender: сервис-утилита

Сервис предназначен для рассылки документов для ознакомления.

Команды могут приходить как по HTTP, так и через Kafka в топик package_sender_commands.

Сервис разбит на несколько модулей, в виде sbt проектов:

Информация по добавлению команд можно прочитать в описании шаблона

Локальный запуск

При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:

Запуск из консоли с помощью SBT

PACKAGE_SENDER_DB_HOST=localhost PACKAGE_SENDER_DB_PORT=5432 PACKAGE_SENDER_DB_NAME=package-sender PACKAGE_SENDER_DB_USER=postgres PACKAGE_SENDER_DB_PASSWORD=12345 sbt boot/run

Список переменных окружения сервиса Package sender

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

Переменная Тип Обязательная Значение по умолчанию Описание
PACKAGE_SENDER_HTTP_HOST string нет 0.0.0.0 Хост, на котором слушает HTTP-сервер
PACKAGE_SENDER_HTTP_PORT int нет 8989 Порт, на котором слушает HTTP-сервер
PACKAGE_SENDER_KAFKA_SERVERS string да localhost:9092 Адрес Kafka
PACKAGE_SENDER_KAFKA_TOPIC string нет package-sender_commands Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery.
PACKAGE_SENDER_KAFKA_CONSUMER_GROUP string нет package-sender_consumer_group Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
PACKAGE_SENDER_KAFKA_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика команд.
PACKAGE_SENDER_KAFKA_CONSUMER_RESTART_MIN_BACKOFF duration string нет 1 second Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта)
PACKAGE_SENDER_KAFKA_CONSUMER_RESTART_MAX_BACKOFF duration string нет 30 seconds Максимальное задержка до рестарта консьюмера после падения
PACKAGE_SENDER_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR double нет 0.2 Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0)
PACKAGE_SENDER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS int нет 5 Максимальное число рестартов консьюмера после падения (в пределах PACKAGE_SENDER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN)
PACKAGE_SENDER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN duration string нет 5 minutes Временной отрезок, в который PACKAGE_SENDER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов
PACKAGE_SENDER_KAFKA_COMMANDEVENT_TOPIC string да commandevents Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд.
PACKAGE_SENDER_KAFKA_AUTH_USER string нет Название учетной записи Kafka. Если название не указано, то настройки авторизации не будут применены.
PACKAGE_SENDER_KAFKA_AUTH_PASSWORD string нет Пароль учетной записи Kafka.
PACKAGE_SENDER_KAFKA_AUTH_TRUSTSTORE_LOCATION string нет Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет.
PACKAGE_SENDER_KAFKA_AUTH_TRUSTSTORE_PASSWORD string нет Пароль к хранилищу сертификатов.
PACKAGE_SENDER_KAFKA_AUTH_MODE string нет Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса
PACKAGE_SENDER_KAFKA_AUTH_CONFIG string нет Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]
PACKAGE_SENDER_KAFKA_AUTH_CACHE_SIZE int нет Максимальный размер кеша для Kafka producer (количество активных соединений).
PACKAGE_SENDER_KAFKA_AUTH_CACHE_TTL duration string нет Время жизни Kafka producer в кеше.
PACKAGE_SENDER_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL duration string нет 4 minutes Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом.
PACKAGE_SENDER_KAFKA_CONNECTION_CHECK_INTERVAL duration string нет 60 seconds Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений.
PACKAGE_SENDER_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL duration string нет 5 minutes Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным.
PACKAGE_SENDER_KAFKA_OBJECT_EVENT_TOPIC string нет entityObjectEvent Название кафка-топика для получения событий datamodel.
PACKAGE_SENDER_KAFKA_OBJECT_EVENT_CONSUMER_GROUP string нет package-sender_consumer_group Имя consumer-группы для чтения из кафка-топика событий datamodel. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
PACKAGE_SENDER_KAFKA_OBJECT_EVENT_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика событий datamodel.
PACKAGE_SENDER_KAFKA_USER_EVENT_TOPIC string нет entityObjectEvent Название кафка-топика для получения событий mon.
PACKAGE_SENDER_KAFKA_USER_EVENT_CONSUMER_GROUP string нет package-sender_consumer_group Имя consumer-группы для чтения из кафка-топика событий mon. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
PACKAGE_SENDER_KAFKA_USER_EVENT_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика событий mon.
PACKAGE_SENDER_CONSUL_ADDR url string нет http://localhost:8500 Адрес Сonsul.
PACKAGE_SENDER_CONSUL_AUTH_USER string нет Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены.
PACKAGE_SENDER_CONSUL_AUTH_PASSWORD string нет Пароль учетной записи Сonsul.
PACKAGE_SENDER_TRACE_DURATION boolean нет false Признак необходимости трассировки выполнения команд
PACKAGE_SENDER_DISCOVERABLE_ID string нет another_sopr_controls_service_instance ID сервиса в ServiceDiscovery
PACKAGE_SENDER_DISCOVERABLE_NAME string нет package-sender Имя сервиса в ServiceDiscovery
PACKAGE_SENDER_DISCOVERABLE_HOST string да localhost Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service
PACKAGE_SENDER_DISCOVERABLE_PORT int нет Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер.
PACKAGE_SENDER_DISCOVERABLE_LIVETIME duration string нет 2 minutes Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым.
PACKAGE_SENDER_DISCOVERABLE_HEALTHPASS string нет 1 minute Периодичность отправки health check в ServiceDiscovery
PACKAGE_SENDER_SERVICE_TITLE string нет Package sender Название сервиса для отображения
PACKAGE_SENDER_SERVICE_DESCRIPTION string нет Service Package sender Описание сервиса для отображения
PACKAGE_SENDER_AKKA_HTTP_CLIENT_MAXCON int нет 512 Максимальное число одновременных исходящих HTTP-соединений
PACKAGE_SENDER_AKKA_HTTP_CLIENT_MAXREQ int нет 1024 Максимальное число одновременных исходящих HTTP-запросов
PACKAGE_SENDER_AKKA_HTTP_SERVER_MAXCON int нет 1024 Максимальное число одновременных входящих HTTP-соединений
PACKAGE_SENDER_INTERNALCMD_ALLOW bool нет false Можно ли сервису отправлять внутрисистемные команды
PACKAGE_SENDER_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD duration string нет 10 minutes Время кэширования данных по командам из CommandDiscovery
PACKAGE_SENDER_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD duration string нет 30 seconds Время кэширования данных по сервисам из ServiceDiscovery
PACKAGE_SENDER_DB_HOST string да Хост БД
PACKAGE_SENDER_DB_PORT int да Порт БД
PACKAGE_SENDER_DB_NAME string да Имя базы в БД
PACKAGE_SENDER_DB_URL jdbc url string нет JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы.
PACKAGE_SENDER_DB_USER string да Пользователь БД
PACKAGE_SENDER_DB_PASSWORD string да Пароль пользователя БД
PACKAGE_SENDER_DB_THREADS int нет 10 Количество потоков в пуле потоков для соединения с БД
PACKAGE_SENDER_DB_QUEUE_SIZE int нет 300 Размер очереди для действий базы данных, которые не могут быть выполнены немедленно, когда все потоки заняты. За пределами этого значения новые действия немедленно завершаются неудачей
PACKAGE_SENDER_DB_CONN_MAX int нет 10 Максимальное количество одновременных подключений к БД
PACKAGE_SENDER_DB_CONN_TIMEOUT duration string нет 20 second Максимальное время ожидания ответа для соединения к БД. Если это время превышено, а соединение не становится доступным, будет брошено исключение SQLException. 1000 мс — минимальное значение.
PACKAGE_SENDER_DB_ISOLATION string нет READ_COMMITTED Уровень изоляции транзакций для новых подключений. Допустимые значения: NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ, SERIALIZABLE.
PACKAGE_SENDER_DB_READONLY boolean нет false Read-only SQL транзакция может изменять только временные таблицы. Этот параметр управляет статусом «только для чтения» по умолчанию для каждой новой транзакции.
PACKAGE_SENDER_DB_CONN_MIN int нет = DB_THREADS Минимальное количество одновременных подключений к БД
PACKAGE_SENDER_DB_VALIDATION_TIMEOUT duration string нет 1 seconds Максимальное время, в течение которого соединение будет проверяться на работоспособность. 1000 мс — минимальное значение.
PACKAGE_SENDER_DB_IDLE_TIMEOUT duration string нет 10 minutes Максимальное время, в течение которого соединению разрешено простаивать в пуле. Значение 0 означает, что простаивающие соединения никогда не удаляются из пула.
PACKAGE_SENDER_DB_MAX_LIFETIME duration string нет 30 minutes Максимальное время жизни соединения в пуле. Когда простаивающее соединение достигает этого времени ожидания, даже если оно недавно использовалось, оно будет удалено из пула. Значение 0 указывает на отсутствие максимального срока службы.
PACKAGE_SENDER_DB_INITIALIZATION_FAIL_FAST string нет false Deprecated, начиная с версии Slick 3.3.0. Определяет, будет ли пул «быстро выходить из строя», если пул не может быть успешно заполнен начальными соединениями. Если соединения не могут быть созданы во время запуска пула, будет выдано исключение RuntimeException. Это свойство не имеет никакого эффекта, если minConnections равно 0.
PACKAGE_SENDER_DB_LEAK_DETECTION_THRESHOLD int нет 0 Время, в течение которого соединение может находиться вне пула, прежде чем будет зарегистрировано сообщение, указывающее на возможную утечку соединения. Значение 0 означает, что обнаружение утечек отключено. Наименьшее приемлемое значение для включения обнаружения утечек составляет 10 с.
PACKAGE_SENDER_DB_CONNECTION_TEST_QUERY string нет SELECT 1 Выражение, которое будет выполнено непосредственно перед получением соединения из пула для проверки того, что соединение с базой данных все еще активно. Оно зависит от базы данных и должно представлять собой запрос, требующий минимальной обработки базой данных (например, «VALUES 1»). Если этот параметр не установлен, вместо него используется метод JDBC4 Connection.isValid().
PACKAGE_SENDER_DB_REGISTER_MBEANS boolean нет false Зарегистрированы ли JMX Management Beans («MBeans»)
PACKAGE_SENDER_DB_AUTO_COMMIT boolean нет true Это свойство определяет то, как будут вести себя по умолчанию возвращаемые соединения относительно autocommit-а.
PACKAGE_SENDER_DB_SCHEMA string нет public Устанавливает schema по умолчанию
PACKAGE_SENDER_DB_ISOLATE_INTERNAL_QUERIES boolean нет false Определяет то, изолируются ли с помощью транзакций внутренние запросы пула(например запрос connection alive test). Свойство применяется только если autoCommit выключен.
PACKAGE_SENDER_DB_INITIALIZATION_FAIL_TIMEOUT int нет 1 Работает, начиная с версии Slick 3.3.0. Определяет, будет ли пул «быстро выходить из строя», если пул не может быть успешно заполнен начальными соединениями. Любое положительное число считается числом миллисекунд для попытки получить начальное соединение;поток приложения будет заблокирован в течение этого периода. Если соединение не может быть получено до истечения этого времени,будет брошено исключение. Данный таймаут применяется после периода connectionTimeout. Если значение равно нулю (0),HikariCP попытается получить и проверить подключение. Если соединение получено,но проверка не пройдена, будет брошено исключение, и пул не будет запущен. Однако,если соединение не может быть получено, пул запустится,но последующие попытки получить соединение могут потерпеть неудачу.Значение меньше нуля пройдет любую первоначальную попытку подключения, и пул немедленно запустится,пытаясь получить соединения в фоновом режиме.Следовательно, последующие попытки получить соединение могут потерпеть неудачу.
PACKAGE_SENDER_FS_URI string да http://localhost:9000/ Адрес файлового хранилища
PACKAGE_SENDER_FS_ACCESS_KEY_ID string да minioadmin Имя пользователя файлового хранилища
PACKAGE_SENDER_FS_SECRET_ACCESS_KEY string да minioadmin Пароль пользователя файлового хранилища
PACKAGE_SENDER_FS_UPLOAD_PARALLELISM int нет 4 Параллелизм для загрузки файлов
PACKAGE_SENDER_FS_AUTH_MODE string нет static Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса
PACKAGE_SENDER_FS_AUTH_CONFIG string нет Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[FSBucketConfig] соответствует полю authConfig FSConfigRep
PACKAGE_SENDER_FS_CACHE_SIZE int нет Максимальный размер кеша клиентов для хранилища файлов (количество активных соединений).
PACKAGE_SENDER_FS_CACHE_TTL duration string нет Время жизни клиента в кеше
PACKAGE_SENDER_AUTHZFORCE_ADDR string нет http://localhost:8080/authzforce-ce Адрес AuthZforce server
PACKAGE_SENDER_AUTHZFORCE_DOMAIN string нет Доступный DomainID в AuthZforce server
PACKAGE_SENDER_LOG_LEVEL string нет INFO Общий уровень логирования в сервисе
PACKAGE_SENDER_LOG_LEVEL_AKKA string нет INFO Уровень логирования для akka
PACKAGE_SENDER_LOG_LEVEL_LIQUIBASE string нет INFO Уровень логирования для liquibase (миграции)
PACKAGE_SENDER_LOG_LEVEL_APPLICATION string нет DEBUG Уровень логирования для application
PACKAGE_SENDER_LOG_LEVEL_SLICK_STATEMENT string нет DEBUG Уровень логирования запросов, отправляемых slick в БД
PACKAGE_SENDER_LOG_LEVEL_SLICK_BENCHMARK string нет OFF Уровень логирование бенчмарков выполнения запросов slick
PACKAGE_SENDER_LOG_LEVEL_KAFKA_PRODUCER string нет WARN Уровень логирования конфига kafka-producer
PACKAGE_SENDER_LOG_LEVEL_KAFKA_CONSUMER string нет WARN Уровень логирования конфига kafka-consumer
PACKAGE_SENDER_LOG_LEVEL_HTTP_SERVER string нет WARN Уровень логирования HTTP-сервера
PACKAGE_SENDER_LOG_LEVEL_AKKAHTTPSENDER string нет WARN Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена
PACKAGE_SENDER_LOG_LEVEL_KAFKASENDER string нет WARN Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена
PACKAGE_SENDER_LOG_LEVEL_VERDI_DISPATCHER string нет WARN Уровень логирования при отправки команд в Verdi Dispathcer. На уровне INFO логируется трассировка, если она включена
PACKAGE_SENDER_LOG_LEVEL_COMMAND_LOGGER string нет WARN Уровень логирования для проверки состояний команд в сервисе статусов
PACKAGE_SENDER_LOG_LEVEL_TEAM_ROUTES string нет TRACE Уровень логирования для роутов /team
PACKAGE_SENDER_LOG_LEVEL_ENTITY_OBJECT_EVENT_HANDLER string нет WARN Уровень логирования для логики обработки PACKAGE_SENDER_***_CHANGEABLE_FIELDS полей при получении сообщений топика PACKAGE_SENDER_KAFKA_OBJECT_EVENT_TOPIC
PACKAGE_SENDER_LOG_OUTPUT string нет STDOUT Вывод лога
PACKAGE_SENDER_SYSLOG_TYPE string нет UDP Тип передачи syslog
PACKAGE_SENDER_LOGGING_SRC_IP string нет для параметра src в логах
PACKAGE_SENDER_LOGGING_SRC_HOST string нет для параметра shost в логах
PACKAGE_SENDER_LOGGING_DST_IP string нет для параметра dst в логах
PACKAGE_SENDER_LOGGING_CEF_VER string нет 0 версия CEF
PACKAGE_SENDER_LOG_LEVEL_NMD_HANDLERS string нет DEBUG Уровень логирования для обработчиков команд
PACKAGE_SENDER_LOG_LEVEL_NMD_IMPORT_SERVICE string нет DEBUG Уровень логирования для сервиса импорта
PACKAGE_SENDER_HTTP_CLIENT_CONNECTION_TIMEOUT duration string нет 5 seconds Максимальное время ожидания подключения http клиента
PACKAGE_SENDER_HTTP_CLIENT_REQUEST_TIMEOUT duration string нет 5 seconds Максимальное время ожидания ответа для http клиента
PACKAGE_SENDER_JOURNAL_MODE string нет WriteToJournal Режим журналирования Nestor. Допустимые значения: WriteToJournal (Отправка в сервис журналирования), WriteToTopic (Отправка события в очередь)
PACKAGE_SENDER_JOURNAL_TOPIC string да, если переменная PACKAGE_SENDER_JOURNAL_MODE = WriteToTopic "" Название очереди журналирования. Для режима WriteToJournal значение игнорируется.
PACKAGE_SENDER_DOCUMENT_PACKAGE_ENTITY string нет DocumentPackage EntityTypeId пакета документов в datamodel
PACKAGE_SENDER_DOCUMENT_ENTITY string нет Nmd EntityTypeId документа в datamodel
PACKAGE_SENDER_INDIVIDUAL_ENTITY string нет Individual EntityTypeId сотрудника в datamodel
PACKAGE_SENDER_DOCUMENT_PACKAGE_FIELDS string нет "" Список полей (через запятую) пакета документов для сохранения (снапшот)
PACKAGE_SENDER_DOCUMENT_PACKAGE_CHANGEABLE_FIELDS string нет "" Список полей (через запятую) пакета документов для сохранения (не снапшот)
PACKAGE_SENDER_DOCUMENT_PACKAGE_CHANGEABLE_ON_DEL_FIELDS string нет "" Список полей (через запятую) пакета документов для очистки при удалении сущности из DM
PACKAGE_SENDER_DOCUMENT_CHANGEABLE_FIELDS string нет "" Список полей (через запятую) документа для сохранения (не снапшот)
PACKAGE_SENDER_INDIVIDUAL_CHANGEABLE_FIELDS string нет "" Список полей (через запятую) сотрудника для сохранения (не снапшот)
PACKAGE_SENDER_DOCUMENT_TO_PACKAGE_FIELD string нет documentPackages Поле связи от документа к его пакетам
PACKAGE_SENDER_INDIVIDUAL_USER_FIELD string нет user Поле сотрудника с id пользователя
PACKAGE_SENDER_INDIVIDUAL_EMAIL_FIELD string нет email Поле сотрудника с email
PACKAGE_SENDER_COM_INTRO_NOTIFY_JOB_ENABLE boolean нет false Флаг включения задания для рассылки уведомлений при наступлении даты ознакомления с пакетом документов
PACKAGE_SENDER_NOTIFICATION_JOB_PERIOD cron string нет "0 0 * ? * *" Расписание задания для рассылки уведомлений при наступлении даты ознакомления с пакетом документов
PACKAGE_SENDER_PRE_INTRO_NOTIFY_JOB_ENABLE boolean нет false Флаг включения задания для рассылки уведомлений при приближении даты ознакомления с пакетом документов
PACKAGE_SENDER_DAILY_NOTIFICATION_TIME cron string нет "0 00 12 * * ?" Расписание задания для рассылки уведомлений при наступлении даты ознакомления с пакетом документов
PACKAGE_SENDER_DAILY_NOTIFICATION_DAY_BREAKPOINTS array int нет [5, 10] Периоды в днях для рассылки уведомлений при приближении даты ознакомления с пакетом документов
PACKAGE_SENDER_TIME_ZONE string нет "Europe/Moscow" Таймзона для заданий планировщика
PACKAGE_SENDER_EXPORT_BUCKET string нет "export" Бакет S3 для выгрузок журнала
PACKAGE_SENDER_EXPORT_ROWS_LIMIT int нет 800000 Максимальное количество строк в выгрузке
PACKAGE_SENDER_EXPORT_STREAMING_FETCH_SIZE int нет 500 Размер батча, используемый при стриминге данных из БД при выгрузке в xls. Влияет на объем памяти, требуемой приложению при обработке команды packageSender_ExportSentDocumentPackages

Список команд сервиса Package sender

В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.

Название команды Resource Actions
Отправка пакета документов PackageSender SendDocumentPackage
Подтверждение получения документов PackageSender ConfirmDocuments
Список отправленных пакетов документов PackageSender ListSentDocumentPackages
Получить отправленный пакет документов по id PackageSender ListTotalData
Список документов отправленного пакета PackageSender ListTotalData
Список получателей отправленного пакета PackageSender ListTotalData
Список документов отправленного пакета по получателю PackageSender ListTotalData
Список отправленных текущему пользователю пакетов документов PackageSender ListCurrentUserData
Отправка уведомления пользоваелю о необходимости ознакомления с пакетом документов PackageSender ResendUsersNotifications
Отправка уведомления пользоваелям о необходимости ознакомления с пакетом документов PackageSender ResendDocumentPackagesNotifications
Выгрузка журнала отправки пакетов PackageSender ExportSentDocumentPackages
Размер выгрузки журнала отправки пакетов PackageSender ExportSentDocumentPackages
Отмена отправки пакета PackageSender CancelSentDocumentPackage

SendDocumentPackage

Отправить пакет документов.

Команда Путь
packageSender_SendDocumentPackage -

Payload для команды

{
  "documentPackageId": "3d100dbd-d9a4-4ca4-bace-60356991b9d9",
  "isRequired": true,
  "deliveryAt": 1772174531,
  "confirmBefore": "2027-01-27",
  "isEmailNotification": true,
  "additionalEmails": [
    "email@example.com"
  ],
  "individualSearch": {
    "query": "",
    "context": {}
  }
}

Результат выполнения команды

{}

ConfirmDocuments

Подтвердить получение набора документов.

Команда Путь
packageSender_ConfirmDocuments -

Payload для команды

{
  "sentDocumentPackageId": "3d100dbd-d9a4-4ca4-bace-60356991b9d9",
  "sentDocumentIds": [
    "3d100dbd-d9a4-4ca4-bace-60356991b9d9"
  ]
}

Результат выполнения команды

{}

ListSentDocumentPackages

Список отправленных пакетов документов.

Команда Путь
packageSender_ListSentDocumentPackages HTTP POST "packageSender_ListSentDocumentPackages"

По умолчанию сортировка производится по полю createdAt модели SentDocumentPackage в порядке убывания.

Запрос принимает параметры сортировки, фильтров и пейджинга в параметре Search.

Применяется к полям моделей SentDocumentPackage, DocumentPackage (только по полю data).

Доступные поля для фильтрации и виды фильтров по ним:

Поле Виды фильтров
title InSetQuery, LikeQuery
deliveryAt RangeQuery
isDelivered InSetQuery
confirmBefore RangeQuery
createdBy InSetQuery
documentIds InSetQuery
isConfirmed InSetQuery
data.* InSetQuery

Если поле для фильтрации имеет вид data.something, то фильтрация идет по соответствующим полям в data моделей SentDocumentPack age, DocumentPackage.

Доступные поля для сортировки:

Поле
createdAt

Payload для команды

{
  "query": "createdBy",
  "context": {
    "createdBy": "3d100dbd-d9a4-4ca4-bace-60356991b9d9"
  },
  "paging": {
    "page": 1,
    "count": 10
  }
}

Результат выполнения команды

{
  "items": [
    {
      "id": "d7541e37-f0cd-4de5-9752-a11248f4e3de",
      "createdAt": 1710653400000,
      "createdBy": "603ca134-2b65-4dfb-90ea-c592a243b439",
      "title": "title1",
      "data": {
        "test": "1231231",
        "test2": "2222",
        "sent": 231
      },
      "documentPackageId": "2278c676-dbdf-42df-bb5d-8d21c0bf51d8",
      "isRequired": true,
      "isEmailNotification": false,
      "additionalEmails": [
        "email1@test.test",
        "email2@test.test"
      ],
      "deliveryAt": 1736573400000,
      "isDelivered": true,
      "confirmBefore": "2027-01-27",
      "documentCount": 1,
      "userConfirmedCount": 1,
      "userTotalCount": 1
    }
  ],
  "total": 1
}

GetSentDocumentPackage

Получить отправленный пакет документов по id.

Команда Путь
packageSender_GetSentDocumentPackage HTTP POST "packageSender_GetSentDocumentPackage"

Payload для команды

"d7541e37-f0cd-4de5-9752-a11248f4e3de"

Результат выполнения команды

{
  "id": "d7541e37-f0cd-4de5-9752-a11248f4e3de",
  "createdAt": 1710653400000,
  "createdBy": "603ca134-2b65-4dfb-90ea-c592a243b439",
  "title": "title1",
  "data": {
    "test": "1231231",
    "test2": "2222",
    "sent": 231
  },
  "documentPackageId": "2278c676-dbdf-42df-bb5d-8d21c0bf51d8",
  "isRequired": true,
  "isEmailNotification": false,
  "additionalEmails": [
    "email1@test.test",
    "email2@test.test"
  ],
  "deliveryAt": 1736573400000,
  "isDelivered": true,
  "confirmBefore": "2027-01-27",
  "documentCount": 1,
  "userConfirmedCount": 1,
  "userTotalCount": 1
}

ListSentDocumentPackageDocuments

Список документов отправленного пакета.

Команда Путь
packageSender_ListSentDocumentPackageDocuments HTTP POST "packageSender_ListSentDocumentPackageDocuments"

Запрос принимает только параметры пейджинга в параметре Search.

Payload для команды

{
  "sentDocumentPackageId": "d7541e37-f0cd-4de5-9752-a11248f4e3de",
  "search": {
    "query": "",
    "context": {},
    "paging": {
      "page": 1,
      "count": 10
    }
  }
}

Результат выполнения команды

{
  "items": [
    {
      "id": "5eb208ec-2e4a-4e03-b22b-0a30ad09f84f",
      "documentId": "869f3d0a-1fe5-4b18-b45e-53d7d8c845de",
      "data": {
        "docField2": "value"
      }
    }
  ],
  "total": 1
}

ListSentDocumentPackageUsers

Список получателей отправленного пакета.

Команда Путь
packageSender_ListSentDocumentPackageUsers HTTP POST "packageSender_ListSentDocumentPackageUsers"

Запрос принимает только параметры пейджинга в параметре Search.

Payload для команды

{
  "sentDocumentPackageId": "d7541e37-f0cd-4de5-9752-a11248f4e3de",
  "search": {
    "query": "",
    "context": {},
    "paging": {
      "page": 1,
      "count": 10
    }
  }
}

Результат выполнения команды

{
  "items": [
    {
      "id": "deb056ea-1264-4c27-b135-4a8d7e43ecfc",
      "email": "employee@email.ru",
      "userId": "a05539ac-e7a0-4c92-bf5b-caabfa3fe884",
      "individualId": "deb056ea-1264-4c27-b135-4a8d7e43ecfc",
      "title": "employee",
      "lastNotification": 1715922660000,
      "documentConfirmedCount": 1,
      "documentTotalCount": 1
    }
  ],
  "total": 1
}

ListUserDocuments

Список документов отправленного пакета по получателю.

Команда Путь
packageSender_ListUserDocuments HTTP POST "packageSender_ListUserDocuments"

Запрос принимает только параметры пейджинга в параметре Search.

Payload для команды

{
  "sentDocumentPackageUserId": "819a2735-ac55-4a14-8225-5b4d84645f9b",
  "search": {
    "query": "",
    "context": {},
    "paging": {
      "page": 1,
      "count": 10
    }
  }
}

Результат выполнения команды

{
  "items": [
    {
      "sentDocumentId": "5eb208ec-2e4a-4e03-b22b-0a30ad09f84f",
      "documentId": "869f3d0a-1fe5-4b18-b45e-53d7d8c845de",
      "isConfirmed": true,
      "data": {
        "docField2": "value"
      },
      "confirmedAt": 1715922660000
    }
  ],
  "total": 1
}

ListUserSentDocumentPackages

Список отправленных текущему пользователю пакетов документов.

Команда Путь
packageSender_ListUserSentDocumentPackages HTTP POST "packageSender_ListUserSentDocumentPackages"

По умолчанию сортировка производится по полю createdAt модели SentDocumentPackage в порядке убывания.

Запрос принимает параметры сортировки, фильтров и пейджинга в параметре Search.

Применяется к полям моделей SentDocumentPackage, DocumentPackage (только по полю data).

Доступные поля для фильтрации и виды фильтров по ним:

Поле Виды фильтров
id InSetQuery
title InSetQuery, LikeQuery
deliveryAt RangeQuery
isDelivered InSetQuery
isRequired InSetQuery
confirmBefore RangeQuery
createdBy InSetQuery
documentIds InSetQuery
isConfirmed InSetQuery
data.* InSetQuery

Если поле для фильтрации имеет вид data.something, то фильтрация идет по соответствующим полям в data моделей SentDocumentPack age, DocumentPackage.

Доступные поля для сортировки:

Поле
createdAt

Payload для команды

{
  "query": "createdBy",
  "context": {
    "createdBy": "3d100dbd-d9a4-4ca4-bace-60356991b9d9"
  },
  "paging": {
    "page": 1,
    "count": 10
  }
}

Результат выполнения команды

{
  "items": [
    {
      "id": "d7541e37-f0cd-4de5-9752-a11248f4e3de",
      "createdAt": 1710653400000,
      "createdBy": "603ca134-2b65-4dfb-90ea-c592a243b439",
      "data": {
        "test": "1231231",
        "test2": "2222",
        "sent": 231
      },
      "documentPackageId": "2278c676-dbdf-42df-bb5d-8d21c0bf51d8",
      "isRequired": true,
      "isEmailNotification": false,
      "additionalEmails": [
        "email1@test.test",
        "email2@test.test"
      ],
      "deliveryAt": 1736573400000,
      "isDelivered": true,
      "confirmBefore": "2027-01-08",
      "documentCount": 1,
      "isConfirmed": true
    }
  ],
  "total": 1
}

ResendUsersNotifications

Отправка уведомления пользователю о необходимости ознакомления с пакетом.

Команда Путь
packageSender_ResendUsersNotifications HTTP POST "packageSender_ResendUsersNotifications"

Payload для команды

{
  "sentDocumentPackageId": "3d100dbd-d9a4-4ca4-bace-60356991b9d9",
  "sentDocumentPackageUserIds": [
    "3d100dbd-d9a4-4ca4-bace-60356991b9d9"
  ]
}

Результат выполнения команды

{}

ResendDocumentPackagesNotifications

Отправка уведомления пользователям о необходимости ознакомления с пакетом.

Команда Путь
packageSender_ResendDocumentPackagesNotifications HTTP POST "packageSender_ResendDocumentPackagesNotifications"

Payload для команды

[
  "3d100dbd-d9a4-4ca4-bace-60356991b9d9"
]

Результат выполнения команды

{}

ExportSentDocumentPackages

Формирование выгрузки журнала отправки пакетов документов

Команда Путь
packageSender_ExportSentDocumentPackages -

Payload для команды

{
  "query": "",
  "context": {}
}

Результат выполнения команды

"export/ceed23ac-02d4-4940-a87e-16dfa9cceea0"

SentDocumentPackagesExportRowsCount

Количество строк в выгрузке журнала

Команда Путь
packageSender_SentDocumentPackagesExportRowsCount -

Payload для команды

{
  "query": "",
  "context": {}
}

Результат выполнения команды

{
  "expectedRows": 1000000,
  "maximumRows": 800000
}

CancelSentDocumentPackage

Отменить отправку пакета

Команда Путь
packageSender_CancelSentDocumentPackage -

Payload для команды

"b9c7c364-ad99-4fa6-b193-51c63c631c1b"

Результат выполнения команды

{}

Модели сервиса package-sender

SendDocumentPackageInput

Поле Тип Обязательное Описание
documentPackageId uuid да ID пакета документов
isRequired boolean да Обязателен к ознакомлению
deliveryAt timestamp нет Дата отправки
confirmBefore string нет Крайняя дата подтверждения получения (в формате ГГГГ-ММ-ДД)
isEmailNotification boolean да Отправлять уведомления на почту
additionalEmails string[] да Дополнительные адреса
individualSearch Search да Search для списка сотрудников-получателей

ConfirmDocumentsInput

Поле Тип Обязательное Описание
sentDocumentPackageId uuid да ID отправленного пакета документов
sentDocumentIds uuid[] да ID отправленных документов

GetSentDocumentPackagesOutDTO

Поле Тип Обязательное Описание
id uuid да ID SentDocumentPackage
createdAt timestamp да Дата создания
createdBy uuid да ID отправителя
title string да Наименование
data json да Дополнительные поля моделей SentDocumentPackage, DocumentPackage
documentPackageId uuid да ID DocumentPackage
isRequired boolean да Обязателен ли
isEmailNotification boolean да Отправлять уведомления на почту
additionalEmails string[] да Дополнительные email
deliveryAt timestamp да Дата отправки
isDelivered boolean да Отправлен ли
confirmBefore string нет Крайняя дата подтверждения получения (в формате ГГГГ-ММ-ДД)
documentCount int да Общее количество документов
userConfirmedCount int да Количество документов, с которыми ознакомились
userTotalCount int да Общее количество пользователей-получателей документов

ListSentDocumentPackageDocumentsInDTO

Поле Тип Обязательное Описание
sentDocumentPackageId uuid да ID SentDocumentPackage
search Search да Настройки фильтрации, сортировки и пагинации

ListSentDocumentPackageDocumentsOutDTO

Поле Тип Обязательное Описание
id uuid да ID SentDocument
documentId uuid да ID Document
data json да Дополнительные поля Document

ListSentDocumentPackageUsersInDTO

Поле Тип Обязательное Описание
sentDocumentPackageId uuid да ID SentDocumentPackage
search Search да Настройки фильтрации, сортировки и пагинации

ListSentDocumentPackageUsersOutDTO

Поле Тип Обязательное Описание
id uuid да ID SentDocumentPackageUser
email string да email пользователя
userId uuid нет ID пользователя в mon
individualId uuid нет ID сотрудника в datamodel
title string нет ФИО пользователя
lastNotification timestamp да Дата последнего уведомления пользователя
documentConfirmedCount int да Количество документов, с которыми ознакомились
documentTotalCount int да Общее количество документов

ListUserDocumentsInDTO

Поле Тип Обязательное Описание
sentDocumentPackageUserId uuid да ID SentDocumentPackageUser
search Search да Настройки фильтрации, сортировки и пагинации

ListUserDocumentsOutDTO

Поле Тип Обязательное Описание
id uuid да ID SentDocument
documentId uuid да ID Document
isConfirmed boolean да Ознакомились ли с документом
data json да Дополнительные поля Document
confirmedAt timestamp нет Дата подтвеждения получения

ListUserSentDocumentPackagesOutDTO

Поле Тип Обязательное Описание
id uuid да ID SentDocumentPackage
title string да Наименование SentDocumentPackage
createdAt timestamp да Дата создания
createdBy uuid да ID отправителя
data json да Дополнительные поля моделей SentDocumentPackage, DocumentPackage
documentPackageId uuid да ID DocumentPackage
isRequired boolean да Обязателен ли
isEmailNotification boolean да Отправлять уведомления на почту
additionalEmails string[] да Дополнительные email
deliveryAt timestamp да Дата отправки
isDelivered boolean да Отправлен ли
confirmBefore string нет Крайняя дата подтверждения получения (в формате ГГГГ-ММ-ДД)
documentCount int да Общее количество документов
documentConfirmedCount int да Количество документов, с которыми ознакомился текущий пользователь
isConfirmed boolean да Ознакомились ли со всеми документами

ResendUserNotificationsInput

Поле Тип Обязательное Описание
sentDocumentPackageId uuid да ID SentDocumentPackage
sentDocumentPackageUserIds uuid да ID User

ExportRowsCountInfo

Поле Тип Обязательное Описание
expectedRows int да Количество строк в выгрузке журнала
maximumRows int да Максимально допустимое кол-во строк

SAP-po-integration: сервис для интеграции с шиной данных полюса sap-po

Сервис получает НМД из СЭД.
Команды могут приходить как по HTTP, так и через Kafka в топик sap_po_integration_commands.

Сервис разбит на несколько модулей, в виде sbt проектов:

Информация по добавлению команд можно прочитать в описании шаблона

Локальный запуск

При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:

Запуск из консоли с помощью SBT

SAP_PO_INTEGRATION_DB_HOST=localhost SAP_PO_INTEGRATION_DB_PORT=5432 SAP_PO_INTEGRATION_DB_NAME=sap-po-integration SAP_PO_INTEGRATION_DB_USER=postgres SAP_PO_INTEGRATION_DB_PASSWORD=12345 sbt boot/run

Список переменных окружения сервиса SAP-po-integration

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

Переменная Тип Обязательная Значение по умолчанию Описание
SAP_PO_INTEGRATION_HTTP_HOST string нет 0.0.0.0 Хост, на котором слушает HTTP-сервер
SAP_PO_INTEGRATION_HTTP_PORT int нет 8999 Порт, на котором слушает HTTP-сервер
SAP_PO_INTEGRATION_KAFKA_SERVERS string да localhost:9092 Адрес Kafka
SAP_PO_INTEGRATION_KAFKA_TOPIC string нет sap_po_integration_commands Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery.
SAP_PO_INTEGRATION_KAFKA_CONSUMER_GROUP string нет sap_po_integration_consumer_group Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
SAP_PO_INTEGRATION_KAFKA_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика команд.
SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MIN_BACKOFF duration string нет 1 second Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта)
SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MAX_BACKOFF duration string нет 30 seconds Максимальное задержка до рестарта консьюмера после падения
SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR double нет 0.2 Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0)
SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS int нет 5 Максимальное число рестартов консьюмера после падения (в пределах SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN)
SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN duration string нет 5 minutes Временной отрезок, в который SAP_PO_INTEGRATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов
SAP_PO_INTEGRATION_KAFKA_OBJECT_EVENT_TOPIC string нет entityObjectEvent Название кафка-топика для получения событий datamodel.
SAP_PO_INTEGRATION_KAFKA_OBJECT_EVENT_CONSUMER_GROUP string нет sap_po_integration_consumer_group Имя consumer-группы для чтения из кафка-топика событий datamodel. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
SAP_PO_INTEGRATION_KAFKA_OBJECT_EVENT_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика событий datamodel.
SAP_PO_INTEGRATION_KAFKA_COMMANDEVENT_TOPIC string да commandevents Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд.
SAP_PO_INTEGRATION_KAFKA_AUTH_USER string нет Название учетной записи Kafka. Если название не указано, то настройки авторизации не будут применены.
SAP_PO_INTEGRATION_KAFKA_AUTH_PASSWORD string нет Пароль учетной записи Kafka.
SAP_PO_INTEGRATION_KAFKA_AUTH_TRUSTSTORE_LOCATION string нет Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет.
SAP_PO_INTEGRATION_KAFKA_AUTH_TRUSTSTORE_PASSWORD string нет Пароль к хранилищу сертификатов.
SAP_PO_INTEGRATION_KAFKA_AUTH_MODE string нет Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса
SAP_PO_INTEGRATION_KAFKA_AUTH_CONFIG string нет Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]
SAP_PO_INTEGRATION_KAFKA_AUTH_CACHE_SIZE int нет Максимальный размер кеша для Kafka producer (количество активных соединений).
SAP_PO_INTEGRATION_KAFKA_AUTH_CACHE_TTL duration string нет Время жизни Kafka producer в кеше.
SAP_PO_INTEGRATION_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL duration string нет 4 minutes Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом.
SAP_PO_INTEGRATION_KAFKA_CONNECTION_CHECK_INTERVAL duration string нет 60 seconds Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений.
SAP_PO_INTEGRATION_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL duration string нет 5 minutes Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным.
SAP_PO_INTEGRATION_CONSUL_ADDR url string нет http://localhost:8500 Адрес Сonsul.
SAP_PO_INTEGRATION_CONSUL_AUTH_USER string нет Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены.
SAP_PO_INTEGRATION_CONSUL_AUTH_PASSWORD string нет Пароль учетной записи Сonsul.
SAP_PO_INTEGRATION_TRACE_DURATION boolean нет false Признак необходимости трассировки выполнения команд
SAP_PO_INTEGRATION_DISCOVERABLE_ID string нет another_SAP_PO_INTEGRATION_service_instance ID сервиса в ServiceDiscovery
SAP_PO_INTEGRATION_DISCOVERABLE_NAME string нет sap-po-integration Имя сервиса в ServiceDiscovery
SAP_PO_INTEGRATION_DISCOVERABLE_HOST string да localhost Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service
SAP_PO_INTEGRATION_DISCOVERABLE_PORT int нет Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер.
SAP_PO_INTEGRATION_DISCOVERABLE_LIVETIME duration string нет 2 minutes Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым.
SAP_PO_INTEGRATION_DISCOVERABLE_HEALTHPASS string нет 1 minute Периодичность отправки health check в ServiceDiscovery
SAP_PO_INTEGRATION_SERVICE_TITLE string нет SAP-po-integration Название сервиса для отображения
SAP_PO_INTEGRATION_SERVICE_DESCRIPTION string нет Service SAP-po-integration Описание сервиса для отображения
SAP_PO_INTEGRATION_AKKA_HTTP_CLIENT_MAXCON int нет 512 Максимальное число одновременных исходящих HTTP-соединений
SAP_PO_INTEGRATION_AKKA_HTTP_CLIENT_MAXREQ int нет 1024 Максимальное число одновременных исходящих HTTP-запросов
SAP_PO_INTEGRATION_AKKA_HTTP_SERVER_MAXCON int нет 1024 Максимальное число одновременных входящих HTTP-соединений
SAP_PO_INTEGRATION_INTERNALCMD_ALLOW bool нет false Можно ли сервису отправлять внутрисистемные команды
SAP_PO_INTEGRATION_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD duration string нет 10 minutes Время кэширования данных по командам из CommandDiscovery
SAP_PO_INTEGRATION_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD duration string нет 30 seconds Время кэширования данных по сервисам из ServiceDiscovery
SAP_PO_INTEGRATION_DB_HOST string да Хост БД
SAP_PO_INTEGRATION_DB_PORT int да Порт БД
SAP_PO_INTEGRATION_DB_NAME string да Имя базы в БД
SAP_PO_INTEGRATION_DB_URL jdbc url string нет JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы.
SAP_PO_INTEGRATION_DB_USER string да Пользователь БД
SAP_PO_INTEGRATION_DB_PASSWORD string да Пароль пользователя БД
SAP_PO_INTEGRATION_DB_THREADS int нет 10 Количество потоков в пуле потоков для соединения с БД
SAP_PO_INTEGRATION_DB_QUEUE_SIZE int нет 300 Размер очереди для действий базы данных, которые не могут быть выполнены немедленно, когда все потоки заняты. За пределами этого значения новые действия немедленно завершаются неудачей
SAP_PO_INTEGRATION_DB_CONN_MAX int нет 10 Максимальное количество одновременных подключений к БД
SAP_PO_INTEGRATION_DB_CONN_TIMEOUT duration string нет 20 second Максимальное время ожидания ответа для соединения к БД. Если это время превышено, а соединение не становится доступным, будет брошено исключение SQLException. 1000 мс — минимальное значение.
SAP_PO_INTEGRATION_DB_ISOLATION string нет READ_COMMITTED Уровень изоляции транзакций для новых подключений. Допустимые значения: NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ, SERIALIZABLE.
SAP_PO_INTEGRATION_DB_READONLY boolean нет false Read-only SQL транзакция может изменять только временные таблицы. Этот параметр управляет статусом «только для чтения» по умолчанию для каждой новой транзакции.
SAP_PO_INTEGRATION_DB_CONN_MIN int нет = DB_THREADS Минимальное количество одновременных подключений к БД
SAP_PO_INTEGRATION_DB_VALIDATION_TIMEOUT duration string нет 1 seconds Максимальное время, в течение которого соединение будет проверяться на работоспособность. 1000 мс — минимальное значение.
SAP_PO_INTEGRATION_DB_IDLE_TIMEOUT duration string нет 10 minutes Максимальное время, в течение которого соединению разрешено простаивать в пуле. Значение 0 означает, что простаивающие соединения никогда не удаляются из пула.
SAP_PO_INTEGRATION_DB_MAX_LIFETIME duration string нет 30 minutes Максимальное время жизни соединения в пуле. Когда простаивающее соединение достигает этого времени ожидания, даже если оно недавно использовалось, оно будет удалено из пула. Значение 0 указывает на отсутствие максимального срока службы.
SAP_PO_INTEGRATION_DB_INITIALIZATION_FAIL_FAST string нет false Deprecated, начиная с версии Slick 3.3.0. Определяет, будет ли пул «быстро выходить из строя», если пул не может быть успешно заполнен начальными соединениями. Если соединения не могут быть созданы во время запуска пула, будет выдано исключение RuntimeException. Это свойство не имеет никакого эффекта, если minConnections равно 0.
SAP_PO_INTEGRATION_DB_LEAK_DETECTION_THRESHOLD int нет 0 Время, в течение которого соединение может находиться вне пула, прежде чем будет зарегистрировано сообщение, указывающее на возможную утечку соединения. Значение 0 означает, что обнаружение утечек отключено. Наименьшее приемлемое значение для включения обнаружения утечек составляет 10 с.
SAP_PO_INTEGRATION_DB_CONNECTION_TEST_QUERY string нет SELECT 1 Выражение, которое будет выполнено непосредственно перед получением соединения из пула для проверки того, что соединение с базой данных все еще активно. Оно зависит от базы данных и должно представлять собой запрос, требующий минимальной обработки базой данных (например, «VALUES 1»). Если этот параметр не установлен, вместо него используется метод JDBC4 Connection.isValid().
SAP_PO_INTEGRATION_DB_REGISTER_MBEANS boolean нет false Зарегистрированы ли JMX Management Beans («MBeans»)
SAP_PO_INTEGRATION_DB_AUTO_COMMIT boolean нет true Это свойство определяет то, как будут вести себя по умолчанию возвращаемые соединения относительно autocommit-а.
SAP_PO_INTEGRATION_DB_SCHEMA string нет public Устанавливает schema по умолчанию
SAP_PO_INTEGRATION_DB_ISOLATE_INTERNAL_QUERIES boolean нет false Определяет то, изолируются ли с помощью транзакций внутренние запросы пула(например запрос connection alive test). Свойство применяется только если autoCommit выключен.
SAP_PO_INTEGRATION_DB_INITIALIZATION_FAIL_TIMEOUT int нет 1 Работает, начиная с версии Slick 3.3.0. Определяет, будет ли пул «быстро выходить из строя», если пул не может быть успешно заполнен начальными соединениями. Любое положительное число считается числом миллисекунд для попытки получить начальное соединение;поток приложения будет заблокирован в течение этого периода. Если соединение не может быть получено до истечения этого времени,будет брошено исключение. Данный таймаут применяется после периода connectionTimeout. Если значение равно нулю (0),HikariCP попытается получить и проверить подключение. Если соединение получено,но проверка не пройдена, будет брошено исключение, и пул не будет запущен. Однако,если соединение не может быть получено, пул запустится,но последующие попытки получить соединение могут потерпеть неудачу.Значение меньше нуля пройдет любую первоначальную попытку подключения, и пул немедленно запустится,пытаясь получить соединения в фоновом режиме.Следовательно, последующие попытки получить соединение могут потерпеть неудачу.
SAP_PO_INTEGRATION_AUTHZFORCE_ADDR string нет http://localhost:8080/authzforce-ce Адрес AuthZforce server
SAP_PO_INTEGRATION_AUTHZFORCE_DOMAIN string нет Доступный DomainID в AuthZforce server
SAP_PO_INTEGRATION_LOG_LEVEL string нет INFO Общий уровень логирования в сервисе
SAP_PO_INTEGRATION_LOG_LEVEL_AKKA string нет INFO Уровень логирования для akka
SAP_PO_INTEGRATION_LOG_LEVEL_LIQUIBASE string нет INFO Уровень логирования для liquibase (миграции)
SAP_PO_INTEGRATION_LOG_LEVEL_APPLICATION string нет DEBUG Уровень логирования для application
SAP_PO_INTEGRATION_LOG_LEVEL_SLICK_STATEMENT string нет DEBUG Уровень логирования запросов, отправляемых slick в БД
SAP_PO_INTEGRATION_LOG_LEVEL_SLICK_BENCHMARK string нет OFF Уровень логирование бенчмарков выполнения запросов slick
SAP_PO_INTEGRATION_LOG_LEVEL_KAFKA_PRODUCER string нет WARN Уровень логирования конфига kafka-producer
SAP_PO_INTEGRATION_LOG_LEVEL_KAFKA_CONSUMER string нет WARN Уровень логирования конфига kafka-consumer
SAP_PO_INTEGRATION_LOG_LEVEL_HTTP_SERVER string нет WARN Уровень логирования HTTP-сервера
SAP_PO_INTEGRATION_LOG_LEVEL_AKKAHTTPSENDER string нет WARN Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена
SAP_PO_INTEGRATION_LOG_LEVEL_KAFKASENDER string нет WARN Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена
SAP_PO_INTEGRATION_LOG_LEVEL_VERDI_DISPATCHER string нет WARN Уровень логирования при отправки команд в Verdi Dispathcer. На уровне INFO логируется трассировка, если она включена
SAP_PO_INTEGRATION_LOG_LEVEL_COMMAND_LOGGER string нет WARN Уровень логирования для проверки состояний команд в сервисе статусов
SAP_PO_INTEGRATION_LOG_LEVEL_TEAM_ROUTES string нет TRACE Уровень логирования для роутов /team
SAP_PO_INTEGRATION_LOG_OUTPUT string нет STDOUT Вывод лога
SAP_PO_INTEGRATION_SYSLOG_TYPE string нет UDP Тип передачи syslog
SAP_PO_INTEGRATION_LOGGING_SRC_IP string нет для параметра src в логах
SAP_PO_INTEGRATION_LOGGING_SRC_HOST string нет для параметра shost в логах
SAP_PO_INTEGRATION_LOGGING_DST_IP string нет для параметра dst в логах
SAP_PO_INTEGRATION_LOGGING_CEF_VER string нет 0 версия CEF
SAP_PO_INTEGRATION_LOG_LEVEL_NMD_HANDLERS string нет DEBUG Уровень логирования для обработчиков команд
SAP_PO_INTEGRATION_LOG_LEVEL_NMD_IMPORT_SERVICE string нет DEBUG Уровень логирования для сервиса импорта
SAP_PO_INTEGRATION_HTTP_CLIENT_CONNECTION_TIMEOUT duration string нет 5 seconds Максимальное время ожидания подключения http клиента
SAP_PO_INTEGRATION_HTTP_CLIENT_REQUEST_TIMEOUT duration string нет 5 seconds Максимальное время ожидания ответа для http клиента
SAP_PO_INTEGRATION_FS_URI string да http://localhost:9000/ Адрес файлового хранилища
SAP_PO_INTEGRATION_FS_ACCESS_KEY_ID string да minioadmin Имя пользователя файлового хранилища
SAP_PO_INTEGRATION_FS_SECRET_ACCESS_KEY string да minioadmin Пароль пользователя файлового хранилища
SAP_PO_INTEGRATION_FS_UPLOAD_PARALLELISM int нет 4 Параллелизм для загрузки файлов
SAP_PO_INTEGRATION_FS_AUTH_MODE string нет static Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса
SAP_PO_INTEGRATION_FS_AUTH_CONFIG string нет Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[FSBucketConfig] соответствует полю authConfig FSConfigRep
SAP_PO_INTEGRATION_FS_CACHE_SIZE int нет 1 Максимальный размер кеша клиентов для хранилища файлов (количество активных соединений).
SAP_PO_INTEGRATION_FS_CACHE_TTL duration string нет Время жизни клиента в кеше
SAP_PO_INTEGRATION_SED_AUTHORIZATION_ENABLED boolean нет true Возможность отключить проверку авторизации для методов /api/sed/*
SAP_PO_INTEGRATION_ASUP_AUTHORIZATION_ENABLED boolean нет true Возможность отключить проверку авторизации для методов /api/asup/*
SAP_PO_INTEGRATION_SPD_AUTHORIZATION_ENABLED boolean нет true Возможность отключить проверку авторизации для методов /api/spd/*
SAP_PO_INTEGRATION_KSU_NSI_AUTHORIZATION_ENABLED boolean нет true Возможность отключить проверку авторизации для методов /api/ksu-nsi/*
SAP_PO_INTEGRATION_FILE_SERVICE_URL string да http://127.0.0.1:3000/ Путь к сервису файлового хранилища SAP Polyus
SAP_PO_INTEGRATION_FILE_SERVICE_FILE_URL string нет /RESTAdapter/SOPR/File Ресурс получения файла сервиса файлового хранилища SAP Polyus
SAP_PO_INTEGRATION_FILE_SERVICE_AUTH_USERNAME string да Пользователь Basic Authentication для файлового хранилища SAP Polyus
SAP_PO_INTEGRATION_FILE_SERVICE_AUTH_PASSWORD string да Пароль Basic Authentication для файлового хранилища SAP Polyus
SAP_PO_INTEGRATION_TEMP_BUCKET string да Bucket для временных файлов
SAP_PO_INTEGRATION_NMD_SCHEMA_MIGRATION_TIMEOUT duration string нет 30 seconds Время на выполнение кастомной миграции схемы NMD в сервисе data-model
SAP_PO_INTEGRATION_NMD_REIMPORT_DELAY duration string нет 10 seconds Задержка перед выполнением следующей итерации импорта
SAP_PO_INTEGRATION_NMD_IMPORT_ERROR_PAUSE duration string нет 1 minute Пауза при обнаружении ошибки импорта перед началом новой итерации импорта
SAP_PO_INTEGRATION_PARALLEL_FILES_REUPLOAD int нет 7 Количество одновременно скачиваемых файлов из файлового хранилища SAP Polyus и загружаемых в S3
SAP_PO_INTEGRATION_PARALLEL_NMDS_SUBMIT int нет 5 Количество одновременно сохраняемых НМД в Data-Model
SAP_PO_INTEGRATION_PARALLEL_STORED_OBJECTS_SUBMIT int нет 16 Количество одновременно сохраняемых объектов в Data-Model
SAP_PO_INTEGRATION_PARALLEL_CATALOG_ITEMS_SUBMIT int нет 10 Количество одновременно сохраняемых справочных элементов в Alexandrina
SAP_PO_INTEGRATION_STATUS_CHECK_COUNT_DOWN duration string да 20 minutes Задает длительность таймера (N времени), после обработки последней неошибочной записи, перед проверкой.
SAP_PO_INTEGRATION_WAITING_CHECK_COUNT_DOWN duration string да 70 minutes Задает длительность таймера (N времени), запускаемому и откладываемому после получения каждой НМД из потока, по истечению которого произойдет ревизия отсутствующих (недополученных).
SAP_PO_INTEGRATION_JOURNAL_MODE string нет WriteToJournal Режим журналирования Nestor. Допустимые значения: WriteToJournal (Отправка в сервис журналирования), WriteToTopic (Отправка события в очередь)
SAP_PO_INTEGRATION_JOURNAL_TOPIC string да, если переменная SAP_PO_INTEGRATION_JOURNAL_MODE = WriteToTopic "" Название очереди журналирования. Для режима WriteToJournal значение игнорируется.
SAP_PO_INTEGRATION_NOTIFICATION_SETTINGS_EMAIL_TOPIC string нет "email" Название очереди уведомлений на почту. Устанавливается, если на стенде есть префикс у названий очередей.
SAP_PO_INTEGRATION_ALEXANDRINA_CACHE_TTL duration string нет 5 minutes TTL кэша запрашиваемых данных из Alexandrina
SAP_PO_INTEGRATION_ALEXANDRINA_CACHE_MAX_SIZE int нет 300 Максимальный размер кэша запрашиваемых данных из Alexandrina
SAP_PO_INTEGRATION_STAGE_RETRY_CONFIG string (int seq) нет 1,10,60 Перечень значений (в минутах) для ожидания между повторными попытками сохранить объект в DM

Список команд сервиса SAP-po-integration

В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.

В сервисе реализованы команды:

MasterNmdHandle

Принимает поток из главных NMD сущностей, имеют первый приоритет.

Команда Путь
sappointegration_http_MasterNmdHandle HTTP POST "/api/sed/v1/master-nmds"

Payload для команды

{
  "masterNMD": [
    {
      "guid": "00001111-2222-3333-4444-555566667777",
      "<MasterNmdField1>": "..."
    }
  ]
}

Результат выполнения команды

{
  "saved": 1
}

RegistryNmdHandle

Принимает поток из NMD сущностей.

Команда Путь
sappointegration_http_RegistryNmdHandle HTTP POST "/api/sed/v1/nmds"

Payload для команды

{
  "registerNMD": [
    {
      "guid": "00001111-2222-3333-4444-555566667777",
      "<NmdField1>": "..."
    }
  ]
}

Результат выполнения команды

{
  "saved": 1
}

NmdFileHandle

Получить файл по ID

Команда Путь
sappointegration_http_NmdFileHandle HTTP POST "/api/sed/v1/nmd-file"

Payload для команды

"c943f0e9-a744-46b9-94f7-79709542fba4"

Результат выполнения команды

{
  "fileGuid": "c943f0e9-a744-46b9-94f7-79709542fba4",
  "fileData": "data",
  "fileName": "name",
  "fileHideFromListFiles": false,
  "typeFile": "type",
  "typeFileGuid": "c943f0e9-a744-46b9-94f7-79709542fba4",
  "extension": "md"
}

DepartmentRawHandle

Принимает поток данных подразделений из АСУП.

Команда Путь
sappointegration_http_DepartmentRawHandle HTTP POST "/api/asup/v1/departments"

Payload для команды

{
  "department": [
    {
      "guid": "00001111-2222-3333-4444-555566667777",
      "<DepartmentField>": "..."
    }
  ]
}

Результат выполнения команды

{
  "saved": 1
}

FunctionBlockRawHandle

Принимает поток данных функциональных блоков из АСУП.

Команда Путь
sappointegration_http_FunctionBlockRawHandle HTTP POST "/api/asup/v1/function-blocks"

Payload для команды

{
  "guid": "00001111-2222-3333-4444-555566667777",
  "<FunctionBlockField>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

OrganizationRawHandle

Принимает поток данных организаций из АСУП.

Команда Путь
sappointegration_http_OrganizationRawHandle HTTP POST "/api/asup/v1/organizations"

Payload для команды

{
  "companies": [
    {
      "guid": "00001111-2222-3333-4444-555566667777",
      "<OrganizationField>": "..."
    }
  ]
}

Результат выполнения команды

{
  "saved": 1
}

PersonRawHandle

Принимает поток данных сотрудников из АСУП.

Команда Путь
sappointegration_http_PersonRawHandle HTTP POST "/api/asup/v1/persons"

Payload для команды

{
  "employees": [
    {
      "guid": "00001111-2222-3333-4444-555566667777",
      "emplGuid": "00001111-2222-3333-4444-555566667777",
      "<PersonField>": "..."
    }
  ]
}

Результат выполнения команды

{
  "saved": 1
}

StaffPositionRawHandle

Принимает поток данных штатное расписание из АСУП.

Команда Путь
sappointegration_http_StaffPositionRawHandle HTTP POST "/api/asup/v1/staff-positions"

Payload для команды

[
  {
    "guid": "00001111-2222-3333-4444-555566667777",
    "<StaffPositionField>": "..."
  }
]

Результат выполнения команды

{
  "saved": 1
}

CategoryRawHandle

Принимает поток данных Category из СПД.

Команда Путь
sappointegration_http_CategoryRawHandle HTTP POST "/api/spd/v1/categories"

Payload для команды

{
  "categoryGuid": "00001111-2222-3333-4444-555566667777",
  "<Field>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

FamilyRawHandle

Принимает поток данных Family из СПД.

Команда Путь
sappointegration_http_FamilyRawHandle HTTP POST "/api/spd/v1/family"

Payload для команды

{
  "familyGuid": "00001111-2222-3333-4444-555566667777",
  "<Field>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

FunctionRawHandle

Принимает поток данных Function из СПД.

Команда Путь
sappointegration_http_FunctionRawHandle HTTP POST "/api/spd/v1/functions"

Payload для команды

{
  "functionGuid": "00001111-2222-3333-4444-555566667777",
  "<Field>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

ManagementVerticalRawHandle

Принимает поток данных ManagementVertical из СПД.

Команда Путь
sappointegration_http_ManagementVerticalRawHandle HTTP POST "/api/spd/v1/managment-verticals"

Payload для команды

{
  "managementVerticalGuid": "00001111-2222-3333-4444-555566667777",
  "<Field>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

ProfileRawHandle

Принимает поток данных Profile из СПД.

Команда Путь
sappointegration_http_ProfileRawHandle HTTP POST "/api/spd/v1/profiles"

Payload для команды

{
  "guid": "00001111-2222-3333-4444-555566667777",
  "<Field>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

SubFamilyRawHandle

Принимает поток данных SubFamily из СПД.

Команда Путь
sappointegration_http_SubFamilyRawHandle HTTP POST "/api/spd/v1/sub-family"

Payload для команды

{
  "subfamilyGuid": "00001111-2222-3333-4444-555566667777",
  "<Field>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

TaskRawHandle

Принимает поток данных Task из СПД.

Команда Путь
sappointegration_http_TaskRawHandle HTTP POST "/api/spd/v1/tasks"

Payload для команды

{
  "taskGuid": "00001111-2222-3333-4444-555566667777",
  "<Field>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

BusinessGlossaryRawHandle

Принимает поток данных бизнес-глоссария из КСУ НСИ.

Команда Путь
sappointegration_http_BusinessGlossaryRawHandle HTTP POST "/api/ksu-nsi/v1/business-glossary"

Payload для команды

{
  "guid": "00001111-2222-3333-4444-555566667777",
  "<Field>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

InformationalSystemRawHandle

Принимает поток данных информационных систем из КСУ НСИ.

Команда Путь
sappointegration_http_InformationalSystemRawHandle HTTP POST "/api/ksu-nsi/v1/informational-systems"

Payload для команды

{
  "Item": [
    {
      "guid": "00001111-2222-3333-4444-555566667777",
      "<Field>": "..."
    }
  ]
}

Результат выполнения команды

{
  "saved": 1
}

ProcessModelRawHandle

Принимает поток данных процессной модели из КСУ НСИ.

Команда Путь
sappointegration_http_ProcessModelRawHandle HTTP POST "/api/ksu-nsi/v1/business-processes"

Payload для команды

{
  "guid": "00001111-2222-3333-4444-555566667777",
  "<Field>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

ISConditionRawHandle

Принимает поток данных состояний информационных систем из КСУ НСИ.

Команда Путь
sappointegration_http_ISConditionRawHandle HTTP POST "/api/ksu-nsi/v1/informational-system-conditions"

Payload для команды

{
  "guid": "00001111-2222-3333-4444-555566667777",
  "<Field>": "..."
}

Результат выполнения команды

{
  "saved": 1
}

Модели сервиса SAP-po-integration

MasterNmdHandleRequest

Поле Тип Обязательное Описание
masterNMD MasterNmdData[] да -

MasterNmdData

Поле Тип Обязательное Описание
guid UUID да Внешний идентификатор (СЭД)
? ? ? Прочие невалдируемые поля

RegistryNmdHandleRequest

Поле Тип Обязательное Описание
registerNMD RegistryNmdData[] да -

RegistryNmdData

Поле Тип Обязательное Описание
guid UUID да Внешний идентификатор (СЭД)
? ? ? Прочие невалдируемые поля

FileAttachment

Поле Тип Обязательное Описание
fileGuid UUID да Уникальный идентификатор версии файла
fileData String да Содержимое файла, закодированное в Base64
fileName String да Имя файла
fileHideFromListFiles Boolean да Флаг, указывающий, нужно ли скрывать файл в списках
typeFile String да Наименование типа файла
typeFileGuid UUID да Уникальный идентификатор типа файла
extension String да Расширение файла

DepartmentRawHandleRequest

Поле Тип Обязательное Описание
department DepartmentData[] да -

DepartmentData

Поле Тип Обязательное Описание
guid string да Внешний идентификатор (АСУП)
? ? ? Прочие невалдируемые поля

OrganizationRawHandleRequest

Поле Тип Обязательное Описание
companies OrganizationData[] да -

OrganizationData

Поле Тип Обязательное Описание
guid string да Внешний идентификатор (АСУП)
? ? ? Прочие невалдируемые поля

StaffPositionData

Поле Тип Обязательное Описание
guid string да Внешний идентификатор (АСУП)
? ? ? Прочие невалдируемые поля

PersonRawHandleRequest

Поле Тип Обязательное Описание
employees PersonData[] да -

PersonData

Поле Тип Обязательное Описание
guid string да Внешний идентификатор (АСУП)
emplGuid string да Внешний идентификатор (АСУП)
? ? ? Прочие невалдируемые поля

FunctionBlockData

Поле Тип Обязательное Описание
guid string да Внешний идентификатор (АСУП)
? ? ? Прочие невалдируемые поля

CategoryData

Поле Тип Обязательное Описание
categoryGuid string да Внешний идентификатор (СПД)
? ? ? Прочие невалдируемые поля

FamilyData

Поле Тип Обязательное Описание
familyGuid string да Внешний идентификатор (СПД)
? ? ? Прочие невалдируемые поля

FunctionData

Поле Тип Обязательное Описание
functionGuid string да Внешний идентификатор (СПД)
? ? ? Прочие невалдируемые поля

ManagementVerticalData

Поле Тип Обязательное Описание
managementVerticalGuid string да Внешний идентификатор (СПД)
? ? ? Прочие невалдируемые поля

ProfileData

Поле Тип Обязательное Описание
guid string да Внешний идентификатор (СПД)
? ? ? Прочие невалдируемые поля

SubFamilyData

Поле Тип Обязательное Описание
subfamilyGuid string да Внешний идентификатор (СПД)
? ? ? Прочие невалдируемые поля

TaskData

Поле Тип Обязательное Описание
taskGuid string да Внешний идентификатор (СПД)
? ? ? Прочие невалдируемые поля

BusinessGlossaryData

Поле Тип Обязательное Описание
guid string да Внешний идентификатор (КСУ НСИ)
? ? ? Прочие невалдируемые поля

InformationalSystemRawHandleRequest

Поле Тип Обязательное Описание
Item InformationalSystemData[] да -

InformationalSystemData

Поле Тип Обязательное Описание
guid string да Внешний идентификатор (КСУ НСИ)
? ? ? Прочие невалдируемые поля

ProcessModelData

Поле Тип Обязательное Описание
guid string да Внешний идентификатор (КСУ НСИ)
? ? ? Прочие невалдируемые поля

ISConditionData

Поле Тип Обязательное Описание
relevanceStatusGUID string да Внешний идентификатор (КСУ НСИ)
? ? ? Прочие невалдируемые поля

SavedResponse

Поле Тип Обязательное Описание
saved Int да Количество сохраненных объектов

SOPR-control: сервис-утилита

Сервис содержит в себе мигратор для сущностей в другие сервисы. А также обработчик событий EntityObjectEvent. Команд пока нет, но возможность обработки предусмотрена. Команды могут приходить как по HTTP, так и через Kafka в топик sopr_control_commands.

Сервис разбит на несколько модулей, в виде sbt проектов:

Информация по добавлению команд можно прочитать в описании шаблона

Локальный запуск

При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:

Запуск из консоли с помощью SBT

SOPR_CONTROL_DB_HOST=localhost SOPR_CONTROL_DB_PORT=5432 SOPR_CONTROL_DB_NAME=sopr-control SOPR_CONTROL_DB_USER=postgres SOPR_CONTROL_DB_PASSWORD=12345 sbt boot/run

Список переменных окружения сервиса SOPR-control

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

Переменная Тип Обязательная Значение по умолчанию Описание
SOPR_CONTROL_HTTP_HOST string нет 0.0.0.0 Хост, на котором слушает HTTP-сервер
SOPR_CONTROL_HTTP_PORT int нет 8999 Порт, на котором слушает HTTP-сервер
SOPR_CONTROL_KAFKA_SERVERS string да localhost:9092 Адрес Kafka
SOPR_CONTROL_KAFKA_TOPIC string нет sopr-control_commands Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery.
SOPR_CONTROL_KAFKA_CONSUMER_GROUP string нет sopr-control_consumer_group Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
SOPR_CONTROL_KAFKA_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика команд.
SOPR_CONTROL_KAFKA_CONSUMER_RESTART_MIN_BACKOFF duration string нет 1 second Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта)
SOPR_CONTROL_KAFKA_CONSUMER_RESTART_MAX_BACKOFF duration string нет 30 seconds Максимальное задержка до рестарта консьюмера после падения
SOPR_CONTROL_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR double нет 0.2 Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0)
SOPR_CONTROL_KAFKA_CONSUMER_RESTART_MAX_RESTARTS int нет 5 Максимальное число рестартов консьюмера после падения (в пределах SOPR_CONTROL_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN)
SOPR_CONTROL_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN duration string нет 5 minutes Временной отрезок, в который SOPR_CONTROL_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов
SOPR_CONTROL_KAFKA_COMMANDEVENT_TOPIC string да commandevents Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд.
SOPR_CONTROL_KAFKA_BUZZERSUBSCRIPTIONEVENTS_TOPIC string да buzzerSubscriptionEvents Название кафка-топика для пересылки сообщений EntityObjectEvent из DM в buzzer-subscription с обогащением передаваемых данных. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе buzzer-subscription.
SOPR_CONTROL_KAFKA_FULLTEXTSEARCH_PLUGIN_TOPIC string да ftsPlugin Название кафка-топика плагина full-text-search
SOPR_CONTROL_KAFKA_SIMILARITY_PLUGIN_TOPIC string да similarityPlugin Название кафка-топика плагина индексации similarity
SOPR_CONTROL_KAFKA_PLAGIARISM_PLUGIN_TOPIC string да plagiarismPlugin Название кафка-топика плагина индексации plagiarism
SOPR_CONTROL_KAFKA_AUTH_USER string нет Название учетной записи Kafka. Если название не указано, то настройки авторизации не будут применены.
SOPR_CONTROL_KAFKA_AUTH_PASSWORD string нет Пароль учетной записи Kafka.
SOPR_CONTROL_KAFKA_AUTH_TRUSTSTORE_LOCATION string нет Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет.
SOPR_CONTROL_KAFKA_AUTH_TRUSTSTORE_PASSWORD string нет Пароль к хранилищу сертификатов.
SOPR_CONTROL_KAFKA_AUTH_MODE string нет Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса
SOPR_CONTROL_KAFKA_AUTH_CONFIG string нет Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]
SOPR_CONTROL_KAFKA_AUTH_CACHE_SIZE int нет Максимальный размер кеша для Kafka producer (количество активных соединений).
SOPR_CONTROL_KAFKA_AUTH_CACHE_TTL duration string нет Время жизни Kafka producer в кеше.
SOPR_CONTROL_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL duration string нет 4 minutes Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом.
SOPR_CONTROL_KAFKA_CONNECTION_CHECK_INTERVAL duration string нет 60 seconds Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений.
SOPR_CONTROL_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL duration string нет 5 minutes Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным.
SOPR_CONTROL_KAFKA_OBJECT_EVENT_TOPIC string нет entityObjectEvent Название кафка-топика для получения событий datamodel.
SOPR_CONTROL_KAFKA_OBJECT_EVENT_CONSUMER_GROUP string нет sopr-control_consumer_group Имя consumer-группы для чтения из кафка-топика событий datamodel. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
SOPR_CONTROL_KAFKA_OBJECT_EVENT_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика событий datamodel.
SOPR_CONTROL_KAFKA_COMMENT_EVENT_TOPIC string нет sedCommentEvents Название кафка-топика для получения событий sed-comment.
SOPR_CONTROL_KAFKA_COMMENT_EVENT_CONSUMER_GROUP string нет sopr-control_consumer_group Имя consumer-группы для чтения из кафка-топика событий sed-comment. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
SOPR_CONTROL_KAFKA_COMMENT_EVENT_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика событий sed-comment.
SOPR_CONTROL_KAFKA_USER_EVENT_TOPIC string нет entityObjectEvent Название кафка-топика для получения событий mon.
SOPR_CONTROL_KAFKA_USER_EVENT_CONSUMER_GROUP string нет sopr-control_consumer_group Имя consumer-группы для чтения из кафка-топика событий mon. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
SOPR_CONTROL_KAFKA_USER_EVENT_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика событий mon.
SOPR_CONTROL_CONSUL_ADDR url string нет http://localhost:8500 Адрес Сonsul.
SOPR_CONTROL_CONSUL_AUTH_USER string нет Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены.
SOPR_CONTROL_CONSUL_AUTH_PASSWORD string нет Пароль учетной записи Сonsul.
SOPR_CONTROL_TRACE_DURATION boolean нет false Признак необходимости трассировки выполнения команд
SOPR_CONTROL_DISCOVERABLE_ID string нет another_sopr_controls_service_instance ID сервиса в ServiceDiscovery
SOPR_CONTROL_DISCOVERABLE_NAME string нет sopr-control Имя сервиса в ServiceDiscovery
SOPR_CONTROL_DISCOVERABLE_HOST string да localhost Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service
SOPR_CONTROL_DISCOVERABLE_PORT int нет Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер.
SOPR_CONTROL_DISCOVERABLE_LIVETIME duration string нет 2 minutes Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым.
SOPR_CONTROL_DISCOVERABLE_HEALTHPASS string нет 1 minute Периодичность отправки health check в ServiceDiscovery
SOPR_CONTROL_SERVICE_TITLE string нет SOPR-control Название сервиса для отображения
SOPR_CONTROL_SERVICE_DESCRIPTION string нет Service SOPR-control Описание сервиса для отображения
SOPR_CONTROL_AKKA_HTTP_CLIENT_MAXCON int нет 512 Максимальное число одновременных исходящих HTTP-соединений
SOPR_CONTROL_AKKA_HTTP_CLIENT_MAXREQ int нет 1024 Максимальное число одновременных исходящих HTTP-запросов
SOPR_CONTROL_AKKA_HTTP_SERVER_MAXCON int нет 1024 Максимальное число одновременных входящих HTTP-соединений
SOPR_CONTROL_INTERNALCMD_ALLOW bool нет false Можно ли сервису отправлять внутрисистемные команды
SOPR_CONTROL_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD duration string нет 10 minutes Время кэширования данных по командам из CommandDiscovery
SOPR_CONTROL_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD duration string нет 30 seconds Время кэширования данных по сервисам из ServiceDiscovery
SOPR_CONTROL_DB_HOST string да Хост БД
SOPR_CONTROL_DB_PORT int да Порт БД
SOPR_CONTROL_DB_NAME string да Имя базы в БД
SOPR_CONTROL_DB_URL jdbc url string нет JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы.
SOPR_CONTROL_DB_USER string да Пользователь БД
SOPR_CONTROL_DB_PASSWORD string да Пароль пользователя БД
SOPR_CONTROL_DB_THREADS int нет 10 Количество потоков в пуле потоков для соединения с БД
SOPR_CONTROL_DB_QUEUE_SIZE int нет 300 Размер очереди для действий базы данных, которые не могут быть выполнены немедленно, когда все потоки заняты. За пределами этого значения новые действия немедленно завершаются неудачей
SOPR_CONTROL_DB_CONN_MAX int нет 10 Максимальное количество одновременных подключений к БД
SOPR_CONTROL_DB_CONN_TIMEOUT duration string нет 20 second Максимальное время ожидания ответа для соединения к БД. Если это время превышено, а соединение не становится доступным, будет брошено исключение SQLException. 1000 мс — минимальное значение.
SOPR_CONTROL_DB_ISOLATION string нет READ_COMMITTED Уровень изоляции транзакций для новых подключений. Допустимые значения: NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ, SERIALIZABLE.
SOPR_CONTROL_DB_READONLY boolean нет false Read-only SQL транзакция может изменять только временные таблицы. Этот параметр управляет статусом «только для чтения» по умолчанию для каждой новой транзакции.
SOPR_CONTROL_DB_CONN_MIN int нет = DB_THREADS Минимальное количество одновременных подключений к БД
SOPR_CONTROL_DB_VALIDATION_TIMEOUT duration string нет 1 seconds Максимальное время, в течение которого соединение будет проверяться на работоспособность. 1000 мс — минимальное значение.
SOPR_CONTROL_DB_IDLE_TIMEOUT duration string нет 10 minutes Максимальное время, в течение которого соединению разрешено простаивать в пуле. Значение 0 означает, что простаивающие соединения никогда не удаляются из пула.
SOPR_CONTROL_DB_MAX_LIFETIME duration string нет 30 minutes Максимальное время жизни соединения в пуле. Когда простаивающее соединение достигает этого времени ожидания, даже если оно недавно использовалось, оно будет удалено из пула. Значение 0 указывает на отсутствие максимального срока службы.
SOPR_CONTROL_DB_INITIALIZATION_FAIL_FAST string нет false Deprecated, начиная с версии Slick 3.3.0. Определяет, будет ли пул «быстро выходить из строя», если пул не может быть успешно заполнен начальными соединениями. Если соединения не могут быть созданы во время запуска пула, будет выдано исключение RuntimeException. Это свойство не имеет никакого эффекта, если minConnections равно 0.
SOPR_CONTROL_DB_LEAK_DETECTION_THRESHOLD int нет 0 Время, в течение которого соединение может находиться вне пула, прежде чем будет зарегистрировано сообщение, указывающее на возможную утечку соединения. Значение 0 означает, что обнаружение утечек отключено. Наименьшее приемлемое значение для включения обнаружения утечек составляет 10 с.
SOPR_CONTROL_DB_CONNECTION_TEST_QUERY string нет SELECT 1 Выражение, которое будет выполнено непосредственно перед получением соединения из пула для проверки того, что соединение с базой данных все еще активно. Оно зависит от базы данных и должно представлять собой запрос, требующий минимальной обработки базой данных (например, «VALUES 1»). Если этот параметр не установлен, вместо него используется метод JDBC4 Connection.isValid().
SOPR_CONTROL_DB_REGISTER_MBEANS boolean нет false Зарегистрированы ли JMX Management Beans («MBeans»)
SOPR_CONTROL_DB_AUTO_COMMIT boolean нет true Это свойство определяет то, как будут вести себя по умолчанию возвращаемые соединения относительно autocommit-а.
SOPR_CONTROL_DB_SCHEMA string нет public Устанавливает schema по умолчанию
SOPR_CONTROL_DB_ISOLATE_INTERNAL_QUERIES boolean нет false Определяет то, изолируются ли с помощью транзакций внутренние запросы пула(например запрос connection alive test). Свойство применяется только если autoCommit выключен.
SOPR_CONTROL_DB_INITIALIZATION_FAIL_TIMEOUT int нет 1 Работает, начиная с версии Slick 3.3.0. Определяет, будет ли пул «быстро выходить из строя», если пул не может быть успешно заполнен начальными соединениями. Любое положительное число считается числом миллисекунд для попытки получить начальное соединение;поток приложения будет заблокирован в течение этого периода. Если соединение не может быть получено до истечения этого времени,будет брошено исключение. Данный таймаут применяется после периода connectionTimeout. Если значение равно нулю (0),HikariCP попытается получить и проверить подключение. Если соединение получено,но проверка не пройдена, будет брошено исключение, и пул не будет запущен. Однако,если соединение не может быть получено, пул запустится,но последующие попытки получить соединение могут потерпеть неудачу.Значение меньше нуля пройдет любую первоначальную попытку подключения, и пул немедленно запустится,пытаясь получить соединения в фоновом режиме.Следовательно, последующие попытки получить соединение могут потерпеть неудачу.
SOPR_CONTROL_AUTHZFORCE_ADDR string нет http://localhost:8080/authzforce-ce Адрес AuthZforce server
SOPR_CONTROL_AUTHZFORCE_DOMAIN string нет Доступный DomainID в AuthZforce server
SOPR_CONTROL_LOG_LEVEL string нет INFO Общий уровень логирования в сервисе
SOPR_CONTROL_LOG_LEVEL_AKKA string нет INFO Уровень логирования для akka
SOPR_CONTROL_LOG_LEVEL_LIQUIBASE string нет INFO Уровень логирования для liquibase (миграции)
SOPR_CONTROL_LOG_LEVEL_APPLICATION string нет DEBUG Уровень логирования для application
SOPR_CONTROL_LOG_LEVEL_SLICK_STATEMENT string нет DEBUG Уровень логирования запросов, отправляемых slick в БД
SOPR_CONTROL_LOG_LEVEL_SLICK_BENCHMARK string нет OFF Уровень логирование бенчмарков выполнения запросов slick
SOPR_CONTROL_LOG_LEVEL_KAFKA_PRODUCER string нет WARN Уровень логирования конфига kafka-producer
SOPR_CONTROL_LOG_LEVEL_KAFKA_CONSUMER string нет WARN Уровень логирования конфига kafka-consumer
SOPR_CONTROL_LOG_LEVEL_HTTP_SERVER string нет WARN Уровень логирования HTTP-сервера
SOPR_CONTROL_LOG_LEVEL_AKKAHTTPSENDER string нет WARN Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена
SOPR_CONTROL_LOG_LEVEL_KAFKASENDER string нет WARN Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена
SOPR_CONTROL_LOG_LEVEL_VERDI_DISPATCHER string нет WARN Уровень логирования при отправки команд в Verdi Dispathcer. На уровне INFO логируется трассировка, если она включена
SOPR_CONTROL_LOG_LEVEL_COMMAND_LOGGER string нет WARN Уровень логирования для проверки состояний команд в сервисе статусов
SOPR_CONTROL_LOG_LEVEL_EVENT_HANDLERS string нет WARN Уровень логирования логики обработчиков топиков кафки с сообщениями от других сервисов (указанных в SOPR_CONTROL_KAFKA_OBJECT_EVENT_TOPIC, SOPR_CONTROL_KAFKA_USER_EVENT_TOPIC, SOPR_CONTROL_KAFKA_COMMENT_EVENT_TOPIC)
SOPR_CONTROL_LOG_OUTPUT string нет STDOUT Вывод лога
SOPR_CONTROL_SYSLOG_TYPE string нет UDP Тип передачи syslog
SOPR_CONTROL_LOGGING_SRC_IP string нет для параметра src в логах
SOPR_CONTROL_LOGGING_SRC_HOST string нет для параметра shost в логах
SOPR_CONTROL_LOGGING_DST_IP string нет для параметра dst в логах
SOPR_CONTROL_LOGGING_CEF_VER string нет 0 версия CEF
SOPR_CONTROL_LOG_LEVEL_NMD_HANDLERS string нет DEBUG Уровень логирования для обработчиков команд
SOPR_CONTROL_LOG_LEVEL_NMD_IMPORT_SERVICE string нет DEBUG Уровень логирования для сервиса импорта
SOPR_CONTROL_HTTP_CLIENT_CONNECTION_TIMEOUT duration string нет 5 seconds Максимальное время ожидания подключения http клиента
SOPR_CONTROL_HTTP_CLIENT_REQUEST_TIMEOUT duration string нет 5 seconds Максимальное время ожидания ответа для http клиента
SOPR_CONTROL_JOURNAL_MODE string нет WriteToJournal Режим журналирования Nestor. Допустимые значения: WriteToJournal (Отправка в сервис журналирования), WriteToTopic (Отправка события в очередь)
SOPR_CONTROL_JOURNAL_TOPIC string да, если переменная SOPR_CONTROL_JOURNAL_MODE = WriteToTopic "" Название очереди журналирования. Для режима WriteToJournal значение игнорируется.
SOPR_CONTROL_NOTIFICATION_SETTINGS_EMAIL_TOPIC string нет "email" Название очереди уведомлений на почту. Устанавливается, если на стенде есть префикс у названий очередей.
SOPR_CONTROL_NOTIFICATION_SETTINGS_PERSONAL_PAGE_TOPIC string нет "personal-page" Название очереди уведомлений в личный кабинет. Устанавливается, если на стенде есть префикс у названий очередей.
SOPR_CONTROL_NOTIFICATION_PP_DATE_FORMAT string нет "dd.MM.yyyy / HH:mm" Формат даты в уведомлениях личного кабинета
SOPR_CONTROL_ALEXANDRINA_CACHE_TTL duration string нет 5 minutes TTL кэша запрашиваемых данных из Alexandrina
SOPR_CONTROL_ALEXANDRINA_CACHE_MAX_SIZE int нет 300 Максимальный размер кэша запрашиваемых данных из Alexandrina
SOPR_CONTROL_ANALYTICS_MIGRATION_ENABLED boolean нет true Включить миграции сервиса аналитики
SOPR_CONTROL_NOTIFICATION_MIGRATION_ENABLED boolean нет true Включить миграции сервиса уведомлений
SOPR_CONTROL_INDEXATION_MIGRATION_ENABLED boolean нет true Включить миграции сервиса индексации
SOPR_CONTROL_FULLTEXTSEARCH_MIGRATION_ENABLED boolean нет true Включить миграции сервиса полнотекстового поиска
SOPR_CONTROL_AUTH_MIGRATION_ENABLED boolean нет true Включить миграции прав доступа (группы пользователей и политики)
SOPR_CONTROL_MIGRATION_TIMEOUT duration string нет 30 seconds Таймаут выполнения кастомной миграции
SOPR_CONTROL_JOB_TIME_ZONE string нет Europe/Moscow Часовой пояс, по которому выполняются cron процессы
SOPR_CONTROL_CLEAN_DELETED_ENTITIES_JOB_ENABLE boolean нет true Включить процесс очистки удаленных объектов
SOPR_CONTROL_CLEAN_DELETED_ENTITIES_JOB_CRON string нет 0 0 0 ? * SUN Cron-расписание процесса очистки удаленных объектов
SOPR_CONTROL_NOTIFICATION_FRONT_URL string нет "" URL адрес стенда системы, который будет указан в уведомлениях в ссылках на карточки сущностей в интерфейсе
SOPR_CONTROL_RELATION_BUFFER_DURATION duration string нет 20 seconds Максимальная допустимая задержка между событиями об удалении и создании связи

Список команд сервиса SOPR-control

В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.

Название команды Resource Actions
Генерация визуальных форм SoprControl GenerateUiForms

GenerateUiForms

Генерация визуальных форм.

Команда Путь
soprControl_GenerateUiForms -

Payload для команды

{
  "entityTypeId": "InformationalSystem",
  "formCodes": [
    "card",
    "createForm",
    "editForm",
    "list",
    "filterPanel"
  ]
}

Результат выполнения команды

{}

Модели сервиса sopr-control

GenerateUiFormsInput

Поле Тип Обязательное Описание
entityTypeId string да Код сущности
formCodes FormCode[] да Коды типов визуальных форм

FormCode

Возможные значения: