Package sender: сервис-утилита
Сервис предназначен для рассылки документов для ознакомления.
Команды могут приходить как по HTTP, так и через Kafka в топик package_sender_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
domain, в котором содержатся все доменные модели и их различные представления.commands, в котором содержатся все? что связано с командами, их описанием и обработчиками.infrastructure, в котором содержится описание взаимодействия с другими сервисами.storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу
localhost:5432/package-sender - Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - Добавлены необходимые переменные окружения:
- PACKAGE_SENDER_DB_HOST
- PACKAGE_SENDER_DB_PORT
- PACKAGE_SENDER_DB_NAME
- PACKAGE_SENDER_DB_USER
- PACKAGE_SENDER_DB_PASSWORD
Запуск из консоли с помощью 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_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_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 | |
| 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
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
| Название команды | Resource | Actions |
|---|---|---|
| Отправка пакета документов | PackageSender | SendDocumentPackage |
| Подтверждение получения документов | PackageSender | ConfirmDocuments |
| Список отправленных пакетов документов | PackageSender | ListTotalData |
| Получить отправленный пакет документов по id | PackageSender | ListTotalData |
| Список документов отправленного пакета | PackageSender | ListTotalData |
| Список получателей отправленного пакета | PackageSender | ListTotalData |
| Список документов отправленного пакета по получателю | PackageSender | ListTotalData |
| Список отправленных текущему пользователю пакетов документов | PackageSender | ListCurrentUserData |
| Отправка уведомления пользоваелю о необходимости ознакомления с пакетом документов | PackageSender | ResendUsersNotifications |
| Отправка уведомления пользоваелям о необходимости ознакомления с пакетом документов | PackageSender | ResendDocumentPackagesNotifications |
SendDocumentPackage
Отправить пакет документов.
- Input: SendDocumentPackageInput
- Output: {}
| Команда | Путь |
|---|---|
| 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
Подтвердить получение набора документов.
- Input: ConfirmDocumentsInput
- Output: {}
| Команда | Путь |
|---|---|
| packageSender_ConfirmDocuments | - |
Payload для команды
{
"sentDocumentPackageId": "3d100dbd-d9a4-4ca4-bace-60356991b9d9",
"sentDocumentIds": [
"3d100dbd-d9a4-4ca4-bace-60356991b9d9"
]
}
Результат выполнения команды
{}
ListSentDocumentPackages
Список отправленных пакетов документов.
- Input: Search
- Output: Page[GetSentDocumentPackagesOutDTO]
| Команда | Путь |
|---|---|
| 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.
- Input:
UUID - Output: GetSentDocumentPackagesOutDTO
| Команда | Путь |
|---|---|
| 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
Список получателей отправленного пакета.
- Input: ListSentDocumentPackageUsersInDTO
- Output: Page[ListSentDocumentPackageUsersOutDTO]
| Команда | Путь |
|---|---|
| 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
Список документов отправленного пакета по получателю.
- Input: ListUserDocumentsInDTO
- Output: Page[ListUserDocumentsOutDTO]
| Команда | Путь |
|---|---|
| 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
Список отправленных текущему пользователю пакетов документов.
- Input: Search
- Output: Page[ListUserSentDocumentPackagesOutDTO]
| Команда | Путь |
|---|---|
| packageSender_ListUserSentDocumentPackages | HTTP POST "packageSender_ListUserSentDocumentPackages" |
По умолчанию сортировка производится по полю 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",
"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
Отправка уведомления пользователю о необходимости ознакомления с пакетом.
- Input: ResendUserNotificationsInput
- Output: {}
| Команда | Путь |
|---|---|
| packageSender_ResendUsersNotifications | HTTP POST "packageSender_ResendUsersNotifications" |
Payload для команды
{
"sentDocumentPackageId": "3d100dbd-d9a4-4ca4-bace-60356991b9d9",
"sentDocumentPackageUserIds": [
"3d100dbd-d9a4-4ca4-bace-60356991b9d9"
]
}
Результат выполнения команды
{}
ResendDocumentPackagesNotifications
Отправка уведомления пользователям о необходимости ознакомления с пакетом.
- Input: List SentDocumentPackageId
- Output: {}
| Команда | Путь |
|---|---|
| packageSender_ResendDocumentPackagesNotifications | HTTP POST "packageSender_ResendDocumentPackagesNotifications" |
Payload для команды
[
"3d100dbd-d9a4-4ca4-bace-60356991b9d9"
]
Результат выполнения команды
{}
Модели сервиса 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 |
| 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 |
| 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 |
SAP-po-integration: сервис для интеграции с шиной данных полюса sap-po
Сервис получает НМД из СЭД.
Команды могут приходить как по HTTP, так и через Kafka в топик sap_po_integration_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
domain, в котором содержатся все доменные модели и их различные представления.commands, в котором содержатся все? что связано с командами, их описанием и обработчиками.infrastructure, в котором содержится описание взаимодействия с другими сервисами.storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу
localhost:5432/sap-po-integration - Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - Добавлены необходимые переменные окружения:
- SAP_PO_INTEGRATION_DB_HOST
- SAP_PO_INTEGRATION_DB_PORT
- SAP_PO_INTEGRATION_DB_NAME
- SAP_PO_INTEGRATION_DB_USER
- SAP_PO_INTEGRATION_DB_PASSWORD
Запуск из консоли с помощью 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_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
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованы команды:
- СЭД - Обработать поток данных MasterNmds
- СЭД - Обработать поток данных Nmds
- СЭД - Скачать файл НМД
- АСУП - Обработать поток данных Departments
- АСУП - Обработать поток данных FunctionBlocks
- АСУП - Обработать поток данных Organizations
- АСУП - Обработать поток данных Persons
- АСУП - Обработать поток данных StaffPositions
- СПД - Обработать поток данных Category
- СПД - Обработать поток данных Family
- СПД - Обработать поток данных Function
- СПД - Обработать поток данных ManagementVertical
- СПД - Обработать поток данных Profile
- СПД - Обработать поток данных SubFamily
- СПД - Обработать поток данных Task
- КСУ НСИ - Обработать поток данных BusinessGlossary
- КСУ НСИ - Обработать поток данных InformationalSystem
- КСУ НСИ - Обработать поток данных ProcessModel
- КСУ НСИ - Обработать поток данных ISCondition
MasterNmdHandle
Принимает поток из главных NMD сущностей, имеют первый приоритет.
- Input: MasterNmdHandleRequest
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_MasterNmdHandle | HTTP POST "/api/sed/v1/master-nmds" |
Payload для команды
{
"masterNMD": [
{
"guid": "00001111-2222-3333-4444-555566667777",
"<MasterNmdField1>": "..."
}
]
}
Результат выполнения команды
{
"saved": 1
}
RegistryNmdHandle
Принимает поток из NMD сущностей.
- Input: RegistryNmdHandleRequest
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_RegistryNmdHandle | HTTP POST "/api/sed/v1/nmds" |
Payload для команды
{
"registerNMD": [
{
"guid": "00001111-2222-3333-4444-555566667777",
"<NmdField1>": "..."
}
]
}
Результат выполнения команды
{
"saved": 1
}
NmdFileHandle
Получить файл по ID
- Input: UUID
- Output: FileAttachment
| Команда | Путь |
|---|---|
| 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
Принимает поток данных подразделений из АСУП.
- Input: DepartmentData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_DepartmentRawHandle | HTTP POST "/api/asup/v1/departments" |
Payload для команды
[
{
"guid": "00001111-2222-3333-4444-555566667777",
"<DepartmentField>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
FunctionBlockRawHandle
Принимает поток данных функциональных блоков из АСУП.
- Input: FunctionBlockData
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_FunctionBlockRawHandle | HTTP POST "/api/asup/v1/function-blocks" |
Payload для команды
[
{
"guid": "00001111-2222-3333-4444-555566667777",
"<FunctionBlockField>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
OrganizationRawHandle
Принимает поток данных организаций из АСУП.
- Input: OrganizationData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_OrganizationRawHandle | HTTP POST "/api/asup/v1/organizations" |
Payload для команды
[
{
"guid": "00001111-2222-3333-4444-555566667777",
"<OrganizationField>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
PersonRawHandle
Принимает поток данных сотрудников из АСУП.
- Input: PersonData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_PersonRawHandle | HTTP POST "/api/asup/v1/persons" |
Payload для команды
[
{
"guid": "00001111-2222-3333-4444-555566667777",
"<PersonField>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
StaffPositionRawHandle
Принимает поток данных штатное расписание из АСУП.
- Input: StaffPositionData
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_StaffPositionRawHandle | HTTP POST "/api/asup/v1/staff-positions" |
Payload для команды
[
{
"guid": "00001111-2222-3333-4444-555566667777",
"<StaffPositionField>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
CategoryRawHandle
Принимает поток данных Category из СПД.
- Input: CategoryData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_CategoryRawHandle | HTTP POST "/api/spd/v1/categories" |
Payload для команды
[
{
"categoryGuid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
FamilyRawHandle
Принимает поток данных Family из СПД.
- Input: FamilyData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_FamilyRawHandle | HTTP POST "/api/spd/v1/family" |
Payload для команды
[
{
"familyGuid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
FunctionRawHandle
Принимает поток данных Function из СПД.
- Input: FunctionData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_FunctionRawHandle | HTTP POST "/api/spd/v1/functions" |
Payload для команды
[
{
"functionGuid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
ManagementVerticalRawHandle
Принимает поток данных ManagementVertical из СПД.
- Input: ManagementVerticalData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_ManagementVerticalRawHandle | HTTP POST "/api/spd/v1/managment-verticals" |
Payload для команды
[
{
"managementVerticalGuid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
ProfileRawHandle
Принимает поток данных Profile из СПД.
- Input: ProfileData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_ProfileRawHandle | HTTP POST "/api/spd/v1/profiles" |
Payload для команды
[
{
"guid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
SubFamilyRawHandle
Принимает поток данных SubFamily из СПД.
- Input: SubFamilyData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_SubFamilyRawHandle | HTTP POST "/api/spd/v1/sub-family" |
Payload для команды
[
{
"subfamilyGuid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
TaskRawHandle
Принимает поток данных Task из СПД.
- Input: TaskData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_TaskRawHandle | HTTP POST "/api/spd/v1/tasks" |
Payload для команды
[
{
"taskGuid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
BusinessGlossaryRawHandle
Принимает поток данных бизнес-глоссария из КСУ НСИ.
- Input: BusinessGlossaryData
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_BusinessGlossaryRawHandle | HTTP POST "/api/ksu-nsi/v1/business-glossary" |
Payload для команды
{
"guid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
Результат выполнения команды
{
"saved": 1
}
InformationalSystemRawHandle
Принимает поток данных информационных систем из КСУ НСИ.
- Input: InformationalSystemData[]
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_InformationalSystemRawHandle | HTTP POST "/api/ksu-nsi/v1/informational-systems" |
Payload для команды
[
{
"guid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
]
Результат выполнения команды
{
"saved": 1
}
ProcessModelRawHandle
Принимает поток данных процессной модели из КСУ НСИ.
- Input: ProcessModelData
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_ProcessModelRawHandle | HTTP POST "/api/ksu-nsi/v1/business-processes" |
Payload для команды
{
"guid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
Результат выполнения команды
{
"saved": 1
}
ISConditionRawHandle
Принимает поток данных состояний информационных систем из КСУ НСИ.
- Input: ISConditionData
- Output: SavedResponse
| Команда | Путь |
|---|---|
| sappointegration_http_ISConditionRawHandle | HTTP POST "/api/ksu-nsi/v1/informational-system-conditions" |
Payload для команды
{
"guid": "00001111-2222-3333-4444-555566667777",
"<Field>": "..."
}
Результат выполнения команды
{
"saved": 1
}
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 | да | Расширение файла |
DepartmentData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (АСУП) |
| ? | ? | ? | Прочие невалдируемые поля |
OrganizationData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (АСУП) |
| ? | ? | ? | Прочие невалдируемые поля |
StaffPositionData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (АСУП) |
| ? | ? | ? | Прочие невалдируемые поля |
PersonData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| emplGuid | UUID | да | Внешний идентификатор (АСУП) |
| ? | ? | ? | Прочие невалдируемые поля |
FunctionBlockData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (АСУП) |
| ? | ? | ? | Прочие невалдируемые поля |
CategoryData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (СПД) |
| ? | ? | ? | Прочие невалдируемые поля |
FamilyData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (СПД) |
| ? | ? | ? | Прочие невалдируемые поля |
FunctionData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (СПД) |
| ? | ? | ? | Прочие невалдируемые поля |
ManagementVerticalData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (СПД) |
| ? | ? | ? | Прочие невалдируемые поля |
ProfileData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (СПД) |
| ? | ? | ? | Прочие невалдируемые поля |
SubFamilyData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (СПД) |
| ? | ? | ? | Прочие невалдируемые поля |
TaskData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| taskGuid | UUID | да | Внешний идентификатор (СПД) |
| ? | ? | ? | Прочие невалдируемые поля |
BusinessGlossaryData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (КСУ НСИ) |
| ? | ? | ? | Прочие невалдируемые поля |
InformationalSystemData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (КСУ НСИ) |
| ? | ? | ? | Прочие невалдируемые поля |
ProcessModelData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (КСУ НСИ) |
| ? | ? | ? | Прочие невалдируемые поля |
ISConditionData
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| guid | UUID | да | Внешний идентификатор (КСУ НСИ) |
| ? | ? | ? | Прочие невалдируемые поля |
SavedResponse
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| saved | Int | да | Количество сохраненных объектов |
SOPR-control: сервис-утилита
Сервис содержит в себе мигратор для сущностей в другие сервисы.
А также обработчик событий EntityObjectEvent.
Команд пока нет, но возможность обработки предусмотрена.
Команды могут приходить как по HTTP, так и через Kafka в топик sopr_control_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
domain, в котором содержатся все доменные модели и их различные представления.commands, в котором содержатся все? что связано с командами, их описанием и обработчиками.infrastructure, в котором содержится описание взаимодействия с другими сервисами.storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу
localhost:5432/sopr-control - Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - Добавлены необходимые переменные окружения:
- SOPR_CONTROL_DB_HOST
- SOPR_CONTROL_DB_PORT
- SOPR_CONTROL_DB_NAME
- SOPR_CONTROL_DB_USER
- SOPR_CONTROL_DB_PASSWORD
Запуск из консоли с помощью 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_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_TEAM_ROUTES | string | нет | TRACE | Уровень логирования для роутов /team |
| 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_NOTIFICATION_INF_SYSTEM_STATUS_UPDATE_GROUP | string | нет | "DataManager" | Идентификатор группы пользователей, которым должно отправляться уведомление при изменении статуса Информационной Системы |
| SOPR_CONTROL_ANALYTICS_MIGRATION_ENABLED | boolean | нет | true | Включить миграции сервиса аналитики |
| SOPR_CONTROL_NOTIFICATION_MIGRATION_ENABLED | boolean | нет | true | Включить миграции сервиса уведомлений |
| 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
Генерация визуальных форм.
- Input: GenerateUiFormsInput
- Output: {}
| Команда | Путь |
|---|---|
| soprControl_GenerateUiForms | - |
Payload для команды
{
"entityTypeId": "InformationalSystem",
"formCodes": [
"card",
"createForm",
"editForm",
"list",
"filterPanel"
]
}
Результат выполнения команды
{}
Модели сервиса sopr-control
GenerateUiFormsInput
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| entityTypeId | string | да | Код сущности |
| formCodes | FormCode[] | да | Коды типов визуальных форм |
FormCode
Возможные значения:
- card - Карточка объекта
- createForm - Форма создания
- editForm - Форма редактирования
- list - Реестр
- filterPanel - Панель фильтров в реестре