СЭД ЦНМД
Описание команд всех сервисов, которые входят в состав СЭД ЦНМД.
cnmd-api-adapter
Api-адаптер для ЦНМД
Сервис принимает команды по HTTP.
Сервис разбит на несколько модулей, в виде sbt проектов:
domain, в котором содержатся все доменные модели и их различные представления.commands, в котором содержатся все команды, их описание и обработчики: kafka-handlers & http-routes.service, содержит сервисы бизнес логии, которые определяют правила взаимодействия компонентов между собой.boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск сервиса cnmd-api-adapter
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - ЦНМД готов принимать запросы
- Добавлены необходимые переменные окружения:
- CNMD_API_ADAPTER_CNMD_AUTH_PASSWORD
- CNMD_API_ADAPTER_CNMD_AUTH_USER
- CNMD_API_ADAPTER_KAFKA_COMMANDEVENT_TOPIC
- CNMD_API_ADAPTER_CNMD_ADDR
- CNMD_API_ADAPTER_CNMD_PREFIX
Запуск из консоли с помощью SBT
CNMD_API_ADAPTER_CNMD_AUTH_PASSWORD=password CNMD_API_ADAPTER_CNMD_AUTH_USER=user CNMD_API_ADAPTER_KAFKA_COMMANDEVENT_TOPIC=commandStatus sbt boot/run
Список переменных окружения сервиса cnmd-api-adapter
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| CNMD_API_ADAPTER_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| CNMD_API_ADAPTER_HTTP_PORT | int | нет | 8023 | Порт, на котором слушает HTTP-сервер |
| CNMD_API_ADAPTER_KAFKA_SERVERS | string | да** | "localhost:9092" | Адрес Kafka |
| CNMD_API_ADAPTER_KAFKA_TOPIC | string | нет | "cnmd_api_adapter_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| CNMD_API_ADAPTER_KAFKA_CONSUMER_GROUP | string | нет | "cnmd_api_adapter_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| CNMD_API_ADAPTER_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| CNMD_API_ADAPTER_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| CNMD_API_ADAPTER_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| CNMD_API_ADAPTER_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| CNMD_API_ADAPTER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах CNMD_API_ADAPTER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| CNMD_API_ADAPTER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который CNMD_API_ADAPTER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| CNMD_API_ADAPTER_KAFKA_COMMANDEVENT_TOPIC | string | да** | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| CNMD_API_ADAPTER_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| CNMD_API_ADAPTER_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| CNMD_API_ADAPTER_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| CNMD_API_ADAPTER_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| CNMD_API_ADAPTER_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| CNMD_API_ADAPTER_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к харнилищу сертификатов. |
| CNMD_API_ADAPTER_KAFKA_AUTH_MODE | string | нет | "static" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| CNMD_API_ADAPTER_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]. Переменная соответствует полю authConfig из KafkaAuthSettings. |
| CNMD_API_ADAPTER_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| CNMD_API_ADAPTER_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| CNMD_API_ADAPTER_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| CNMD_API_ADAPTER_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| CNMD_API_ADAPTER_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| CNMD_API_ADAPTER_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| CNMD_API_ADAPTER_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| CNMD_API_ADAPTER_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| CNMD_API_ADAPTER_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| CNMD_API_ADAPTER_DISCOVERABLE_ID | string | нет | "another_CNMD_API_ADAPTER _service_instance" | ID сервиса в ServiceDiscovery |
| CNMD_API_ADAPTER_DISCOVERABLE_NAME | string | нет | "cnmdApiAdapter" | Имя сервиса в ServiceDiscovery |
| CNMD_API_ADAPTER_DISCOVERABLE_HOST | string | да** | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| CNMD_API_ADAPTER_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| CNMD_API_ADAPTER_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| CNMD_API_ADAPTER_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| CNMD_API_ADAPTER_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| CNMD_API_ADAPTER_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| CNMD_API_ADAPTER_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| CNMD_API_ADAPTER_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| CNMD_API_ADAPTER_HEALTH_TIMEOUT | duration string | нет | 5 seconds | Максимальное время ожидания ответа health check |
| CNMD_API_ADAPTER_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| CNMD_API_ADAPTER_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| CNMD_API_ADAPTER_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| CNMD_API_ADAPTER_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| CNMD_API_ADAPTER_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| CNMD_API_ADAPTER_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| CNMD_API_ADAPTER_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| CNMD_API_ADAPTER_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| CNMD_API_ADAPTER_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| CNMD_API_ADAPTER_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| CNMD_API_ADAPTER_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| CNMD_API_ADAPTER_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| CNMD_API_ADAPTER_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| CNMD_API_ADAPTER_CNMD_AUTH_PASSWORD | string | да** | Пароль для подключения к ЦНМД | |
| CNMD_API_ADAPTER_CNMD_AUTH_USER | string | да** | Пользователь для подключения к ЦНМД | |
| CNMD_API_ADAPTER_CNMD_ADDR | string | да** | "http://localhost:9000" | Адрес ЦНМД |
| CNMD_API_ADAPTER_CNMD_PREFIX | string | да** | "/api/v1/export/" | Путь для экспорта их ЦНМД |
| CNMD_API_ADAPTER_CNMD_TIMEOUT | duration string | да** | 3 seconds | Время ожидания ответа от ЦНМД |
| CNMD_API_ADAPTER_CNMD_STRICT_TIMEOUT | duration string | да** | 30 seconds | Время преобразования в strict entity |
| CNMD_API_ADAPTER_LOG_FORMAT | string | нет | DEFAULT | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| CNMD_API_ADAPTER_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| CNMD_API_ADAPTER_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| CNMD_API_ADAPTER_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| CNMD_API_ADAPTER_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| CNMD_API_ADAPTER_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| CNMD_API_ADAPTER_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| CNMD_API_ADAPTER_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| CNMD_API_ADAPTER_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| CNMD_API_ADAPTER_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
Список команд сервиса cnmd-api-adapter
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
- Категории бизнес процессов
- Дочерние бизнес процессы
- Дочерние орг. бизнес процессы
- Документы орг. бизнес процесса
- Документы орг. бизнес процессов
- Орг. бизнес процесс
- Документ
- Орг. бизнес процесс владелец
- Список ID орг. БП с ID орг. БП владельца
- Проверка БП на совпадение по code и title
- Список документов совпадающих по запрошенным code и title
- Список кодов и названий бизнес процессов
- Список владельцев орг. БП
- Список документов для рекомендаций
BusinessProcessesRegistry
На входе пустое тело или ListFilter
{
"items": [
{
"key": "status",
"value": "actual"
},
{
"key": "sourceSystem",
"value": "cc"
},
{
"key": "parentProcessIn",
"value": "true"
},
{
"key": "documentBindToKT",
"value": "true"
}
]
}
На выходе ListWithTotalInt[BusinessProcessMinimalDto]
{
"items": [
{
"id": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"code": "00",
"title": "",
"orgBpCount": 4,
"hasChildren": true,
"descendentsCount": 55,
"isMatched": true,
"level": 0
},
{
"id": "6e7d8918-32dc-4911-bdd1-4f791bfd1496",
"code": "00",
"title": "Дубль бизнес-процесса (категория)",
"orgBpCount": 1,
"hasChildren": true,
"descendentsCount": 0,
"isMatched": true,
"level": 0
}
],
"total": 2
}
Возвращает категории бизнес процессов.
- Input: Option[ListFilter]
- Output: ListWithTotalInt[BusinessProcessMinimalDto]
| Команда | Путь |
|---|---|
| cnmd_businessProcessesRegistry | HTTP POST "/v1/business-tree/business-processes-registry" |
BusinessProcessesRegistryChildren
На входе ListFilterWithId
{
"id": "27fa53b1-e6e8-49dd-b0ff-6f892031640e",
"listFilter": {
"items": [
{
"key": "status",
"value": "actual"
},
{
"key": "sourceSystem",
"value": "cc"
},
{
"key": "parentProcessIn",
"value": "true"
},
{
"key": "documentBindToKT",
"value": "true"
}
]
}
}
На выходе ListWithTotalInt[BusinessProcessMinimalDto]
{
"items": [
{
"id": "42860738-b62e-43fd-a4ba-a0227e489315",
"code": "00.01",
"title": "Планирование в области процессного управления и стандартизации",
"parentBpId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"orgBpCount": 2,
"hasChildren": true,
"descendentsCount": 8,
"isMatched": true,
"level": 1
},
{
"id": "277ca4cc-9dd7-41a5-97da-db8f66b98810",
"code": "00.02",
"title": "",
"parentBpId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"orgBpCount": 2,
"hasChildren": true,
"descendentsCount": 1,
"isMatched": true,
"level": 1
}
],
"total": 2
}
Возвращает список дочерних бизнес процессов по id родителя.
- Input: ListFilterWithId
- Output: ListWithTotalInt[BusinessProcessMinimalDto]
| Команда | Путь |
|---|---|
| cnmd_businessProcessesRegistryChildren | HTTP POST "/v1/business-tree/business-processes-registry-children" |
OrgBusinessProcessesRegistry
На входе ListFilterWithId
{
"id": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"listFilter": {
"items": [
{
"key": "status",
"value": "actual"
},
{
"key": "sourceSystem",
"value": "cc"
},
{
"key": "parentProcessIn",
"value": "true"
},
{
"key": "documentBindToKT",
"value": "true"
}
]
}
}
На выходе List[OrgBusinessProcessMinimalDto]
[
{
"id": "acec06f2-1ea2-48b2-9cbe-bbdaf8999d20",
"bpId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"status": "actual",
"code": "00",
"title": "Управление качеством и системой стандартизации",
"organization": "НТЦ",
"bpType": "Category"
},
{
"id": "445bb8ae-91f5-4c12-9e79-70f132a0a83e",
"bpId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"status": "actual",
"code": "00",
"title": "",
"organization": "Хантос",
"bpType": "Category"
},
{
"id": "11f7328e-b62c-40e8-8d52-5b8605002e3f",
"bpId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"status": "actual",
"code": "00",
"title": "Управление бизнес-процессами и стандартизацией",
"organization": "ПГПН",
"bpType": "Category"
},
{
"id": "6b5e8a0d-0985-44f7-bbea-e2d0ed00d6be",
"bpId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"status": "actual",
"code": "00",
"title": "Управление бизнес-процессами и стандартизацией",
"organization": "Аэро",
"bpType": "Category"
}
]
Возвращает список дочерних орг. бизнес процессов по id родителя.
- Input: ListFilterWithId
- Output: List[OrgBusinessProcessMinimalDto]
| Команда | Путь |
|---|---|
| cnmd_orgBusinessProcessesRegistry | HTTP POST "/v1/business-tree/org-business-processes-registry" |
OrgBusinessProcessDocuments
На входе id и опционально фильтр по плановым записям
{
"id": "6b5e8a0d-0985-44f7-bbea-e2d0ed00d6be",
"planned": "true"
}
На выходе List[DocumentMinimalDto]
[
{
"id": "218d64cb-dd33-4925-9ee1-8e1890fa0183",
"code": "М-12.02.06-09",
"title": "Требования ИБ к процессу ведения разработок в ИС Oracle Hyperion",
"version": "1.0",
"kind": "NMDKind_04",
"status": "actual",
"author": {
"id": "3317c68b-0c14-4cd8-8cb0-86c9469de5ab",
"firstName": "Михаил",
"middleName": "Сергеевич",
"lastName": "Коломейцев"
}
},
{
"id": "57ee4394-c571-4a69-b0b4-0021463a7a50",
"code": "М-12.02.06-08",
"title": "Требования к проведению мониторинга в ИС Oracle",
"version": "1.0",
"kind": "NMDKind_04",
"status": "actual",
"author": {
"id": "3317c68b-0c14-4cd8-8cb0-86c9469de5ab",
"firstName": "Михаил",
"middleName": "Сергеевич",
"lastName": "Коломейцев"
},
"planningApprovalDate": 1671001768772
}
]
Возвращает список документов орг. бизнес процесса по его id.
- Input: { id: String, planned: Option[Boolean] }
- Output: List[DocumentMinimalDto]
| Команда | Путь |
|---|---|
| cnmd_orgBusinessProcessDocuments | HTTP POST "/v1/business-tree/org-business-process-documents" |
OrgBusinessProcessesDocuments
На входе список id и опционально фильтр по плановым записям FindObpsDocs
{
"ids": [
"6b5e8a0d-0985-44f7-bbea-e2d0ed00d6be"
],
"planned": "true"
}
На выходе List[ObpsDocs]
[
{
"id": "6b5e8a0d-0985-44f7-bbea-e2d0ed00d6be",
"docs": [
{
"id": "218d64cb-dd33-4925-9ee1-8e1890fa0183",
"code": "М-12.02.06-09",
"title": "Требования ИБ к процессу ведения разработок в ИС Oracle Hyperion",
"version": "1.0",
"kind": "NMDKind_04",
"status": "actual",
"author": {
"id": "3317c68b-0c14-4cd8-8cb0-86c9469de5ab",
"firstName": "Михаил",
"middleName": "Сергеевич",
"lastName": "Коломейцев"
}
},
{
"id": "57ee4394-c571-4a69-b0b4-0021463a7a50",
"code": "М-12.02.06-08",
"title": "Требования к проведению мониторинга в ИС Oracle",
"version": "1.0",
"kind": "NMDKind_04",
"status": "actual",
"author": {
"id": "3317c68b-0c14-4cd8-8cb0-86c9469de5ab",
"firstName": "Михаил",
"middleName": "Сергеевич",
"lastName": "Коломейцев"
}
}
]
}
]
Возвращает список документов орг. бизнес процессов по его id.
- Input: FindObpsDocs
- Output: List[ObpsDocs]
| Команда | Путь |
|---|---|
| cnmd_orgBusinessProcessesDocuments | HTTP POST "/v1/business-tree/org-business-processes-documents" |
OrgBusinessProcess
На входе Seq[UUID]
[
"6b5e8a0d-0985-44f7-bbea-e2d0ed00d6be",
"acec06f2-1ea2-48b2-9cbe-bbdaf8999d20"
]
На выходе Seq[OrgBusinessProcessDto]
[
{
"id": "6b5e8a0d-0985-44f7-bbea-e2d0ed00d6be",
"ancestorProcesses": [],
"code": "00",
"bpType": "Category",
"title": "Управление бизнес-процессами и стандартизацией",
"processKind": "BusinessProcessKind_1",
"processType": "BusinessProcessType_1",
"simpleDuplication": true,
"visaLaw": null,
"organizationOwner": {
"id": "41354e99-1ac8-4750-8909-d839373a7571",
"shortTitle": "ПГПН",
"title": "ПАО Газпром нефть"
},
"owner": {
"id": "a02f5bd4-7b9d-472c-9d81-9809e9a1e6b6",
"firstName": "Кирилл",
"middleName": "Альбертович",
"lastName": "Кравченко",
"post": "Заместитель Генерального директора по организационным вопросам"
},
"manager": {
"id": "dbd73227-255e-4ee1-9041-2f244bb04a67",
"firstName": "Рустем",
"middleName": "Мансурович",
"lastName": "Хасанов",
"post": "Заместитель генерального директора по работе с персоналом и организационному развитию"
},
"methConfirm": [
{
"id": "1b747415-afd2-4d61-b239-c39de865d3db",
"firstName": "Анна",
"middleName": "Владимировна",
"lastName": "Макарова",
"post": "Оператор заправочных станций"
}
],
"standardGroupRUS": [
{
"id": "00064fa5-d35e-47cb-9083-f385910b7e3d",
"firstName": "Кристина",
"middleName": "Сергеевна",
"lastName": "Сергеева",
"post": "Оператор заправочных станций 3 разряда"
}
],
"standardGroupRUSLocal": [
{
"id": "00011334-0988-4b61-9300-1e9891805880",
"firstName": "Надежда",
"middleName": "Александровна",
"lastName": "Сивицкая",
"post": "Ведущий бухгалтер"
}
],
"cKPersons": [
{
"id": "0002ab9b-d69d-46ab-9433-14e3359f7aee",
"firstName": "Максим",
"middleName": "Александрович",
"lastName": "Шапкарин",
"post": "Заместитель начальника управления"
}
],
"otvISAP": null,
"shortDescription_Plain": "Краткое описание категории ",
"target": null,
"metrics": null,
"risks": null,
"processIn": null,
"processOut": null,
"borderLine": null,
"processMembers": null,
"stages": null,
"bProcessAroundID": [
{
"id": "757506db-7822-433a-8928-28c22b3dc4bd",
"title": "Переработка нефти, логистика нефти и нефтепродуктов, реализация нефти и нефтепродуктов",
"code": "02"
},
{
"id": "2497f4fe-d745-403c-8a42-1cb2515891b8",
"title": "Управление внутренними и внешними взаимоотношениями",
"code": "09"
},
{
"id": "8261770b-e876-48e0-b14a-d78abc4b7026",
"title": "Управление проектами",
"code": "06"
},
{
"id": "d541122f-8e2f-494e-87b5-5041ef626454",
"title": "Управление информационными технологиями, автоматизацией и телекоммуникациями",
"code": "66"
},
{
"id": "8e58bf7a-df0f-4190-8ee6-0032a7f93829",
"title": "Управление безопасностью",
"code": "12"
}
],
"bProcessAround2ID": [
{
"id": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"title": "Управление бизнес-процессами и стандартизацией",
"code": "00"
},
{
"id": "49c28615-6c01-414c-9d5a-9dd0d8cb3f1e",
"title": "Стратегическое планирование",
"code": "07"
}
],
"statusSVK": null,
"automation": null,
"dzoList": [],
"organization": {
"id": "edc4b398-5e05-4fd9-a402-7de0278bfc3f",
"shortTitle": "Аэро",
"title": "АО \"Газпромнефть-Аэро\""
}
},
{
"id": "acec06f2-1ea2-48b2-9cbe-bbdaf8999d20",
"ancestorProcesses": [],
"code": "00",
"bpType": "Category",
"title": "Управление качеством и системой стандартизации",
"processKind": "BusinessProcessKind_1",
"processType": "BusinessProcessType_1",
"simpleDuplication": null,
"visaLaw": null,
"organizationOwner": {
"id": "3e110603-eef7-4bba-949a-9878b09b0a56",
"shortTitle": "НТЦ",
"title": "ООО \"Газпромнефть НТЦ\""
},
"owner": {
"id": "4b8fd9e6-8177-42d4-85c5-e960ae96d732",
"firstName": "Виталий",
"middleName": "Витальевич",
"lastName": "Баранов",
"post": "Советник заместителя генерального директора по организационным вопросам",
"email": "Baranov.VV@gmail.com"
},
"manager": null,
"methConfirm": [],
"standardGroupRUS": [],
"standardGroupRUSLocal": [],
"cKPersons": [],
"otvISAP": null,
"shortDescription_Plain": null,
"target": null,
"metrics": null,
"risks": null,
"processIn": null,
"processOut": null,
"borderLine": null,
"processMembers": null,
"stages": null,
"bProcessAroundID": [],
"bProcessAround2ID": [],
"statusSVK": null,
"automation": null,
"dzoList": [],
"organization": {
"id": "3e110603-eef7-4bba-949a-9878b09b0a56",
"shortTitle": "НТЦ",
"title": "ООО \"Газпромнефть НТЦ\""
}
}
]
Возвращает информацию об орг. бизнес процессах.
- Input: Seq[UUID]
- Output: Seq[OrgBusinessProcessDto]
| Команда | Путь |
|---|---|
| cnmd_orgBusinessProcess | Kafka Topic "cnmd_api_adapter_commands" |
Document
На входе Seq[UUID]
[
"aa270135-40ae-47e2-9168-7b8e44e34a0c"
]
На выходе Seq[DocumentDto]
[
{
"id": "67c4c3ba-03f5-40ea-b9c2-164acb488597",
"orgBusinessProcess": "6b5e8a0d-0985-44f7-bbea-e2d0ed00d6be",
"owner": {
"id": "a02f5bd4-7b9d-472c-9d81-9809e9a1e6b6",
"firstName": "Кирилл",
"middleName": "Альбертович",
"lastName": "Кравченко",
"post": "Заместитель Генерального директора по организационным вопросам",
"email": "Kravchenko.KA@gmail.com"
},
"processKind": "BusinessProcessKind_1",
"manager": {
"id": "dbd73227-255e-4ee1-9041-2f244bb04a67",
"firstName": "Рустем",
"middleName": "Мансурович",
"lastName": "Хасанов",
"post": "Заместитель генерального директора по работе с персоналом и организационному развитию"
},
"simpleDuplication": true,
"ownerOrganizationApproval": true,
"nmdKind": "NMDKind_07",
"title": "Управление качеством и системой стандартизации",
"documentCode": "ПК-00",
"author": {
"id": "a633d6cc-b2c1-4101-98ef-433ebcf7055b",
"firstName": "Наталья",
"middleName": "Александровна",
"lastName": "Лупу",
"post": "Отдел стандартизации и развития интегрированных систем менеджмента (Лупу Н.А.)"
},
"number": "1.0",
"developmentType": "DevelopmentType_3",
"dzoList": [
"df2ca6f8-0797-401a-aa06-04fb8be85d9b",
"6d458f99-3ab9-4f38-9a46-a05fa2089e3f",
"0195adb4-f476-40c0-8cc1-872bb068d6f9",
"e7d51108-a13b-4fb6-b02a-17e0c14349b3",
"09cdba14-79d7-431b-b426-1b09ec548750",
"0ed805f0-24c6-4b13-8a93-86e760fe3e04",
"53fa9cfe-7937-4ddd-a682-03a7a1ca9cd4",
"c12d0174-ae31-4371-b407-22fdab910c7a",
"940cc725-5c01-42ee-aa23-d13310128647",
"8eecca66-72ea-448d-8c25-ae9c304100b3"
],
"planningApprovalDate": 1692001808743
}
]
Возвращает информацию о документах.
- Input: Seq[UUID]
- Output: Seq[DocumentDto]
| Команда | Путь |
|---|---|
| cnmd_document | HTTP POST "/v1/business-tree/document" |
BusinessProcessOwnerMatch
На входе id
{
"id": "6b5e8a0d-0985-44f7-bbea-e2d0ed00d6be"
}
На выходе OrgBusinessProcessDto
{
"id": "67c4c3ba-03f5-40ea-b9c2-164acb488597",
"orgBusinessProcess": "6b5e8a0d-0985-44f7-bbea-e2d0ed00d6be",
"owner": {
"id": "a02f5bd4-7b9d-472c-9d81-9809e9a1e6b6",
"firstName": "Кирилл",
"middleName": "Альбертович",
"lastName": "Кравченко",
"post": "Заместитель Генерального директора по организационным вопросам",
"email": "Kravchenko.KA@gmail.com"
},
"processKind": "BusinessProcessKind_1",
"processType": "BusinessProcessType_1",
"manager": {
"id": "dbd73227-255e-4ee1-9041-2f244bb04a67",
"firstName": "Рустем",
"middleName": "Мансурович",
"lastName": "Хасанов",
"post": "Заместитель генерального директора по работе с персоналом и организационному развитию"
},
"simpleDuplication": true,
"nmdKind": "NMDKind_07",
"title": "Управление качеством и системой стандартизации",
"documentCode": "ПК-00",
"author": {
"id": "a633d6cc-b2c1-4101-98ef-433ebcf7055b",
"firstName": "Наталья",
"middleName": "Александровна",
"lastName": "Лупу",
"post": "Отдел стандартизации и развития интегрированных систем менеджмента (Лупу Н.А.)"
},
"number": "1.0",
"developmentType": "DevelopmentType_3"
}
Возвращает орг. бизнес процесс владельца по id орг. бизнес процесса участника.
- Input: { id: String }
- Output: OrgBusinessProcessDto
| Команда | Путь |
|---|---|
| cnmd_businessProcessOwnerMatch | HTTP POST "/v1/business-tree/business-process-owner-match" |
OrgBusinessProcessWithOwner
На входе список ID орг. бизнес-процессов
[
"1f470e0c-ff89-4bc8-9664-2a1f284987d0",
"8c7622b9-edc3-4203-97d9-3b2eac74609e",
"84bbf9f7-38e6-4c4b-95b4-258e19c3012a"
]
На выходе мапа ID орг. БП с ID орг. БП владельца
{
"1f470e0c-ff89-4bc8-9664-2a1f284987d0": "1f470e0c-ff89-4bc8-9664-2a1f284987d0",
"84bbf9f7-38e6-4c4b-95b4-258e19c3012a": "464cb14b-e575-42ef-ab8a-c8141426e975",
"8c7622b9-edc3-4203-97d9-3b2eac74609e": "8c7622b9-edc3-4203-97d9-3b2eac74609e"
}
Возвращает объект, в котором ключи соответствуют ID орг. бизнес-процесса, а значения - ID орг. бизнес-процесса владельца.
- Input: [UUID]
- Output: [UUID, UUID]
| Команда | Путь |
|---|---|
| cnmd_orgBusinessProcessWithOwner | HTTP POST "/v1/business-tree/org-business-process-with-owner" |
CheckBpCodeAndTitle
На входе CheckBp
{
"stageScreenSetNameDp": "BProcess",
"processType": "BusinessProcessKind_3",
"title": "Организация взаимодействия с ФОГВ и общественными организациями",
"code": "99",
"groupIdOpt": "7f3d0cf4-7a51-4507-8d6c-2580d63bdede",
"organizationIds": [
"3e110603-eef7-4bba-949a-9878b09b0a56",
"f19de703-98f4-47b9-9db3-6c447a17333a"
]
}
На выходе BpDoubles
{
"matchedBpsByCode": [
{
"id": "1bb825e3-2854-4ca1-bb1d-2f7752a3d9d7",
"code": "99",
"title": "Сборник кодексов"
},
{
"id": "464cb14b-e575-42ef-ab8a-c8141426e975",
"code": "99",
"title": "Организация взаимодействия с ФОГВ и общественными организациями"
}
],
"matchedBpsByTitle": [
{
"id": "72d16b62-6646-4d5d-9844-dcb008b4a65c",
"code": "02.02.01.02.03",
"title": "Организация взаимодействия с ФОГВ и общественными организациями"
},
{
"id": "464cb14b-e575-42ef-ab8a-c8141426e975",
"code": "99",
"title": "Организация взаимодействия с ФОГВ и общественными организациями"
}
],
"matchedBpsByCodeAndTitle": [
{
"id": "464cb14b-e575-42ef-ab8a-c8141426e975",
"code": "99",
"title": "Организация взаимодействия с ФОГВ и общественными организациями"
}
]
}
Возвращает совпавшие БП
| Команда | Путь |
|---|---|
| cnmd_checkBpCodeAndTitle | HTTP POST "/v1/business-tree/check-bp-code-and-title" |
ListDocsWithSameCodeAndTitle
На входе CheckDoc
{
"title": "Организация взаимодействия с ФОГВ и общественными организациями",
"code": "99",
"excludeDocId": "7f3d0cf4-7a51-4507-8d6c-2580d63bdede"
}
На выходе List[DocumentMinimalDto]
[
{
"id": "218d64cb-dd33-4925-9ee1-8e1890fa0183",
"code": "М-12.02.06-09",
"title": "Требования ИБ к процессу ведения разработок в ИС Oracle Hyperion",
"version": "1.0",
"kind": "NMDKind_04",
"status": "actual",
"author": {
"id": "3317c68b-0c14-4cd8-8cb0-86c9469de5ab",
"firstName": "Михаил",
"middleName": "Сергеевич",
"lastName": "Коломейцев"
}
},
{
"id": "57ee4394-c571-4a69-b0b4-0021463a7a50",
"code": "М-12.02.06-08",
"title": "Требования к проведению мониторинга в ИС Oracle",
"version": "1.0",
"kind": "NMDKind_04",
"status": "planned",
"author": {
"id": "3317c68b-0c14-4cd8-8cb0-86c9469de5ab",
"firstName": "Михаил",
"middleName": "Сергеевич",
"lastName": "Коломейцев"
},
"planningApprovalDate": 1772001778800
}
]
Возвращает совпавшие документы
- Input: CheckDoc
- Output: List[DocumentMinimalDto]
| Команда | Путь |
|---|---|
| cnmd_listDocsWithSameCodeAndTitle | HTTP POST "/v1/business-tree/list-docs-with-same-code-and-title" |
ListCodesAndTitlesBusinessProcess
На входе ListFilter
{
"items": [
{
"key": "organizationIds",
"value": "00404b2f-7287-453e-a6fa-f95409914e0d"
}
],
"paging": {
"page": 1,
"count": 2
}
}
На выходе List[IdWithCodeAndTitle]
{
"items": [
{
"id": "218d64cb-dd33-4925-9ee1-8e1890fa0183",
"code": "М-12.02.06-09",
"title": "Требования ИБ к процессу ведения разработок в ИС Oracle Hyperion"
},
{
"id": "57ee4394-c571-4a69-b0b4-0021463a7a50",
"code": "М-12.02.06-08",
"title": "Требования к проведению мониторинга в ИС Oracle"
}
],
"total": 1000
}
Возвращает список кодов и названий бизнес процессов
- Input: ListFilter
- Output: List[IdWithCodeAndTitle]
| Команда | Путь |
|---|---|
| cnmd_listCodesAndTitlesBusinessProcess | HTTP POST "/v1/business-tree/list-codes-and-titles-business-process" |
OrgBusinessProcessOwnersGrouped
На входе ничего нет
На выходе OrgBpOwnersGrouped
{
"localProcessOwnerCCIds": [
"218d64cb-dd33-4925-9ee1-8e1890fa0183"
],
"commonProcessOwnerCCIds": [
"57ee4394-c571-4a69-b0b4-0021463a7a50"
],
"localProcessOwnerSOIds": [
"00404b2f-7287-453e-a6fa-f95409914e0d"
],
"commonProcessOwnerSOIds": [
"00dcfb5a-1167-46b5-af4f-f7340c814246"
]
}
Возвращает списки id владельцев, разделенные по группам
- Input: -
- Output: OrgBpOwnersGrouped
| Команда | Путь |
|---|---|
| cnmd_orgBusinessProcessOwnersGrouped | HTTP POST "/v1/business-tree/cnmd-org-business-process-owners-grouped" |
ListOwnersByCodesAndTitles
На входе CodeAndTitle[]
[
{
"code": "01.02",
"title": "Oil Well Drilling process"
},
{
"code": "02.06.17.01.06",
"title": "Коммерческий учет отпуска НП и СУГ с НБ"
}
]
На выходе CodeAndTitleWithOwnerIds[]
[
{
"codeAndTitle": {
"code": "01.02",
"title": "oil well drilling process"
},
"ownerIds": [
"53ef5a88-636b-4c68-aa0b-b383f3ef3f6f"
]
}
]
Возвращает списки id владельцев по коду и названию
- Input: CodeAndTitle[]
- Output: CodeAndTitleWithOwnerIds[]
| Команда | Путь |
|---|---|
| cnmd_listOwnersByCodesAndTitles | HTTP POST "/v1/business-tree/list-owners-by-codes-and-titles" |
DocumentsForRecommendation
На входе список Id версий документов владельца в ЦНМД
[
"6b5e8a0d-0985-44f7-bbea-e2d0ed00d6be",
"acec06f2-1ea2-48b2-9cbe-bbdaf8999d20"
]
На выходе DocumentRecommendationDto[]
[
{
"id": "218d64cb-dd33-4925-9ee1-8e1890fa0183",
"documentId": "7d84abe9-b5a2-4bde-bead-b3b20bc9a1e3",
"code": "М-12.02.06-09",
"title": "Требования ИБ к процессу ведения разработок в ИС Oracle Hyperion",
"orgBusinessProcess": {
"id": "acec06f2-1ea2-48b2-9cbe-bbdaf8999d20",
"code": "00",
"title": "Управление качеством и системой стандартизации",
"organizationOwner": {
"id": "0c67e814-c66b-4201-83b1-b46d4b8dedb9",
"shortTitle": "Хантос",
"title": "ООО \"Газпромнефть-Хантос\""
},
"owner": {
"id": "a633d6cc-b2c1-4101-98ef-433ebcf7055b",
"firstName": "Наталья",
"middleName": "Александровна",
"lastName": "Лупу",
"post": "Отдел стандартизации и развития интегрированных систем менеджмента (Лупу Н.А.)"
}
},
"number": "1",
"issuanceDate": 1670509203751,
"confirmDate": 1670509203751,
"dzoListCount": 6
}
]
Возвращает список документов
- Input: Seq[UUID]
- Output: Seq[DocumentRecommendationDto]
| Команда | Путь |
|---|---|
| cnmd_documentsForRecommendation | HTTP POST "/v1/business-tree/documents-for-recommendation" |
DocumentDzoListOrganizations
На входе Id версии документа владельца в ЦНМД
"acec06f2-1ea2-48b2-9cbe-bbdaf8999d20"
На выходе список OrganizationDto[]
[
{
"id": "0c67e814-c66b-4201-83b1-b46d4b8dedb9",
"shortTitle": "Хантос",
"title": "ООО \"Газпромнефть-Хантос\""
}
]
Возвращает список организаций документов участников dzoList
- Input: UUID
- Output: Seq[OrganizationDto[]]
| Команда | Путь |
|---|---|
| cnmd_documentDzoListOrganizations | HTTP POST "/v1/business-tree/document-dzolist-organizations" |
Organizations
На входе ListFilter c опциональным фильтрами "organizationIds", "organizationQuery"
{
"items": [
{
"key": "organizationIds",
"value": "00404b2f-7287-453e-a6fa-f95409914e0d,00dcfb5a-1167-46b5-af4f-f7340c814246"
},
{
"key": "organizationQuery",
"value": "Газ"
}
],
"paging": {
"page": 1,
"count": 2
}
}
На выходе ListWithTotalInt[OrganizationDto]
{
"items": [
{
"id": "00404b2f-7287-453e-a6fa-f95409914e0d",
"shortName": "Аэро Кыргызстан",
"title": "ОсОО \"Газпромнефть-Аэро Кыргызстан\""
},
{
"id": "00dcfb5a-1167-46b5-af4f-f7340c814246",
"shortName": "Аэро Кемерово",
"title": "ООО \"Газпромнефть-Аэро Кемерово\""
}
],
"total": 85
}
Возвращает список организаций
- Input: ListFilter
- Output: ListWithTotalInt[OrganizationDto]
| Команда | Путь |
|---|---|
| cnmd_organizations | HTTP POST "/v1/org-structure/organizations" |
OrganizationByTitle
На входе название организации
"Аэро Кыргызстан"
На выходе FullOrganizationCNMD
{
"id": "e3130e47-558a-4a9e-bcd0-fad203e41905",
"name": "ООО \"ГПН-ГЕО\" (ранее - ООО \"ЮГРА-ИНТЭК\") КХД",
"created": "2024-07-10T19:18:01.870",
"changeTime": "2024-07-10T19:18:01.870",
"data": {
"code": "7875",
"ordering": 0,
"displayName": "ООО \"ГПН-ГЕО\" (ранее - ООО \"ЮГРА-ИНТЭК\") КХД",
"sourceSystem": "khdhr",
"sourceProvider": "khdhr"
},
"removed": false,
"enabled": false,
"userId": null
}
Возвращает список организаций
- Input: String
- Output: FullOrganizationCNMD
| Команда | Путь |
|---|---|
| cnmd_organizationByTitle | HTTP POST "/v1/org-structure/organization-by-title" |
Subdivisions
На входе ListFilter c опциональными фильтрами "subdivisionIds", "parentSubdivisionIds", "subdivisionQuery", "organizationIds", "hasEmployee"
{
"items": [
{
"key": "subdivisionIds",
"value": "07a555e9-c74b-4feb-a419-c686ff015d81,03429172-b2cf-4fea-baad-7d08a4aeb566"
},
{
"key": "parentSubdivisionIds",
"value": "07a555e9-c74b-4feb-a419-c686ff015d81"
},
{
"key": "subdivisionQuery",
"value": "Отдел"
},
{
"key": "organizationIds",
"value": "56669d6e-fab3-480e-9146-c5df5ab8cd37"
},
{
"key": "hasEmployee",
"value": "true"
}
]
}
На выходе ListWithTotalInt[SubdivisionDto]
{
"items": [
{
"id": "7106eb13-c333-476a-933f-53d1f173ea75",
"isParent": true,
"employeesCount": 1,
"title": "Управление инвестиций",
"parentId": "75bcb0fb-131a-4a31-aa0d-6bb7b6182559",
"organizationId": "0095e467-4e9d-4dce-ac0b-c18ec8e4739f"
},
{
"id": "03429172-b2cf-4fea-baad-7d08a4aeb566",
"isParent": false,
"employeesCount": 3,
"title": "Отдел инвестиционного планирования и управления активами",
"parentId": "7106eb13-c333-476a-933f-53d1f173ea75",
"organizationId": "0095e467-4e9d-4dce-ac0b-c18ec8e4739f"
},
{
"id": "07a555e9-c74b-4feb-a419-c686ff015d81",
"isParent": false,
"employeesCount": 4,
"title": "Отдел экономической оценки и мониторинга инвестиционных проектов",
"parentId": "7106eb13-c333-476a-933f-53d1f173ea75",
"organizationId": "0095e467-4e9d-4dce-ac0b-c18ec8e4739f"
}
],
"total": 3
}
Возвращает список подразделений, отсортированный по id организаций. Кастомная сортировка не предусмотренна. С помощью пейджинга может указать максимальное кол-во подразделений. Но вернется скорее всего больше, потому что должны уместиться все сматченные дети, попавших под пейджинг подразделений.
- Input: ListFilter
- Output: ListWithTotalInt[SubdivisionDto]
| Команда | Путь |
|---|---|
| cnmd_subdivisions | HTTP POST "/v1/org-structure/subdivisions" |
Employees
На входе ListFilter c опциональными полями "ids", "query", "organizationIds", "subdivisionIds"
{
"items": [
{
"key": "ids",
"value": "000d7bcf-5e15-4009-b4cf-8eb91646be52,40346019-f113-43ba-80df-af7d83f6ae37"
},
{
"key": "query",
"value": "Мар"
},
{
"key": "organizationIds",
"value": "8b1f872d-99fc-41d7-aead-0fa2ef3cf54e"
},
{
"key": "subdivisionIds",
"value": "5da20ff0-3216-492c-a02f-0c33a58c644c"
}
],
"paging": {
"page": 1,
"count": 2
}
}
На выходе ListWithTotalInt[EmployeeDto]
{
"items": [
{
"id": "000d7bcf-5e15-4009-b4cf-8eb91646be52",
"firstName": "Марина",
"middleName": "Константиновна",
"lastName": "Шахаева",
"organization": {
"id": "8b1f872d-99fc-41d7-aead-0fa2ef3cf54e",
"shortName": "ОНПЗ",
"title": "АО \"Газпромнефть - ОНПЗ\""
},
"subdivision": {
"id": "5da20ff0-3216-492c-a02f-0c33a58c644c",
"title": "Группа договоров и взаиморасчётов"
},
"post": "Ведущий специалист",
"email": "Shahaeva.MK@gmail.com"
},
{
"id": "40346019-f113-43ba-80df-af7d83f6ae37",
"firstName": "Маргарита",
"middleName": "Николаевна",
"lastName": "Сторожева",
"organization": {
"id": "8b1f872d-99fc-41d7-aead-0fa2ef3cf54e",
"shortName": "ОНПЗ",
"title": "АО \"Газпромнефть - ОНПЗ\""
},
"subdivision": {
"id": "5da20ff0-3216-492c-a02f-0c33a58c644c",
"title": "Группа договоров и взаиморасчётов"
},
"post": "Ведущий специалист",
"email": "Storojeva.NS@gmail.com"
}
],
"total": 3
}
Возвращает список сотрудников.
- Input: ListFilter
- Output: ListWithTotalInt[EmployeeDto]
| Команда | Путь |
|---|---|
| cnmd_employees | HTTP POST "/v1/org-structure/employees" |
EmployeeMatch
На входе email сотрудника
"Bogdanov.YuG@hantos.gazprom-neft.loc"
На выходе uuid сотрудника
"f7eca5b6-5598-4b06-8517-eb8e86573440"
Возвращает UUID сотрудника из оргструктуры по его email.
- Input: String
- Output: UUID
| Команда | Путь |
|---|---|
| cnmd_employeeMatch | HTTP POST "/v1/org-structure/employee-match" |
EmployeeMatchDetailed
На входе email сотрудника
"Bogdanov.YuG@hantos.gazprom-neft.loc"
На выходе данные сотрудника
{
"id": "153d6e05-0ddf-4d3a-bc68-6c24ce83a657",
"firstName": "Юрий",
"middleName": "Геннадьевич",
"lastName": "Богданов",
"email": "Bogdanov.YuG@hantos.gazprom-neft.loc",
"organization": {
"id": "0c67e814-c66b-4201-83b1-b46d4b8dedb9",
"shortTitle": "Хантос",
"title": "ООО \"Газпромнефть-Хантос\""
},
"subdivision": {
"id": "75f1d49e-1685-4896-973c-545a750d37c0",
"title": "Группа повышения нефтеотдачи пластов"
},
"post": "Супервайзер гидроразрыва пласта"
}
Возвращает полные данные сотрудника из оргструктуры по его email.
- Input: String
- Output: EmployeeDto
| Команда | Путь |
|---|---|
| cnmd_employeeMatchDetailed | HTTP POST "/v1/org-structure/employee-match-detailed" |
EmployeesPositions
На входе ListFilter c опциональными полями "CodeQuery"
{
"items": [
{
"key": "positionCode",
"value": "Код должности"
},
{
"key": "organizationIds",
"value": "8b1f872d-99fc-41d7-aead-0fa2ef3cf54e"
},
{
"key": "subdivisionIds",
"value": "5da20ff0-3216-492c-a02f-0c33a58c644c"
}
],
"paging": {
"page": 1,
"count": 2
}
}
На выходе ListWithTotalInt[EmployeePositionInfoCNMD]
{
"items": [
{
"employeeId": "",
"positionCode": "",
"positionName": "",
"jobCategory": "",
"subdivisionId": "",
"subdivisionName": "",
"isSubdivisionHead": "",
"isFunctionLead": "",
"function": "",
"functionDirection": ""
}
],
"total": 1
}
Возвращает список должностей.
- Input: ListFilter
- Output: ListWithTotalInt[EmployeePositionInfoCNMD]
| Команда | Путь |
|---|---|
| cnmd_employeesPositions | HTTP POST "/v1/org-structure/employees-positions" |
EmployeeSubdivisionsHierarchy
На входе Id сотрудника в ЦНМД
"8b1f872d-99fc-41d7-aead-0fa2ef3cf54e"
На выходе String[] - список подразделений от нижнего уровня к верхнему
[
"АЗС 12",
"Сибирский филиал",
"Отдел розничных продаж"
]
Возвращает список подразделений от нижнего уровня к верхнему.
- Input: UUID
- Output: String[]
| Команда | Путь |
|---|---|
| cnmd_employeeSubdivisionsHierarchy | HTTP POST "/v1/org-structure/employee-subdivisions-hierarchy" |
SubdivisionHierarchy
На входе Id подразделения в ЦНМД
"8b1f872d-99fc-41d7-aead-0fa2ef3cf54e"
На выходе SubdivisionOrganizationIdsCNMD[] - список идентификаторов подразделений и идентификатор организации для верхнеуровневом подразделения от нижнего уровня к верхнему
[
{
"subdivisionId": "b85d3c73-1021-4bbf-b27c-a3daeabaade4",
"subdivisionTitle": "Управление организации работы с данными"
},
{
"subdivisionId": "7efc0f6c-202d-45ce-b4f5-57d43051ec0b",
"subdivisionTitle": "Департамент по планированию, управлению эффективностью и данными БРД"
},
{
"subdivisionId": "8b8250e9-68f2-455b-b8ae-a7b6aea359ee",
"subdivisionTitle": "Департамент внутреннего аудита"
},
{
"subdivisionId": "2f3b00fe-c274-43a6-9961-8c2014c3695a",
"subdivisionTitle": "ПАО Газпром нефть",
"organizationId": "d053632f-51b9-4159-9040-c818319d5939"
}
]
Возвращает список идентификаторов подразделений и организаций от нижнего уровня к верхнему.
- Input: UUID
- Output: SubdivisionOrganizationIdsDto[]
| Команда | Путь |
|---|---|
| cnmd_subdivisionHierarchy | HTTP POST "/v1/org-structure/subdivision-hierarchy" |
SubdivisionChildren
На входе Id подразделения в ЦНМД
"8b1f872d-99fc-41d7-aead-0fa2ef3cf54e"
На выходе [SubdivisionMinimalDto] - список вложенных подразделений, в том числе потомки потомков
[
{
"id": "156d3f01-7db1-4057-b1ab-66b1a37d8fa4",
"title": "Служба эксплуатации вахтового поселка"
},
{
"id": "2a870d00-81e0-4632-9366-ba0d6fd1ae68",
"title": "Служба предупреждения и ликвидации разливов нефти"
}
]
Возвращает список вложенных подразделений. В том числе потомки потомков.
- Input: UUID
- Output: [SubdivisionMinimalDto]
| Команда | Путь |
|---|---|
| cnmd_subdivisionChildren | HTTP POST "/v1/org-structure/subdivision-children" |
SubdivisionOrganization
На входе Id подразделения в ЦНМД
"8b1f872d-99fc-41d7-aead-0fa2ef3cf54e"
На выходе OrganizationDto
{
"id": "00404b2f-7287-453e-a6fa-f95409914e0d",
"shortName": "Аэро Кыргызстан",
"title": "ОсОО \"Газпромнефть-Аэро Кыргызстан\""
}
Возвращает организацию подразделения.
- Input: UUID
- Output: OrganizationDto
| Команда | Путь |
|---|---|
| cnmd_subdivisionOrganization | HTTP POST "/v1/org-structure/subdivision-organization" |
SedConnectedOrganizations
На входе ничего
На выходе SedConnectedOrganizations
{
"mainOrganization": {
"id": "00404b2f-7287-453e-a6fa-f95409914e0d",
"shortName": "ПГПН",
"title": "ПАО Газпром нефть"
},
"subsidiaryOrganizations": [
{
"id": "09f56f5b-5651-48c3-a536-cdec725f6259",
"shortName": "Аэро",
"title": "АО \"Газпромнефть-Аэро\""
}
]
}
Возвращает главную организацию и подключенные к СЭД ДО.
- Input: Null
- Output: SedConnectedOrganizations
| Команда | Путь |
|---|---|
| cnmd_sedConnectedOrganizations | HTTP POST "/v1/org-structure/sed-connected-organizations" |
CostCenters
На входе ListFilter
{
"items": [
],
"paging": {
"page": 1,
"count": 2
}
}
На выходе IdName[]
[
{
"id": "id1",
"name": "Название 1"
},
{
"id": "id2",
"name": "Название 2"
}
]
Возвращает места возникновения затрат
- Input: ListFilter
- Output: IdName[]
| Команда | Путь |
|---|---|
| cnmd_costCenters | HTTP POST "/v1/corporate-data-store/cost-centers" |
BlockDOs
На входе ListFilter
{
"items": [
],
"paging": {
"page": 1,
"count": 2
}
}
На выходе IdName[]
[
{
"id": "id1",
"name": "Название 1"
},
{
"id": "id2",
"name": "Название 2"
}
]
Возвращает блоки дочерних организаций
- Input: ListFilter
- Output: IdName[]
| Команда | Путь |
|---|---|
| cnmd_blockDOs | HTTP POST "/v1/corporate-data-store/block-do" |
ManagementSegments
На входе ListFilter
{
"items": [
],
"paging": {
"page": 1,
"count": 2
}
}
На выходе IdName[]
[
{
"id": "id1",
"name": "Название 1"
},
{
"id": "id2",
"name": "Название 2"
}
]
Возвращает управленческие сегменты
- Input: ListFilter
- Output: IdName[]
| Команда | Путь |
|---|---|
| cnmd_managementSegments | HTTP POST "/v1/corporate-data-store/management-segments" |
KhdPositions
На входе ListFilter
{
"items": [
],
"paging": {
"page": 1,
"count": 2
}
}
На выходе KhdPosition[]
[
{
"id": "66f19b0e-412a-479b-96e3-0b472dbae81a",
"subdivisionId": "0f3509e4-7a5e-4233-9ba2-9040816c8e2f",
"code": "10330730-11505108",
"positionsOnId": "",
"title": "first-f7f4f673-6388-4fb2-abb8-b0fe63449993",
"jobCategory": "Категория должности",
"positionName": "Наименование должности",
"jobEmployee": {
"id": "f0c116a5-a02c-4577-801f-538c8d9a5212",
"lastName": "Минин",
"firstName": "Виталий",
"middleName": "Евгеньевич"
},
"lineManagerEmployee": {
"id": "f0c116a5-a02c-4577-801f-538c8d9a5212",
"lastName": "Минин",
"firstName": "Виталий",
"middleName": "Евгеньевич"
},
"functionalManagerEmployee": {
"id": "f0c116a5-a02c-4577-801f-538c8d9a5212",
"lastName": "Минин",
"firstName": "Виталий",
"middleName": "Евгеньевич"
}
}
]
Возвращает список штатных должностей.
- Input: ListFilter
- Output: KhdPosition[]
| Команда | Путь |
|---|---|
| cnmd_khdPositions | HTTP POST "/v1/corporate-data-store/khd-positions" |
PositionTree
На входе ListFilter с опциональными фильтрами "positionQuery", "organizationIds", "subdivisionIds", "withoutPositions"
{
"items": [
{
"key": "positionQuery",
"value": "название должности"
},
{
"key": "organizationIds",
"value": "00404b2f-7287-453e-a6fa-f95409914e0d"
},
{
"key": "subdivisionIds",
"value": "00404b2f-7287-453e-a6fa-f95409914e0d"
},
{
"key": "withoutPositions",
"value": "true"
}
],
"paging": {
"page": 1,
"count": 2
}
}
На выходе ListWithTotalInt[TreeItem]
{
"items": [
{
"id": "26ac51cc-ef4e-405b-9db9-722fb5c10d23",
"nodeType": "Subdivision",
"title": "AS Baltic Marine Bunker"
},
{
"id": "64ab2c29-637f-42d2-a500-ec6c781eb7ec",
"nodeType": "Position",
"title": "Главный клоун"
}
],
"total": 10
}
Возвращает дерево должностей
- Input: ListFilter
- Output: ListWithTotalInt[TreeItem]
| Команда | Путь |
|---|---|
| cnmd_positionTree | HTTP POST "/v1/corporate-data-store/positionTree" |
RequestCnmdDocExport
- Input: Null
- Output: Null
Запускает экспорт документов в ЦНМД
| Команда | Путь |
|---|---|
| cnmd_requestCnmdDocExport | HTTP POST "/v1/export/importDocSource" |
RequestCnmdReviewExport
- Input: Null
- Output: Null
Запускает экспорт обратных связей в ЦНМД
| Команда | Путь |
|---|---|
| cnmd_requestCnmdReviewExport | HTTP POST "/v1/export/importReviewSource" |
RequestCnmdJDExport
- Input: Null
- Output: Null
Запускает экспорт должностных инструкций в ЦНМД
| Команда | Путь |
|---|---|
| cnmd_requestCnmdJDExport | HTTP POST "/v1/export/importJobDescriptionSource" |
RequestCnmdBPExport
- Input: Null
- Output: Null
Запускает экспорт бизнес процессов в ЦНМД
| Команда | Путь |
|---|---|
| cnmd_requestCnmdBPExport | HTTP POST "/v1/export/importBusinessProcessSource" |
FileIndexing
На входе FileIndexationRequest
{
"fileUrl": "https://sed-nmd-dev.yc.embedika.ru/v1/legacy-api/download/datamodel/NmdPublish/7fadd845-e595-4588-8495-aa270a490e8e",
"fileHash": "D0A0C3F636D6A4007CCE78F3D30E4C7B",
"documentId": "000d7bcf-5e15-4009-b4cf-8eb91646be52",
"orgBusinessProcessId": "7d299fb3-2382-4a11-b8ba-c292686d4c52"
}
На выходе FileIndexation либо Null
- Input: FileIndexationRequest
- Output: FileIndexation либо Null
Запускает экспорт документов в ЦНМД
| Команда | Путь |
|---|---|
| cnmd_fileIndexing | HTTP POST "/v1/export" |
Reviews
На входе Seq[UUID]
[
"aa270135-40ae-47e2-9168-7b8e44e34a0c"
]
На выходе ReviewDTO
[
{
"id": "aa270135-40ae-47e2-9168-7b8e44e34a0c",
"author": {
"id": "e0b61bc5-2642-4679-9683-ce73fcc9bc8a",
"firstName": "Илья",
"middleName": "Сергеевич",
"lastName": "Бухалов",
"email": "Bukhalov.IS@gazpromneft-ntc.ru",
"post": "Руководитель программ внедрения новых технологий"
},
"reviewType": "ReviewType_Change",
"reason": "Является дубликатом другого документа",
"section": "Системный раздел",
"suggestion": "recommendation",
"comment": "comment",
"canUseDocumentGpnWide": false
}
]
- Input: Seq[UUID]
- Output: ReviewDTO
Возвращает информацию об обращениях
| Команда | Путь |
|---|---|
| cnmd_reviews | HTTP POST "/v1/review/reviews" |
AddEmployeeAccessSubdivisions
На входе данные для создания записей
{
"employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
"employeeGroup": "user",
"subdivisionIds": [
"4d89c624-751a-4c1e-98ef-4e122f24a8b6"
]
}
На выходе кол-во добавленных или обновленных подразделений
1
- Input: EmployeeSubdivisionsDTO
- Output: Int
Описание:
| Команда | Путь |
|---|---|
| cnmd_addEmployeeAccessSubdivisions | Kafka Topic "cnmd_api_adapter_commands" |
AddEmployeeAccessOrgsSubdivisions
На входе данные для создания записей
{
"employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
"employeeGroup": "user",
"organizationIds": [
"4d89c624-751a-4c1e-98ef-4e122f24a8b6"
]
}
На выходе кол-во добавленных или обновленных подразделений
68
- Input: EmployeeOrgsSubdivisionsDTO
- Output: Int
Описание:
| Команда | Путь |
|---|---|
| cnmd_addEmployeeAccessOrgsSubdivisions | Kafka Topic "cnmd_api_adapter_commands" |
DeleteEmployeeAccessSubdivisions
На входе данные для удаления
{
"employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
"employeeGroup": "user",
"subdivisionIds": [
"4d89c624-751a-4c1e-98ef-4e122f24a8b6"
]
}
На выходе кол-во удаленных записей
1
- Input: EmployeeSubdivisionsDTO
- Output: Int
Описание:
| Команда | Путь |
|---|---|
| cnmd_deleteEmployeeAccessSubdivisions | Kafka Topic "cnmd_api_adapter_commands" |
DeleteEmployeeAccessOrgsSubdivisions
На входе данные для удаления
{
"employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
"employeeGroup": "user",
"organizationIds": [
"4d89c624-751a-4c1e-98ef-4e122f24a8b6"
]
}
На выходе кол-во удаленных записей
68
- Input: EmployeeOrgsSubdivisionsDTO
- Output: Int
Описание:
| Команда | Путь |
|---|---|
| cnmd_deleteEmployeeAccessOrgsSubdivisions | Kafka Topic "cnmd_api_adapter_commands" |
GetEmployeeAccessSubdivisions
На id пользователя
{
"employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
"employeeGroup": "user"
}
На выходе id подразделений, сгруппированные по id организаций
[
{
"organizationId": "bd63eab4-d6d7-484f-b95d-57eba1455f73",
"subdivisionIds": [
"4d89c624-751a-4c1e-98ef-4e122f24a8b6",
"20a4c912-ca7e-47d5-a326-9efbbb369eba",
"f61334da-bb42-47f3-bcac-09a1fc5eadfa",
"028d1d9e-588e-4df8-a1c9-5fbbb6853178",
"23ff18fd-5e43-4fd1-8696-83466c93be35",
"b2dcf62d-f079-4e16-a401-03b6c0da017c"
]
}
]
- Input: UUID сотрудника
- Output: OrgSubdivisionsDTO
Описание:
| Команда | Путь |
|---|---|
| cnmd_getEmployeeAccessSubdivisions | HTTP POST "/v1/employee-access-subdivision/get-subdivisions" |
CheckEmployeeAccessSubdivisions
На id пользователя
{
"employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
"employeeGroups": [
"user"
],
"subdivisionIds": [
"4d89c624-751a-4c1e-98ef-4e122f24a8b6"
]
}
Признак успешности
true
- Input: EmployeeAccessSubdivisionCheckDTO
- Output: Boolean
Описание:
| Команда | Путь |
|---|---|
| cnmd_checkEmployeeAccessSubdivisions | HTTP POST "/v1/employee-access-subdivision/check" |
ListEmployeeAccessSubdivisions
На входе ListFilter с опциональными фильтрами "employeeIds", "subdivisionIds", "organizationIds", " employeeGroups"
{
"items": [
{
"key": "organizationIds",
"value": "8b1f872d-99fc-41d7-aead-0fa2ef3cf54e"
}
],
"paging": {
"page": 1,
"count": 10
}
}
Список найденный подразделений Seq[EmployeeGroupOrgSubdivisionsDTO]
[
{
"employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
"email": "user@mail.loc",
"employeeGroup": "user",
"orgSubdivisions": [
{
"organizationId": "bd63eab4-d6d7-484f-b95d-57eba1455f73",
"subdivisionIds": [
"4d89c624-751a-4c1e-98ef-4e122f24a8b6",
"20a4c912-ca7e-47d5-a326-9efbbb369eba",
"f61334da-bb42-47f3-bcac-09a1fc5eadfa",
"028d1d9e-588e-4df8-a1c9-5fbbb6853178",
"23ff18fd-5e43-4fd1-8696-83466c93be35",
"b2dcf62d-f079-4e16-a401-03b6c0da017c"
]
}
]
}
]
- Input: ListFilter
- Output: Seq[EmployeeGroupOrgSubdivisionsDTO]
Описание:
| Команда | Путь |
|---|---|
| cnmd_listEmployeeAccessSubdivisions | HTTP POST "/v1/employee-access-subdivision/list-group-org-subdivisions" |
ListDocumentsByFilters
На входе ListFilter с опциональными фильтрами "title", "library", "code", "documentId"
{
"items": [
{
"key": "title",
"value": "Помощник / . / ПАО Газпром нефть"
},
{
"key": "library",
"value": "JD"
},
{
"key": "code",
"value": "0017002"
},
{
"key": "documentId",
"value": "028d1d9e-588e-4df8-a1c9-5fbbb6853178"
}
]
}
[
{
"id": "56cc8d82-db21-4aae-84f9-7398c4cfe949",
"rowVersion": 45,
"documentId": "d84878bb-cfaf-4ba9-83f2-94ec4f9dfd57",
"created": "2020-01-10T06:02:25.716",
"code": "М-16.01.10-01",
"title": "Инструкция по применению нормативов",
"removed": false,
"status": "actual",
"modified": "2020-01-10T06:02:25.716"
},
{
"id": "fb2933c4-58cd-4ee6-bf37-a65353c3a229",
"rowVersion": 44,
"documentId": "4c18550e-2ab5-427e-aaf3-96de0b5a399c",
"created": "2020-01-10T06:02:25.557",
"code": "М-01.05.04.03.01-02",
"title": "Проведение вероятностной оценки на базе геологического рейтинга бурения",
"removed": false,
"status": "actual",
"modified": "2020-01-10T06:02:25.557"
}
]
- Input: ListFilter
- Output: MinimalDocumentVersionDto
Описание:
| Команда | Путь |
|---|---|
| cnmd_listDocumentsByFilters | HTTP POST "/v1/document/list-documents-by-filters" |
KT003Organizations
На входе ListFilter c опциональным фильтрами "ids", "query", "enabled", "sourceSystem", " sourceProvider", "subdivisionIds", "removed"
{
"items": [
{
"key": "ids",
"value": "00404b2f-7287-453e-a6fa-f95409914e0d,00dcfb5a-1167-46b5-af4f-f7340c814246"
},
{
"key": "query",
"value": "Газ"
}
],
"paging": {
"page": 1,
"count": 2
}
}
На выходе ListWithTotalInt[OrganizationDto]
{
"items": [
{
"id": "00404b2f-7287-453e-a6fa-f95409914e0d",
"shortName": "Аэро Кыргызстан",
"title": "ОсОО \"Газпромнефть-Аэро Кыргызстан\""
},
{
"id": "00dcfb5a-1167-46b5-af4f-f7340c814246",
"shortName": "Аэро Кемерово",
"title": "ООО \"Газпромнефть-Аэро Кемерово\""
}
],
"total": 85
}
Возвращает список организаций
- Input: ListFilter
- Output: ListWithTotalInt[OrganizationDto]
| Команда | Путь |
|---|---|
| cnmd_listKT003Organizations | HTTP POST "/v1/kt003/organizations" |
KT003Organization
На входе id организации
"00404b2f-7287-453e-a6fa-f95409914e0d"
На выходе Organization
{
"id": "e3130e47-558a-4a9e-bcd0-fad203e41905",
"name": "ООО \"ГПН-ГЕО\" (ранее - ООО \"ЮГРА-ИНТЭК\") КХД",
"created": "2024-07-10T19:18:01.870",
"changeTime": "2024-07-10T19:18:01.870",
"data": {
"code": "7875",
"ordering": 0,
"displayName": "ООО \"ГПН-ГЕО\" (ранее - ООО \"ЮГРА-ИНТЭК\") КХД",
"sourceSystem": "khdhr",
"sourceProvider": "khdhr"
},
"removed": false,
"enabled": false,
"userId": null
}
Возвращает список организаций
- Input: UUID
- Output: Organization
| Команда | Путь |
|---|---|
| cnmd_getKT003Organization | HTTP POST "/v1/kt003/organization" |
Объекты сервиса cnmd-api-adapter
BusinessProcessMinimalDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id бизнес процесса |
| code | String | Да | Код бизнес процесса |
| title | String | Да | Название бизнес процесса |
| parentBpId | String | Нет | Id родительского бизнес процесса |
| orgBpCount | Int | Да | Кол-во орг. бизнес процессов |
| hasChildren | Boolean | Да | Наличие дочерних бизнес процессов |
| isMatched | Boolean | Да | Попадает ли под фильтрацию |
| organizationOwner | String | Нет | Краткое название организации владельца |
OrgBusinessProcessMinimalDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| bpId | String | Да | Id бизнес процесса |
| status | String | Нет | Статус |
| code | String | Да | Код |
| title | String | Нет | Название |
| organization | OrganizationDto | Да | Организация |
| bpType | String | Нет | Тип бизнес процесса |
OrgBusinessProcessDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| ancestorProcesses | Seq[String] | Да | Иерархия вышестоящих процессов |
| code | String | Нет | Код |
| bpType | String | Нет | Тип бизнес процесса |
| title | String | Да | Наименование |
| processKind | String | Нет | Вид процесса |
| processType | String | Нет | Вид бизнес процесса |
| simpleDuplication | Boolean | Нет | Тиражирование через приказ о применении НМД |
| visaLaw | Boolean | Нет | Требуется согласование НМД с правовой функцией |
| organizationOwner | OrganizationDto | Да | Организация-владелец |
| owner | EmployeeMinimalDto | Да | Владелец процесса |
| manager | EmployeeMinimalDto | Да | Менеджер процесса |
| methConfirm | Seq[EmployeeMinimalDto] | Да | Утверждающий методологии |
| standardGroupRUS | Seq[EmployeeMinimalDto] | Да | Подразделение по стандартизации владельца |
| standardGroupRUSLocal | Seq[EmployeeMinimalDto] | Да | Подразделение по стандартизации тиражного ДО |
| cKPersons | Seq[EmployeeMinimalDto] | Да | Центр компетенций по стандартизации |
| otvISAP | Person | Нет | Ответственный за согласование изменений в информационных системах, автоматизирующих процесс |
| shortDescription_Plain | String | Нет | Краткое описание процесса |
| target | String | Нет | Цель процесса |
| metrics | String | Нет | Метрики процесса |
| risks | String | Нет | Процессные риски |
| processIn | String | Нет | Вход процесса |
| processOut | String | Нет | Выход процесса |
| borderLine | String | Нет | Разграничение ответственности |
| processMembers | String | Нет | Участники процесса |
| stages | String | Нет | Основные этапы процесса |
| bProcessAroundID | Seq[orgBusinessProcessAround]] | Нет | Смежные процессы (поставщики ресурсов) |
| bProcessAround2ID | Seq[orgBusinessProcessAround]] | Нет | Смежные процессы (портебители ресурсов) |
| statusSVK | String | Нет | Статус СВК по процесс |
| automation | String | Нет | Автоматизация |
| dzoList | Seq[String] | Да | Организации-участники процесса |
| organization | OrganizationDto | Нет | Компания |
| selfRegulatingProcess | Boolean | Нет | Компания |
| feedbackResponsibleIds | Seq[String] | Нет | Компания |
| feedbackResponsibleLocalIds | Seq[String] | Нет | Компания |
| contactPersonISId | String | Нет | Компания |
| contactPersonISLocalId | String | Нет | Компания |
DocumentDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| orgBusinessProcess | String | Нет | Id орг. бизнес-процесса |
| owner | EmployeeMinimalDto | Нет | Владелец бизнес-процесса |
| processKind | String | Нет | Вид бизнес-процесса |
| manager | EmployeeMinimalDto | Нет | Менеджер процесса |
| simpleDuplication | Boolean | Нет | Тиражирование через Приказ о применении НМД |
| ownerOrganizationApproval | Boolean | Нет | Подлежит утверждению в организации-владельце БП |
| nmdOwnerOrganization | OrganizationDto | Да | Организация-владелец НМД |
| nmdParticipantOrganization | OrganizationDto | Да | Организации-участники НМД |
| nmdKind | String | Нет | Вид НМД |
| title | String | Нет | Наименование документа |
| documentCode | String | Нет | Обозначение документа |
| catalogOwner | EmployeeMinimalDto | Нет | Владелец каталога |
| informationOwner | EmployeeMinimalDto | Нет | Владелец информации |
| author | EmployeeMinimalDto | Нет | Автор |
| coauthor | EmployeeMinimalDto | Нет | Соавтор |
| developmentHead | EmployeeMinimalDto | Нет | Руководитель разработки |
| number | String | Нет | Версия |
| developmentType | String | Нет | Тип разработки |
| dzoList | Seq[String] | Да | Список Id участников документов |
| planningApprovalDate | Long | Нет | Плановая дата запуска документа |
DocumentMinimalDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| code | String | Нет | Код |
| title | String | Нет | Название |
| issuanceDate | Long | Нет | Дата введения в действие |
| version | String | Нет | Версия |
| kind | String | Нет | Тип |
| status | String | да | Статус документа |
| author | EmployeeMinimalDto | Нет | Автор |
| planningApprovalDate | Long | Нет | Плановая дата запуска документа |
ListFilterWithId
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| listFilter | ListFilter | Нет | Фильтры |
ListFilter
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| Items | Seq[FilterItem] | Да | Фильтры |
| Sorting | Sorting | Нет | Сортировка |
| paging | Paging | Нет | Пагинация |
FilterItem
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| key | String | Да | Название фильра |
| value | String | Нет | Значение фильтра |
Sorting
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| fieldName | String | Да | Название поля для фильтрации |
| order | String | Да | Порядок фильтрации |
Paging
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| page | Int | Да | Страница |
| count | Int | Да | Кол-во элементов на странице |
ListWithTotalInt
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| items | Seq[T] | Да | Элементы |
| total | Int | Да | Кол-во элементов |
OrganizationDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| shortName | String | Нет | Короткое название |
| title | String | Да | Название |
FullOrganizationCNMD
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID Организации |
| name | String | да | Название организации |
| created | LocalDateTime | да | Дата создания |
| changeTime | LocalDateTime | да | Дата изменения |
| data | json | да | Дополнительная информация |
| removed | Boolean | нет | Признак удаления |
| enabled | Boolean | да | Показывать данную организацию в фильтрах |
| userId | UUID | нет | Идентификатор пользователя изменявшего запись или null для автоматических систем |
SedConnectedOrganizationsDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| mainOrganization | [OrganizationDto] | Да | Главная организация (ПАО) |
| subsidiaryOrganizations | Seq[OrganizationDto] | Да | ДО, подключенные к СЭД |
IdName
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Ключ |
| name | String | Да | Значение |
KhdPosition
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID позиции |
| subdivisionId | UUID | Да | ID подразделения |
| organization | OrganizationDto(#organizationdto) | Да | Организация |
| code | String | Да | Код должности |
| positionOnID | String | Да | ID в исходной системе |
| title | String | Да | Наименование должности |
| jobCategory | String | Да | Код должности функционального руководителя |
| isSubdivisionHead | Boolean | Нет | Является руководителем подразделения |
| isFunctionLead | Boolean | Нет | Специализация |
| positionName | String | Да | Наименование должности |
| function | String | Нет | Функция |
| functionDirection | String | Нет | ФН/СС |
| jobEmployees | EmployeeMinimalDto[] | Нет | Сотрудники на должности |
| lineManagerEmployee | EmployeeMinimalDto | Нет | Линейный руководитель |
| functionalManagerEmployee | EmployeeMinimalDto | Нет | Функциональный руководитель |
TreeItem
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID Объекта |
| nodeType | String | Да | Тип объекта - Subdivision или Position |
| title | String | Да | Название |
| parentId | UUID | Нет | ID родительского элемента в дереве |
SubdivisionMinimalDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| title | String | Да | Название |
EmployeeDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| firstName | String | Да | Имя |
| middleName | String | Да | Отчество |
| lastName | String | Да | Фамилия |
| organization | OrganizationDto | Да | Организация |
| subdivision | SubdivisionMinimalDto | Да | Подразделение |
| post | String | Да | Должность |
| String | Нет | Почта |
EmployeeMinimalDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| firstName | String | Да | Имя |
| middleName | String | Нет | Отчество |
| lastName | String | Да | Фамилия |
| post | String | Нет | Должность |
| String | Нет | Почта |
DzoDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| businessProcess | businessProcessDzoDto | Да | Информация о бизнес-процессе |
| organization | OrganizationDto | Нет | Информация о организации |
businessProcessDzoDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| code | String | Нет | Код |
| title | String | Да | Название |
SubdivisionDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | Да | Id |
| isParent | Boolean | Да | Признак наличия дочерних подразделений в поиске |
| employeesCount | Int | Да | Кол-во сотрудников |
| title | String | Да | Название |
| parentId | String | Нет | Id родительского подразделения |
| organizationId | String | Да | Id организации подразделения |
| headEmployeeId | String | Нет | Id руководителя подразделения |
FileIndexationRequest
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| fileUrl | String | Да | Ссылка на файл |
| fileHash | String | Да | Хэш-сумма документа (MD5) |
| documentId | UUID | Да | Id документа в СЭД |
| orgBusinessProcessId | UUID | Да | Id орг. бизнес процесса в ЦНМД |
FileIndexation
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| interSections | [Intersections][] | Да | Похожие по тексту |
| similarity | [Similarity][] | Да | Похожие по смыслу |
| linkFrom | [linkFrom][] | Да | Документ ссылается на (ссылки в документе) |
| definitionsByDocumentVersionRaw | [definitionsByDocumentVersionRaw][] | Да | Термины в документе |
Intersections
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| originality | float | Да | Похожесть |
| versionTo | [DocVersion] | Да |
Similarity
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| similarity | float | Да | Похожесть |
| versionTo | [DocVersion] | Да |
LinkFrom
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| linkCode | string | Да | |
| linkType | string | Да | |
| documentVersionTo | [DocVersion] | Да |
DefinitionsByDocumentVersionRaw
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | string | Да | |
| title | string | Да | |
| description | string | Да | |
| modified | Long | Да | |
| data | json | Да |
DocVersion
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| status | string | Да | |
| number | string | Да | |
| sourceSystem | string | Да | |
| document | [DocVersionDocumentDTO] | Да | |
| orgBusinessProcess | [DocVersionOrgBusinessProcessDTO] | Да | |
| additionalTypes | [AdditionalTypes] | Да | |
| documentFile | [DocVersionDocumentFileDTO] | Да | |
| serviceAuthor | string | Да | |
| author | [EmployeeMinimalDto] | Да | |
| issuanceDate | Long | Да |
DocVersionDocumentDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | Да | |
| title | string | Да | |
| code | string | Да | |
| library | json | Да |
DocVersionOrgBusinessProcessDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | Да | |
| organization | [OrganizationDto] | Да |
DocVersionDocumentFileDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | Да | |
| pdfStorageId | string | Да |
AdditionalTypes
NMDAdditionalTypes
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| uldSovtKind | json | Да | |
| uldSovtType | json | Да | |
| uldSovtKindType | string | Да | |
| uldResponsible | [EmployeeMinimalDto] | Да | |
| serviceResponsible | string | Да | |
| uldReason | string | Да | |
| uldComment | string | Да |
DIAdditionalTypes
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| jobTitle | string | Да | |
| departmentId | uuid | Да | |
| positionId | uuid | Да | |
| departmentJd | string | Да | |
| positionPath | [] | Да | |
| initiator | [EmployeeMinimalDto] | Да |
ULDlAdditionalTypes
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| uldSovtKind | json | Да | |
| uldSovtType | json | Да | |
| uldSovtKindType | string | Да | |
| uldResponsible | [EmployeeMinimalDto] | Да | |
| serviceResponsible | string | Да | |
| uldReason | string | Да | |
| uldComment | string | Да |
IDAdditionalTypes
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| idsProcessKink | string | Да |
CheckBp
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| stageScreenSetNameDp | string | Да | Уровень БП |
| processType | string | Да | Вид процесса |
| title | string | Да | Название процесса |
| code | string | Да | Код процесса |
| groupIdOpt | uuid | нет | ID группы, в которой создаётся БП |
| organizationIds | uuid[] | Да | Список организаций для сравнения |
CheckDoc
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| title | string | Да | Название документа |
| code | string | Да | Код документа |
| excludeDocId | uuid | нет | ID документа, на основе которого создан текущий документ |
BusinessProcessDouble
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | Да | ID БП |
| title | string | Да | Название процесса |
| code | string | Да | Код процесса |
BpDoubles
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| matchedByCode | [BusinessProcessDouble][] | Да | БП, совпавшие по коду |
| matchedByTitle | [BusinessProcessDouble][] | Да | БП, совпавшие по названию |
| matchedByCodeAndTitle | [BusinessProcessDouble][] | Да | БП, совпавшие по коду и названию |
FindObpsDocs
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| ids | UUID[] | Да | Список id орг. бизнес процессов |
| planned | Boolean | Нет | Фильтр по плановым записям |
ObpsDocs
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| obpId | UUID | Да | Id орг. бизнес процесса |
| docs | [DocumentMinimalDto][] | да | Список документов |
EmployeeSubdivisionsDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| employeeId | UUID | Да | Id сотрудника |
| employeeGroup | String | Да | Группа сотрудника |
| subdivisionIds | UUID[] | Да | Id подразделений |
EmployeeOrgsSubdivisionsDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| employeeId | UUID | Да | Id сотрудника |
| employeeGroup | String | Да | Группа сотрудника |
| organizationIds | UUID[] | Да | Id подразделений |
OrgSubdivisionsDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| organizationId | UUID | Да | Id организации |
| subdivisionIds | UUID[] | Да | Id подразделений |
EmployeeGroupOrgSubdivisionsDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| employeeId | UUID | Да | Id сотрудника |
| String | Нет | Email сотрудника | |
| group | String | Да | Группа сотрудника |
| orgSubdivisions | OrgSubdivisionsDTO[] | Да | Id подразделений |
EmployeeAccessSubdivisionCheckDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| employeeId | UUID | Да | Id сотрудника |
| employeeGroup | String[] | Да | Группы сотрудника |
| subdivisionIds | UUID[] | Да | Id подразделений |
IdWithCodeAndTitle
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID БП |
| code | String | да | Код БП |
| title | String | да | Название БП |
OrgBpOwnersGrouped
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| commonProcessOwnerCCIds | UUID [] | да | Владельцы сквозных процессов КЦ |
| localProcessOwnerCCIds | UUID [] | да | Владельцы локальных процессов КЦ |
| commonProcessOwnerSOIds | UUID [] | да | Владельцы сквозных процессов ДО |
| localProcessOwnerSOIds | UUID [] | да | Владельцы локальных процессов ДО |
CodeAndTitle
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| code | String | да | Код БП |
| title | String | да | Название БП |
CodeAndTitleWithOwnerIds
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| codeAndTitle | CodeAndTitle | да | Код и название бп |
| ownerIds | UUID[] | да | Список ID бп владельцев |
ReviewDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID обращения |
| author | EmployeeMinimalDto | нет | Автор обращения |
| reviewType | String | да | Тип обращения |
| reason | String | нет | Причина |
| section | String | нет | Раздел |
| suggestion | String | нет | Предложение по НМД |
| comment | String | нет | Комментарий по НМД |
| canUseDocumentGpnWide | Boolean | нет | Можно ли использовать в периметре ГПН |
OrgBusinessProcessRecommendationDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID версии документа |
| code | String | Нет | Код |
| title | String | Да | Наименование |
| organizationOwner | OrganizationDto | Да | Организация-владелец |
| owner | EmployeeMinimalDto | Да | Владелец процесса |
DocumentRecommendationDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID версии документа |
| documentId | UUID | да | ID документа |
| documentCode | String | да | Код документа |
| title | String | да | Наименование документа |
| orgBusinessProcess | OrgBusinessProcessRecommendationDTO | да | данные орг БП документа |
| number | String | да | Номер версии |
| issuanceDate | Long | да | Дата ввода в действие |
| confirmDate | Long | да | Дата утверждения |
| dzoListCount | Long | да | Количество организаций-участников |
SubdivisionOrganizationIdsDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| subdivisionId | UUID | да | ID подразделения |
| subdivisionTitle | String | да | Название подразделения |
| organizationId | UUID | нет | ID организации (указывается для верхнеуровнего подразделения) |
EmployeePositionInfo
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| employeeId | UUID | да | ID сотрудника |
| positionCode | String | да | Код должности |
| positionName | String | да | Наименование должности |
| jobCategory | String | да | Категория должности |
| subdivisionId | Option[UUID] | нет | Id подразделения |
| subdivisionName | Option[String] | нет | Наименование подразделения |
| isSubdivisionHead | Option[Boolean] | нет | Является руководителем подразделения |
| isFunctionLead | Option[Boolean] | нет | Является лидером функции |
| function | Option[Boolean] | нет | Функция/Проф.кластер |
| functionDirection | Option[Boolean] | нет | Семейство спец.функц. направление/ проф.направление/рабоч. специальность |
MinimalDocumentVersionDto
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID DocumentVersion |
| rowVersion | Long | да | Версия документа |
| documentId | UUID | да | ID Document |
| created | LocalDateTime | да | Дата создания |
| code | String | да | Номер документа(data.code) |
| title | String | да | Наименование документа |
| removed | Boolean | да | Признак удаления |
| status | String | да | Статус |
| modified | LocalDateTime | да | Дата модификации |
Organization
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID Организации |
| name | String | да | Название организации |
| created | LocalDateTime | да | Дата создания |
| changeTime | LocalDateTime | да | Дата изменения |
| data | json | да | Дополнительная информация |
| removed | Boolean | нет | Признак удаления |
| enabled | Boolean | да | Показывать данную организацию в фильтрах |
| userId | UUID | нет | Идентификатор пользователя изменявшего запись или null для автоматических систем |
gpn-counter
Cервис счетчиков
Сервис принимает команды и хранит состояние в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик gpn_counter_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
- domain, в котором содержатся все доменные модели и их различные представления.
- commands, в котором содержатся все? что связано с командами, их описанием и обработчиками.
- storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.
- service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.
- boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу localhost:5432/gpn-counter
- Kafka по адресу localhost:9092
- Consul по адресу localhost:8500
- Адрес Kafka будет указан в application.conf
- Добавлены необходимые переменные окружения:
- GPN_COUNTER_DB_HOST
- GPN_COUNTER_DB_PORT
- GPN_COUNTER_DB_NAME
- GPN_COUNTER_DB_USER
- GPN_COUNTER_DB_PASSWORD
Запуск из консоли с помощью SBT
GPN_COUNTER_DB_HOST=localhost GPN_COUNTER_DB_PORT=5432 GPN_COUNTER_DB_NAME=gpn-counter_db GPN_COUNTER_DB_USER=postgres GPN_COUNTER_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса gpn-counter
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| GPN_COUNTER_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| GPN_COUNTER_HTTP_PORT | int | нет | 8028 | Порт, на котором слушает HTTP-сервер |
| GPN_COUNTER_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| GPN_COUNTER_KAFKA_TOPIC | string | нет | "gpn_counter_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| GPN_COUNTER_KAFKA_CONSUMER_GROUP | string | нет | "gpn_counter_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| GPN_COUNTER_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| GPN_COUNTER_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| GPN_COUNTER_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| GPN_COUNTER_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| GPN_COUNTER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах GPN_COUNTER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| GPN_COUNTER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который GPN_COUNTER_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| GPN_COUNTER_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| GPN_COUNTER_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| GPN_COUNTER_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| GPN_COUNTER_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| GPN_COUNTER_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| GPN_COUNTER_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| GPN_COUNTER_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к харнилищу сертификатов. |
| GPN_COUNTER_KAFKA_AUTH_MODE | string | нет | "static" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| GPN_COUNTER_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]. Переменная соответствует полю authConfig из KafkaAuthSettings. |
| GPN_COUNTER_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| GPN_COUNTER_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| GPN_COUNTER_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| GPN_COUNTER_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| GPN_COUNTER_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| GPN_COUNTER_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| GPN_COUNTER_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| GPN_COUNTER_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| GPN_COUNTER_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| GPN_COUNTER_DISCOVERABLE_ID | string | нет | "another_GPN_COUNTER_service_instance" | ID сервиса в ServiceDiscovery |
| GPN_COUNTER_DISCOVERABLE_NAME | string | нет | "gpn-counter" | Имя сервиса в ServiceDiscovery |
| GPN_COUNTER_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| GPN_COUNTER_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| GPN_COUNTER_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| GPN_COUNTER_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| GPN_COUNTER_SERVICE_TITLE | string | нет | "gpn-counter" | Название сервиса для отображения |
| GPN_COUNTER_SERVICE_DESCRIPTION | string | нет | "Service GPN_COUNTER" | Описание сервиса для отображения |
| GPN_COUNTER_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| GPN_COUNTER_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| GPN_COUNTER_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| GPN_COUNTER_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| GPN_COUNTER _HEALTH_TIMEOUT | duration string | нет | 5 seconds | Максимальное время ожидания ответа health check |
| GPN_COUNTER_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| GPN_COUNTER_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| GPN_COUNTER_DB_HOST | string | да | Хост БД | |
| GPN_COUNTER_DB_PORT | int | да | Порт БД | |
| GPN_COUNTER_DB_NAME | string | да | Имя базы в БД | |
| GPN_COUNTER_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| GPN_COUNTER_DB_USER | string | да | Пользователь БД | |
| GPN_COUNTER_DB_PASSWORD | string | да | Пароль пользователя БД | |
| GPN_COUNTER_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| GPN_COUNTER_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| GPN_COUNTER_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| GPN_COUNTER_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| GPN_COUNTER_LOG_LEVEL_SLICK_STATEMENT | string | нет | WARN | Уровень логирования запросов, отправляемых slick в БД |
| GPN_COUNTER_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирование бенчмарков выполнения запросов slick |
| GPN_COUNTER_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| GPN_COUNTER_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| GPN_COUNTER_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| GPN_COUNTER_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| GPN_COUNTER_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| GPN_COUNTER_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| GPN_COUNTER_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| GPN_COUNTER_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| LOGGING_HOSTNAME | string | нет | SERVER | Имя хоста для логирования в формате CEF |
| LOGGING_EXTERNAL_ADDRESS | string | нет | localhost | Внешний адрес для логирования в формате CEF |
| GPN_VERSION_POSTFIX | string | нет | Постфикс библиотеки gpn-libs для сборки CI | |
| CLIENT_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-domain-lib для сборки CI | |
| SYSTEM_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-system-lib для сборки CI | |
| GPN_COUNTER_LOG_FORMAT | string | нет | CEF | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| GPN_COUNTER_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| GPN_COUNTER_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| GPN_COUNTER_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| GPN_COUNTER_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| GPN_COUNTER_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| GPN_COUNTER_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| GPN_COUNTER_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| GPN_COUNTER_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| GPN_COUNTER_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
Список команд сервиса gpn-counter
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованы следующие команды:
- Создание номера
- Занятие номера
- Освобождение номера
- Освобождение нескольких номеров
- Получение списка существующих номеров
- Замена правила в нескольких номерах
ImportRules
На входе список правил
[
{
"id": "NMDKind_07",
"conditions": {
"type": "Category"
},
"prefix": "ПК",
"separator": "-",
"length": 2,
"limit": 1,
"conflictWith": [],
"dependsOn": []
},
{
"id": "NMDKind_03",
"conditions": {
"type": "BProcess"
},
"prefix": "КР",
"separator": "-",
"length": 2,
"conflictWith": [],
"dependsOn": [
"NMDKind_07"
]
}
]
На выходе количество импортированных правил
2
Импорт списка правил для создания номеров.
- Input: Rule[]
- Output: integer
| Команда | Путь |
|---|---|
| gpnCounter_importRules | Kafka topic "gpn_counter_commands" |
CreateNumber
На входе данные для создания номера
{
"number": "01.02",
"ruleId": "NMDKind_07",
"conditions": {
"type": "Category"
}
}
На выходе ID созданного номера либо бизнес-ошибка
{
"fixed": "ПК-01.02",
"count": "01"
}
Получение свободного номера. Выполняет проверку на дубли. Для создание номера есть два способа:
| Способ | Параметры | Пример номера |
|---|---|---|
| Автоматический (генерация номера по правилу) | number, ruleId, conditions | КР-01.02-01 |
| Ручной (только проверка введенного номера) | code, ruleId, conditions | ПК-01.02-02 |
- Input: NumberCreateDTO[]
- Output: NumberCreateResult
| Команда | Путь |
|---|---|
| gpnCounter_createNumber | HTTP POST "/v1/number/create" |
AcquireNumber
На входе данные для занятия номера
{
"code": "ПК-01.02",
"ruleId": "NMDKind_07",
"entityId": "00000000-0000-0000-0000-000000000001"
}
На выходе признак успешности занятия номера
true
Занять свободный номер. Если entityId не передан, занять можно только номер с пустым entityId.
- Input: NumberAcquireDTO[]
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnCounter_acquireNumber | HTTP POST "/v1/number/acquire" |
ReleaseNumber
На входе данные для освобождения номера
{
"code": "ПК-01.02",
"entityId": "00000000-0000-0000-0000-000000000001"
}
На выходе признак успешности освобождения номера
true
Освободить занятый номер. Передавать ruleId не обязательно (не обрабатывается). Если entityId не передан, освободить можно только номер с пустым entityId.
- Input: NumberAcquireDTO[]
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnCounter_releaseNumber | HTTP POST "/v1/number/release" |
ReleaseNumberBatch
На входе данные для освобождения номеров
[
{
"code": "ПК-01.02",
"entityId": "00000000-0000-0000-0000-000000000001"
},
{
"code": "ПК-01.03",
"entityId": "00000000-0000-0000-0000-000000000002"
}
]
На выходе признак успешности освобождения номера
true
Освободить занятые номера. Передавать ruleId не обязательно (не обрабатывается). Если entityId не передан, освободить можно только номер с пустым entityId.
| Команда | Путь |
|---|---|
| gpnCounter_releaseNumberBatch | HTTP POST "/v1/number/release-batch" |
ListNumbers
Список существующих номеров
На входе фильтр поиска Search
{
"query": "ruleId",
"context": {
"ruleId": {
"values": [
"null"
],
"kind": "any"
}
},
"sorting": {
"fieldName": "id",
"order": "asc"
},
"paging": {
"page": 1,
"count": 1
}
}
На выходе список номеров
{
"items": [
{
"id": "000dc046-2c37-4f90-81dc-8b144502e688",
"code": "02.15.01.03.04",
"number": "02.15.01.03",
"count": 4,
"ruleId": null,
"entityId": "2e5ec0b8-8b07-445a-8840-b0c749431f98",
"taken": true,
"created": 1682672212700,
"createdBy": "00000000-0000-0000-0000-000000000001",
"modified": 1682672212700,
"modifiedBy": "00000000-0000-0000-0000-000000000001"
}
],
"total": 3382
}
Информация о существующих номерах.
Поддерживается только синхронный вызов.
- Input: Search
- Output: Page[Number]
| Команда | Путь |
|---|---|
| gpnCounter_listNumbers | HTTP POST "/v1/number/list" |
UpdateNumberRule
Заменяет правило в нескольких номерах
На входе список id номеров и код правила
{
"ids":["249123f6-34f6-4313-8e9c-e73418c92b04"],
"ruleId":"BusinessProcessCode"
}
На выходе пустой объект
{}
Поддерживается синхронный и асинхронный вызов.
- Input: NumberUpdateRuleDTO[]
- Output: пустой объект
| Команда | Путь |
|---|---|
| gpnCounter_updateNumberRule | Kafka topic "gpn_counter_commands" |
Объекты сервиса gpn-counter
Rule
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | String | да | ID правила |
| conditions | Json | да | условия выполения |
| prefix | String | нет | префикс номера |
| separator | String | нет | разделитель номера (по умолчанию точка) |
| length | integer | да | длина индекса счетчика (по умолчанию 2) |
| limit | integer | нет | Максимальное количество номеров для одного кода |
| conflictWith | String[] | да | Не создается, если есть хотя бы один номер по одному из этих правил |
| dependsOn | String[] | да | Не создается, если нет номеров по одному из этих правил |
NumberCreateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| code | String | нет | код |
| number | String | нет | номер |
| ruleId | String | нет | ID правила |
| conditions | Json | нет | условия для проверки соответствия правилу |
NumberAcquireDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| code | String | да | код |
| ruleId | String | нет | ID правила (для освобождения номера не требуется) |
| entityId | String | да | ID сущности во внешнем сервисе |
NumberCreateResult
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| fixed | String | да | Фиксированная часть номера |
| count | String | нет | Форматированное число из счетчика |
NumberUpdateRuleDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| ids | UUID[] | да | Список идентификаторов номеров |
| ruleId | String | да | Код правила |
Number
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | Список идентификаторов номеров |
| code | String | да | Сгенерированный итоговый код |
| number | String | нет | Номер |
| count | Integer | да | Счетчик |
| ruleId | String | да | ID правила |
| entityId | String | да | ID связанной сущности |
| taken | Boolean | да | Признак занятости номера |
| created | TimeStamp | да | Дата и время создания |
| createdBy | UUID | да | ID создавшего запись пользователя |
| modified | TimeStamp | да | Дата и время изменения |
| modifiedBy | UUID | да | ID изменившего запись пользователя |
gpn-news
Сервис принимает команды и хранит состояние в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик gpn_news_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
- domain, в котором содержатся все доменные модели и их различные представления.
- commands, в котором содержатся все? что связано с командами, их описанием и обработчиками.
- storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.
- service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.
- boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу localhost:5432/gpn-news
- Kafka по адресу localhost:9092
- Consul по адресу localhost:8500
- Адрес Kafka будет указан в application.conf
- Добавлены необходимые переменные окружения:
- GPN_NEWS_DB_HOST
- GPN_NEWS_DB_PORT
- GPN_NEWS_DB_NAME
- GPN_NEWS_DB_USER
- GPN_NEWS_DB_PASSWORD
Запуск из консоли с помощью SBT
GPN_NEWS_DB_HOST=localhost GPN_NEWS_DB_PORT=5432 GPN_NEWS_DB_NAME=gpn-news_db GPN_NEWS_DB_USER=postgres GPN_NEWS_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса gpn-news
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| GPN_NEWS_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| GPN_NEWS_HTTP_PORT | int | нет | 8192 | Порт, на котором слушает HTTP-сервер |
| GPN_NEWS_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| GPN_NEWS_KAFKA_TOPIC | string | нет | "gpn_news_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| GPN_NEWS_KAFKA_CONSUMER_GROUP | string | нет | "gpn_news_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| GPN_NEWS_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| GPN_NEWS_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| GPN_NEWS_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| GPN_NEWS_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| GPN_NEWS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах GPN_NEWS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| GPN_NEWS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который GPN_NEWS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| GPN_NEWS_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| GPN_NEWS_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| GPN_NEWS_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| GPN_NEWS_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| GPN_NEWS_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| GPN_NEWS_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| GPN_NEWS_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к хранилищу сертификатов. |
| GPN_NEWS_KAFKA_AUTH_MODE | string | нет | "static" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| GPN_NEWS_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]. Переменная соответствует полю authConfig из KafkaAuthSettings. |
| GPN_NEWS_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| GPN_NEWS_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| GPN_NEWS_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| GPN_NEWS_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| GPN_NEWS_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| GPN_NEWS_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| GPN_NEWS_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| GPN_NEWS_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| GPN_NEWS_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| GPN_NEWS_REQUEST_PARALLELISM | int | нет | 16 | Количество потоков для параллельного выполнения операций |
| GPN_NEWS_DISCOVERABLE_ID | string | нет | "another_gpn_news_service_instance" | ID сервиса в ServiceDiscovery |
| GPN_NEWS_DISCOVERABLE_NAME | string | нет | "gpn-news" | Имя сервиса в ServiceDiscovery |
| GPN_NEWS_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| GPN_NEWS_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| GPN_NEWS_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| GPN_NEWS_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| GPN_NEWS_SERVICE_TITLE | string | нет | "gpn-news" | Название сервиса для отображения |
| GPN_NEWS_SERVICE_DESCRIPTION | string | нет | "Service GPN_NEWS" | Описание сервиса для отображения |
| GPN_NEWS_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| GPN_NEWS_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| GPN_NEWS_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| GPN_NEWS_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| GPN_NEWS_HEALTH_TIMEOUT | duration string | нет | 5 seconds | Максимальное время ожидания ответа health check |
| GPN_NEWS_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| GPN_NEWS_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| GPN_NEWS_DB_HOST | string | да | Хост БД | |
| GPN_NEWS_DB_PORT | int | да | Порт БД | |
| GPN_NEWS_DB_NAME | string | да | Имя базы в БД | |
| GPN_NEWS_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| GPN_NEWS_DB_USER | string | да | Пользователь БД | |
| GPN_NEWS_DB_PASSWORD | string | да | Пароль пользователя БД | |
| GPN_NEWS_FS_URI | url string | нет | http://localhost:9000 | Адрес для подключения к Minio |
| GPN_NEWS_FS_ACCESS_KEY_ID | string | нет | "" | Ключ доступа к хранилищу файлов Minio (aka пользователь) |
| GPN_NEWS_FS_SECRET_ACCESS_KEY | string | нет | "" | Секретный код доступа к хранилищу файлов Minio (aka пароль) |
| GPN_NEWS_FS_UPLOAD_PARALLELISM | int | нет | 4 | Максимально возможный параллелизм при загрузке файлов в хранилище |
| GPN_NEWS_FS_AUTH_MODE | string | нет | static | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| GPN_NEWS_FS_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации, если AuthMode = mapping (пример: [{"bucketName": "news", "credentials": {"accessKeyId": "minioadmin", "secretAccessKey": "minioadmin"}}]) |
| GPN_NEWS_FS_CACHE_SIZE | int | нет | 1 | Максимальный размер кеша клиентов для хранилища файлов (количество активных соединений). |
| GPN_NEWS_FS_CACHE_TTL | duration string | нет | Время жизни клиента в кеше | |
| GPN_NEWS_DEFAULT_BUCKET | string | нет | "news" | Название бакета в Minio для постоянного хранения |
| GPN_NEWS_TEMP_BUCKET | string | нет | "temp" | Название бакета в Minio, в котором находятся временные файлы |
| GPN_NEWS_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| GPN_NEWS_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| GPN_NEWS_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| GPN_NEWS_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| GPN_NEWS_LOG_LEVEL_SLICK_STATEMENT | string | нет | INFO | Уровень логирования запросов, отправляемых slick в БД |
| GPN_NEWS_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирование бенчмарков выполнения запросов slick |
| GPN_NEWS_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| GPN_NEWS_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| GPN_NEWS_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| GPN_NEWS_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| GPN_NEWS_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| GPN_NEWS_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| GPN_NEWS_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| GPN_NEWS_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| LOGGING_HOSTNAME | string | нет | SERVER | Имя сервера для CEF-логов |
| LOGGING_EXTERNAL_ADDRESS | string | нет | localhost | IP-адрес сервера для CEF-логов |
| GPN_VERSION_POSTFIX | string | нет | Постфикс библиотеки gpn-libs для сборки CI | |
| CLIENT_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-domain-lib для сборки CI | |
| SYSTEM_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-system-lib для сборки CI | |
| GPN_NEWS_LOG_FORMAT | string | нет | CEF | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| GPN_NEWS_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| GPN_NEWS_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| GPN_NEWS_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| GPN_NEWS_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| GPN_NEWS_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| GPN_NEWS_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| GPN_NEWS_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| GPN_NEWS_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| GPN_NEWS_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
Список команд сервиса gpn-news
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованы следующие команды:
- Создание новости
- Обновление новости
- Удаление новости
- Восстановление новости
- Получение новости
- Список новостей
CreateNews
На выходе атрибуты для создания новости
{
"text": "News text",
"images": ["cda0f83d-07d5-44ea-9c07-93c1f680b4e5"],
"files": ["2e0b6a98-a56c-41b6-a26f-200d275899fe"]
}
На выходе ID новости
"ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5"
Добавление новости.
ID файлов из временного хранилища, указанные в массивах, будут перемещены в постоянную папку news в соответствующие подпапки Image и File.
- Input: NewsCreateDTO
- Output: UUID
| Команда | Путь |
|---|---|
| gpnNews_createNews | Kafka Topic "gpn_news_commands" |
UpdateNews
На выходе атрибуты для обновления новости
{
"id": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
"text": "New text",
"imageIds": ["4a6d8c6a-3a79-4bc2-bc8a-af5ebf114ad8"],
"fileIds": ["2e0b6a98-a56c-41b6-a26f-200d275899fe", "5ed5995e-a407-42c0-a48e-6cea33528903"],
"version": 1
}
На выходе признак успешности обновления
true
Обновление новости. Принимает "version" для оптимистичной блокировки.
Файлы, ID которых добавлены в массивы, будут прикреплены к новости. Файлы, ID которых отсутствуют к массивах, будут удалены безвозвратно.
- Input: NewsUpdateDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnNews_updateNews | Kafka Topic "gpn_news_commands" |
DeleteNews
На входе ID новости
"ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5"
На выходе признак успешности удаления
true
Удаление новости.
- Input: UUID новости
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnNews_deleteNews | Kafka Topic "gpn_news_commands" |
RestoreNews
На входе ID новости
"ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5"
На выходе признак успешности восстановления
true
Восстановление новости.
- Input: UUID новости
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnNews_restoreNews | Kafka Topic "gpn_news_commands" |
GetNews
На входе ID новости
"ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5"
На выходе атрибуты новости и связанных файлов
{
"id": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
"text": "News text",
"images": [
{
"fileId": "cda0f83d-07d5-44ea-9c07-93c1f680b4e5",
"name": "img_26.jpg",
"url": "news/Image/cda0f83d-07d5-44ea-9c07-93c1f680b4e5",
"size": 25693
}
],
"files": [
{
"fileId": "2e0b6a98-a56c-41b6-a26f-200d275899fe",
"name": "М-01.02.06-01 Учет добытой нефти (версия 2.0).docx",
"url": "news/File/2e0b6a98-a56c-41b6-a26f-200d275899fe",
"size": 156892
}
],
"created": 1684844743900,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1684844743900,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1
}
Получение новости.
- Input: UUID новости
- Output: News
| Команда | Путь |
|---|---|
| gpnNews_getNews | HTTP POST "/v1/news/get" |
ListNews
На входе параметры поиска, сортировки и пагинации (Search)
{
"query": "",
"context": {}
}
На выходе список новостей и их общее количество
{
"items": [
{
"id": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
"text": "News text",
"images": [
{
"fileId": "cda0f83d-07d5-44ea-9c07-93c1f680b4e5",
"name": "img_26.jpg",
"url": "news/Image/cda0f83d-07d5-44ea-9c07-93c1f680b4e5",
"size": 25693
}
],
"files": [
{
"fileId": "2e0b6a98-a56c-41b6-a26f-200d275899fe",
"name": "М-01.02.06-01 Учет добытой нефти (версия 2.0).docx",
"url": "news/File/2e0b6a98-a56c-41b6-a26f-200d275899fe",
"size": 156892
}
],
"created": 1684844743900,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1684844743900,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1
},
{
"id": "ed76a278-fc8e-4a42-8552-816ed6ccef88",
"text": "Another news text",
"images": [],
"files": [],
"created": 1684138424729,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1684837200114,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1
}
],
"total": 2
}
Получение списка новостей с поиском, сортировкой и пагинацией.
- Input: Search
- Output: Page[News]
| Команда | Путь |
|---|---|
| gpnNews_listNews | HTTP POST "/v1/news/list" |
Объекты сервиса gpn-news
NewsCreateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| text | string | да | Текст новости |
| imageIds | uuid[] | да | Список ID изображений |
| fileIds | uuid[] | да | Список ID файлов |
NewsUpdateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID новости |
| text | string | да | Текст новости |
| imageIds | uuid[] | да | Список ID изображений |
| fileIds | uuid[] | да | Список ID файлов |
| version | int | да | Версия для оптимистичной блокировки |
News
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID новости |
| text | string | да | Текст новости |
| images | File[] | да | Список ID изображений |
| files | File[] | да | Список ID файлов |
| created | timestamp | да | Дата и время создания |
| createdBy | uuid | да | ID пользователя создавшего запись |
| modified | timestamp | да | Дата и время изменения |
| modifiedBy | uuid | да | ID пользователя последним изменившего запись |
| removed | boolean | да | Признак удаления записи |
| version | int | да | Версия для оптимистичной блокировки |
File
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| fileId | uuid | да | ID файла |
| name | string | да | Имя файла с расширением |
| url | string | да | Ссылка на скачивание файла из файлового хранилища |
| size | long | да | Размер файла в байтах |
gpn-recommendation
Сервис принимает команды и хранит состояние в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик gpn_recommendation_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
domain, в котором содержатся все доменные модели и их различные представления.commands, в котором содержатся все? что связано с командами, их описанием и обработчиками.storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу
localhost:5432/gpnrecommendation - Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - Добавлены необходимые переменные окружения:
- GPN_RECOMMENDATION_DB_HOST
- GPN_RECOMMENDATION_DB_PORT
- GPN_RECOMMENDATION_DB_NAME
- GPN_RECOMMENDATION_DB_USER
- GPN_RECOMMENDATION_DB_PASSWORD
Запуск из консоли с помощью SBT
GPN_RECOMMENDATION_DB_HOST=localhost GPN_RECOMMENDATION_DB_PORT=5432 GPN_RECOMMENDATION_DB_NAME=gpnrecommendation GPN_RECOMMENDATION_DB_USER=postgres GPN_RECOMMENDATION_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса gpn-recommendation
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| GPN_RECOMMENDATION_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| GPN_RECOMMENDATION_HTTP_PORT | int | нет | 8192 | Порт, на котором слушает HTTP-сервер |
| GPN_RECOMMENDATION_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| GPN_RECOMMENDATION_KAFKA_TOPIC | string | нет | "gpn_recommendation_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| GPN_RECOMMENDATION_KAFKA_CONSUMER_GROUP | string | нет | "gpn_recommendation_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| GPN_RECOMMENDATION_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| GPN_RECOMMENDATION_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| GPN_RECOMMENDATION_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| GPN_RECOMMENDATION_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| GPN_RECOMMENDATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах GPN_RECOMMENDATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| GPN_RECOMMENDATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который GPN_RECOMMENDATION_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| GPN_RECOMMENDATION_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| GPN_RECOMMENDATION_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| GPN_RECOMMENDATION_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| GPN_RECOMMENDATION_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| GPN_RECOMMENDATION_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| GPN_RECOMMENDATION_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| GPN_RECOMMENDATION_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к хранилищу сертификатов. |
| GPN_RECOMMENDATION_KAFKA_AUTH_MODE | string | нет | "static" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| GPN_RECOMMENDATION_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]. Переменная соответствует полю authConfig из KafkaAuthSettings. |
| GPN_RECOMMENDATION_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| GPN_RECOMMENDATION_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| GPN_RECOMMENDATION_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| GPN_RECOMMENDATION_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| GPN_RECOMMENDATION_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| GPN_RECOMMENDATION_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| GPN_RECOMMENDATION_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| GPN_RECOMMENDATION_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| GPN_RECOMMENDATION_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| GPN_RECOMMENDATION_DISCOVERABLE_ID | string | нет | "another_gpn_recommendation_service_instance" | ID сервиса в ServiceDiscovery |
| GPN_RECOMMENDATION_DISCOVERABLE_NAME | string | нет | "gpnrecommendation" | Имя сервиса в ServiceDiscovery |
| GPN_RECOMMENDATION_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| GPN_RECOMMENDATION_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| GPN_RECOMMENDATION_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| GPN_RECOMMENDATION_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| GPN_RECOMMENDATION_SERVICE_TITLE | string | нет | "gpn-recommendation" | Название сервиса для отображения |
| GPN_RECOMMENDATION_SERVICE_DESCRIPTION | string | нет | "Service GPN_RECOMMENDATION" | Описание сервиса для отображения |
| GPN_RECOMMENDATION_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| GPN_RECOMMENDATION_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| GPN_RECOMMENDATION_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| GPN_RECOMMENDATION_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| GPN_RECOMMENDATION_HEALTH_TIMEOUT | duration string | нет | 5 seconds | Максимальное время ожидания ответа health check |
| GPN_RECOMMENDATION_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| GPN_RECOMMENDATION_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| GPN_RECOMMENDATION_DB_HOST | string | да | Хост БД | |
| GPN_RECOMMENDATION_DB_PORT | int | да | Порт БД | |
| GPN_RECOMMENDATION_DB_NAME | string | да | Имя базы в БД | |
| GPN_RECOMMENDATION_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| GPN_RECOMMENDATION_DB_USER | string | да | Пользователь БД | |
| GPN_RECOMMENDATION_DB_PASSWORD | string | да | Пароль пользователя БД | |
| GPN_RECOMMENDATION_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| GPN_RECOMMENDATION_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| GPN_RECOMMENDATION_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| GPN_RECOMMENDATION_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| GPN_RECOMMENDATION_LOG_LEVEL_SLICK_STATEMENT | string | нет | INFO | Уровень логирования запросов, отправляемых slick в БД |
| GPN_RECOMMENDATION_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирование бенчмарков выполнения запросов slick |
| GPN_RECOMMENDATION_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| GPN_RECOMMENDATION_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| GPN_RECOMMENDATION_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| GPN_RECOMMENDATION_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| GPN_RECOMMENDATION_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| GPN_RECOMMENDATION_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| GPN_RECOMMENDATION_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| GPN_RECOMMENDATION_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| LOGGING_HOSTNAME | string | нет | SERVER | Имя сервера для CEF-логов |
| LOGGING_EXTERNAL_ADDRESS | string | нет | localhost | IP-адрес сервера для CEF-логов |
| GPN_VERSION_POSTFIX | string | нет | Постфикс библиотеки gpn-libs для сборки CI | |
| CLIENT_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-domain-lib для сборки CI | |
| SYSTEM_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-system-lib для сборки CI | |
| GPN_RECOMMENDATION_SAFE_PAGE_SIZE | int | нет | 500 | Число сущностей, помещающихся в одно сообщение kafka |
| GPN_RECOMMENDATION_LOG_FORMAT | string | нет | CEF | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| GPN_RECOMMENDATION_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| GPN_RECOMMENDATION_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| GPN_RECOMMENDATION_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| GPN_RECOMMENDATION_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| GPN_RECOMMENDATION_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| GPN_RECOMMENDATION_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| GPN_RECOMMENDATION_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| GPN_RECOMMENDATION_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| GPN_RECOMMENDATION_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
Список команд сервиса gpn-recommendation
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованы следующие команды:
- Создание списка предложений
- Обновление списка предложений
- Удаление списка предложений
- Восстановление списка предложений
- Получение списка предложений по ID
- Список списков предложений
- Создание предложения
- Обновление предложения
- Оставление ответа на предложение
- Удаление предложения
- Восстановление предложения
- Получение предложения по ID
- Список предложений
- Создание обращения
- Обновление обращения
- Оставление ответа на обращение
- Удаление обращения
- Восстановление обращения
- Получение обращения по ID
- Список обращений
CreateRecommendationGroup
На выходе атрибуты для создания нового списка предложений
{
"title": "title",
"classCode": "QuarterlyPlanRequest",
"entityId": "00000000-0000-0000-0000-000000000001",
"data": {},
"isFilled": false
}
На выходе атрибуты ID списка предложений
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
Добавление нового списка предложений.
- Input: RecommendationGroupCreateDTO
- Output: UUID
| Команда | Путь |
|---|---|
| gpnRecommendation_createRecommendationGroup | Kafka Topic "gpnRecommendation_commands" |
UpdateRecommendationGroup
На выходе атрибуты для обновления списка предложений
{
"id": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"code": "code",
"classCode": "QuarterlyPlanRequest",
"entityId": "00000000-0000-0000-0000-000000000001",
"data": {},
"isFilled": true,
"version": 1
}
На выходе признак успешности обновления
true
Обновление списка предложений. Принимает "version" для оптимистичной блокировки.
- Input: RecommendationGroupUpdateDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_updateRecommendationGroup | Kafka Topic "gpnRecommendation_commands" |
DeleteRecommendationGroup
На входе ID списка предложений
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
На выходе признак успешности удаления
true
Удаление списка предложений.
- Input: UUID списка предложений
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_deleteRecommendationGroup | Kafka Topic "gpnRecommendation_commands" |
RestoreRecommendationGroup
На входе ID списка предложений
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
На выходе признак успешности восстановления
true
Восстановление списка предложений.
- Input: UUID списка предложений
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_restoreRecommendationGroup | Kafka Topic "gpnRecommendation_commands" |
GetRecommendationGroup
На входе ID списка предложений
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
На выходе атрибуты списка предложений
{
"id": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"code": "code",
"classCode": "QuarterlyPlanRequest",
"entityId": "00000000-0000-0000-0000-000000000001",
"data": {},
"isFilled": false,
"created": 1661866284080,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1661866284080,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1
}
Получение списка предложений.
- Input: UUID списка предложений
- Output: RecommendationGroup
| Команда | Путь |
|---|---|
| gpnRecommendation_getRecommendationGroup | HTTP POST "/v1/recommendation-list/get" |
ListRecommendationGroups
На входе параметры поиска, сортировки и пагинации (Search)
{
"query": "",
"context": {},
"sorting": {
"fieldName": "code",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список списков предложений
{
"items": [
{
"id": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"code": "code",
"classCode": "QuarterlyPlanRequest",
"entityId": "00000000-0000-0000-0000-000000000001",
"data": {},
"isFilled": false,
"created": 1661866284080,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1661866284080,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1
}
],
"total": 1
}
Получение списка списков предложений с поиском, сортировкой и пагинацией.
- Input: Search
- Output: Page[RecommendationGroupListDTO]
| Команда | Путь |
|---|---|
| gpnRecommendation_listRecommendationGroups | HTTP POST "/v1/recommendation-list/list" |
CreateRecommendation
На входе атрибуты для создания нового предложения
{
"classCode": "DocumentVersion",
"entityId": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"recommendationType": "type",
"comment": "comment",
"answer": "answer",
"developmentReason": "reason",
"developmentDate": 1661866284080,
"planId": null
}
На выходе ID нового предложения
"ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5"
Добавление нового предложения.
- Input: RecommendationCreateDTO
- Output: UUID
| Команда | Путь |
|---|---|
| gpnRecommendation_createRecommendation | Kafka Topic "gpnRecommendation_commands" |
UpdateRecommendation
На входе атрибуты для обновления предложения
{
"id": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
"classCode": "DocumentVersion",
"entityId": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"recommendationType": "type",
"comment": "comment",
"answer": "answer",
"developmentReason": "reason",
"developmentDate": 1661866284080,
"planId": null,
"version": 1
}
На выходе признак успешности обновления
true
Обновление предложения. Принимает "version" для оптимистичной блокировки.
- Input: RecommendationUpdateDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_updateRecommendation | Kafka Topic "gpnRecommendation_commands" |
SetRecommendationAnswer
На входе атрибуты для оставления ответа
{
"id": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
"answer": "answer",
"version": 1
}
На выходе признак успешности обновления
true
Оставление ответа. Принимает "version" для оптимистичной блокировки.
- Input: SetAnswerDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_setRecommendationAnswer | Kafka Topic "gpnRecommendation_commands" |
DeleteRecommendation
На входе id предложения
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
На выходе признак успешности удаления
true
Удаление предложения.
- Input: ID предложения
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_deleteRecommendation | Kafka Topic "gpnRecommendation_commands" |
RestoreRecommendation
На входе id предложения
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
На выходе признак успешности восстановления
true
Восстановление предложения.
- Input: ID предложения
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_restoreRecommendation | Kafka Topic "gpnRecommendation_commands" |
GetRecommendation
На входе ID предложения
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
На выходе атрибуты предложения
{
"id": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"classCode": "DocumentVersion",
"entityId": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"recommendationType": "type",
"comment": "comment",
"answer": "answer",
"developmentReason": "reason",
"developmentDate": 1661866284080,
"planId": null,
"created": 1661866284080,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1661866284080,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1
}
Получение предложения.
- Input: ID предложения
- Output: Recommendation
| Команда | Путь |
|---|---|
| gpnRecommendation_getRecommendation | HTTP POST "/v1/Recommendation/get" |
ListRecommendations
На входе параметры поиска, сортировки и пагинации (Search), Возможна фильтрация по полям data, путь указывается через точку. Например "data.owner.firstName"
{
"query": "",
"context": {},
"sorting": {
"fieldName": "title",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список рекомендаций и их общее количество
{
"items": [
{
"id": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"classCode": "DocumentVersion",
"entityId": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"recommendationType": "type",
"comment": "comment",
"answer": "answer",
"developmentReason": "reason",
"developmentDate": 1661866284080,
"planId": null,
"reviewCount": 3,
"created": 1661866284080,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1661866284080,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1
}
],
"total": 1
}
Получение списка маршрутов с поиском, сортировкой и пагинацией.
- Input: Search
- Output: Page[RecommendationListDTO]
| Команда | Путь |
|---|---|
| gpnRecommendation_listRecommendations | HTTP POST "/v1/Recommendation/list" |
CreateReview
На входе атрибуты для создания нового обращения
{
"reviewExtId": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"answer": "answer",
"recommendationId": "fbf87ff2-2778-4575-b3ca-a2abdf2e6e7e"
}
На выходе ID нового обращения
"ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5"
Добавление нового обращения.
- Input: ReviewCreateDTO
- Output: UUID
| Команда | Путь |
|---|---|
| gpnRecommendation_createReview | Kafka Topic "gpnRecommendation_commands" |
UpdateReview
На входе атрибуты для обновления обращения
{
"id": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
"reviewExtId": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"answer": "answer",
"recommendationId": "fbf87ff2-2778-4575-b3ca-a2abdf2e6e7e",
"version": 1
}
На выходе признак успешности обновления
true
Обновление обращения. Принимает "version" для оптимистичной блокировки.
- Input: ReviewUpdateDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_updateReview | Kafka Topic "gpnRecommendation_commands" |
SetReviewAnswer
На входе атрибуты для оставления ответа
{
"id": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
"answer": "answer",
"version": 1
}
На выходе признак успешности обновления
true
Оставление ответа. Принимает "version" для оптимистичной блокировки.
- Input: SetAnswerDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_setReviewAnswer | Kafka Topic "gpnRecommendation_commands" |
DeleteReview
На входе id обращения
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
На выходе признак успешности удаления
true
Удаление обращения.
- Input: ID обращения
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_deleteReview | Kafka Topic "gpnRecommendation_commands" |
RestoreReview
На входе id обращения
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
На выходе признак успешности восстановления
true
Восстановление обращения.
- Input: ID обращения
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_restoreReview | Kafka Topic "gpnRecommendation_commands" |
GetReview
На входе ID обращения
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
На выходе атрибуты обращения
{
"id": "f8679f00-dc8a-4f69-baa0-24b1fad382d8",
"reviewExtId": "9af1e2df-0e3b-4d8c-9474-f39172ff10bc",
"answer": "answer",
"recommendationId": "34174fac-042c-475e-a38d-41d69e8ccebe",
"created": 1692683050009,
"createdBy": "ba317843-d2cb-4c0f-b5d8-275ff106e260",
"modified": 1692683050009,
"modifiedBy": "ba317843-d2cb-4c0f-b5d8-275ff106e260",
"removed": false,
"version": 1
}
Получение обращения.
- Input: ID обращения
- Output: Review
| Команда | Путь |
|---|---|
| gpnRecommendation_getReview | HTTP POST "/v1/review/get" |
ListReviews
На входе параметры поиска, сортировки и пагинации (Search)
{
"query": "",
"context": {},
"sorting": {
"fieldName": "title",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список обращений и их общее количество
{
"items": [
{
"id": "f8679f00-dc8a-4f69-baa0-24b1fad382d8",
"reviewExtId": "9af1e2df-0e3b-4d8c-9474-f39172ff10bc",
"answer": "answer",
"recommendationId": "34174fac-042c-475e-a38d-41d69e8ccebe",
"created": 1692683050009,
"createdBy": "ba317843-d2cb-4c0f-b5d8-275ff106e260",
"modified": 1692683050009,
"modifiedBy": "ba317843-d2cb-4c0f-b5d8-275ff106e260",
"removed": false,
"version": 1
}
],
"total": 1
}
Получение списка обращений с поиском, сортировкой и пагинацией.
- Input: Search
- Output: Page[Review]
| Команда | Путь |
|---|---|
| gpnRecommendation_listReviews | HTTP POST "/v1/review/list" |
AddRecommendationToGroup
На входе атрибуты для добавления в список предложений и обновления самого предложения
{
"recommendationGroupId": "f8679f00-dc8a-4f69-baa0-24b1fad382d8",
"recommendationUpdate": {
"id": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
"classCode": "DocumentVersion",
"entityId": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"recommendationType": "type",
"comment": "comment",
"answer": "answer",
"developmentReason": "reason",
"developmentDate": 1661866284080,
"planId": null,
"version": 1
}
}
На выходе признак успешности добавления в список
true
Добавление предложения в список.
- Input: RecommendationToGroupAddDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_addRecommendationToGroup | Kafka Topic "gpnRecommendation_commands" |
AddRecommendationsToGroup
На входе атрибуты для пакетного добавления предложений в список предложений
{
"recommendationGroupId": "f8679f00-dc8a-4f69-baa0-24b1fad382d8",
"recommendationIds": [
"ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
"24404bb3-fc1e-4388-ac4b-9c99beb89e91"
]
}
На выходе признак успешности добавления в список
true
Добавление предложений в список.
- Input: RecommendationToGroupAddBatchDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_addRecommendationsToGroup | Kafka Topic "gpnRecommendation_commands" |
DeleteRecommendationFromGroup
На входе атрибуты для удаления предложения из списка предложений и очистки данных предложения
{
"recommendationId": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
"recommendationGroupId": "f8679f00-dc8a-4f69-baa0-24b1fad382d8"
}
На выходе признак успешности удаления из списка
true
Удаление предложения из списка.
- Input: RecommendationToGroupDeleteDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| gpnRecommendation_DeleteRecommendationFromGroup | Kafka Topic "gpnRecommendation_commands" |
TestRules
На входе атрибуты запроса, для которого выполняется проверка, стадии, на которой он находится, соответствующего сотрудника и его организации, а также непосредственно правила для проверки
{
"routeStageId": "00000000-0000-0000-0000-000000000001",
"employeeId": "00000000-0000-0000-0000-000000000001",
"employeeOrg": "00000000-0000-0000-0000-000000000001",
"displayRules": [
{
"code": "code",
"byUserOrganization": true,
"forOwners": true,
"action": "createPlan"
}
],
"addToGroupRule": null,
"requestId": "00000000-0000-0000-0000-000000000001"
}
На выходе ничего, либо бизнес ошибки
Проверка того, что для предложений были созданы плановые записи и оставлены ответы.
- Input: TestRulesDTO
- Output: Nothing
| Команда | Путь |
|---|---|
| gpnRecommendation_testRules | Kafka Topic "gpnRecommendation_commands" |
Объекты сервиса gpn-recommendation
RecommendationGroupCreateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| title | string | да | Наименование |
| classCode | string | да | Код сущности к которому привязана группа |
| entityId | string | да | ID сущности к которому привязана группа |
| data | json | нет | Доп. данные |
| isFilled | boolean | нет | Признак заполненности группы |
RecommendationGroupUpdateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID рекомендации |
| title | string | да | Наименование |
| classCode | string | да | Код сущности к которому привязана группа |
| entityId | string | да | ID сущности к которому привязана группа |
| data | json | нет | Доп. данные |
| isFilled | boolean | да | Признак заполненности группы |
| version | int | да | Версия для оптимистичной блокировки |
RecommendationGroup
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID рекомендации |
| title | string | да | Наименование |
| classCode | string | да | Код сущности к которому привязана группа |
| entityId | string | да | ID сущности к которому привязана группа |
| data | json | нет | Доп. данные |
| isFilled | boolean | да | Признак заполненности группы |
| created | timestamp | да | Дата и время создания |
| createdBy | uuid | да | ID пользователя создавшего запись |
| modified | timestamp | да | Дата и время изменения |
| modifiedBy | uuid | да | ID пользователя последним изменившего запись |
| removed | boolean | да | Признак удаления записи |
| version | int | да | Версия для оптимистичной блокировки |
RecommendationGroupListDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID рекомендации |
| title | string | да | Наименование |
| classCode | string | да | Код сущности к которому привязана группа |
| entityId | string | да | ID сущности к которому привязана группа |
| data | json | нет | Доп. данные |
| isFilled | boolean | да | Признак заполненности группы |
| created | timestamp | да | Дата и время создания |
| createdBy | uuid | да | ID пользователя создавшего запись |
| modified | timestamp | да | Дата и время изменения |
| modifiedBy | uuid | да | ID пользователя последним изменившего запись |
| removed | boolean | да | Признак удаления записи |
| version | int | да | Версия для оптимистичной блокировки |
| recommendationCount | int | да | Кол-во рекомендаций в группе |
RecommendationCreateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| classCode | string | да | Код сущности к которому привязана рекомендация |
| entityId | string | да | ID сущности к которому привязана рекомендация |
| recommendationType | string | нет | Тип предложения |
| comment | string | нет | Комментарий к предложению |
| answer | string | нет | Ответ на комментарий |
| developmentReason | string | нет | Обоснование необходимости разработки |
| developmentDate | timestamp | да | Срок разработки |
| resolutionComment | string | нет | Комментарий к резолюции |
| planId | uuid | нет | ID плановой записи |
RecommendationUpdateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID новости |
| classCode | string | да | Код сущности к которому привязана рекомендация |
| entityId | string | да | ID сущности к которому привязана рекомендация |
| recommendationType | string | нет | Тип предложения |
| comment | string | нет | Комментарий к предложению |
| answer | string | нет | Ответ на комментарий |
| developmentReason | string | нет | Обоснование необходимости разработки |
| developmentDate | timestamp | да | Срок разработки |
| resolutionComment | string | нет | Комментарий к резолюции |
| planId | uuid | нет | ID плановой записи |
| version | int | да | Версия для оптимистичной блокировки |
Recommendation
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID новости |
| classCode | string | да | Код сущности к которому привязана рекомендация |
| entityId | string | да | ID сущности к которому привязана рекомендация |
| recommendationType | string | нет | Тип предложения |
| comment | string | нет | Комментарий к предложению |
| answer | string | нет | Ответ на комментарий |
| developmentReason | string | нет | Обоснование необходимости разработки |
| developmentDate | timestamp | да | Срок разработки |
| resolutionComment | string | нет | Комментарий к резолюции |
| planId | uuid | нет | ID плановой записи |
| created | timestamp | да | Дата и время создания |
| createdBy | uuid | да | ID пользователя создавшего запись |
| modified | timestamp | да | Дата и время изменения |
| modifiedBy | uuid | да | ID пользователя последним изменившего запись |
| removed | boolean | да | Признак удаления записи |
| version | int | да | Версия для оптимистичной блокировки |
RecommendationListDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID новости |
| classCode | string | да | Код сущности к которому привязана рекомендация |
| entityId | string | да | ID сущности к которому привязана рекомендация |
| RecommendationGroupId | uuid | да | ID списка предложений |
| recommendationType | string | да | Тип предложения |
| comment | string | да | Комментарий к предложению |
| resolution | string | нет | Резолюция |
| resolutionComment | string | нет | Комментарий к резолюции |
| planId | uuid | нет | ID плановой записи |
| reviewCount | int | да | Количество обращений по предложению |
| created | timestamp | да | Дата и время создания |
| createdBy | uuid | да | ID пользователя создавшего запись |
| modified | timestamp | да | Дата и время изменения |
| modifiedBy | uuid | да | ID пользователя последним изменившего запись |
| removed | boolean | да | Признак удаления записи |
| version | int | да | Версия для оптимистичной блокировки |
RecommendationToGroupAddDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| recommendationGroupID | uuid | да | ID списка предложений |
| recommendationUpdate | RecommendationUpdateDTO | да | Форма для обновления предложения |
RecommendationToGroupAddBatchDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| recommendationGroupID | uuid | да | ID списка предложений |
| recommendationIds | uuid[] | да | Список ID предложений |
RecommendationToGroupDeleteDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| recommendationId | uuid | да | ID предложения |
| recommendationGroupID | uuid | да | ID списка предложений |
ReviewCreateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| reviewExtId | uuid | да | ID в ЦНМД |
| answer | string | нет | Ответ на обращение |
| recommendationId | uuid | да | ID предложения |
ReviewUpdateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID обращения |
| reviewExtId | uuid | да | ID в ЦНМД |
| answer | string | нет | Ответ на обращение |
| recommendationId | uuid | да | ID предложения |
| version | int | да | Версия для оптимистичной блокировки |
Review
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID обращения |
| reviewExtId | uuid | да | ID в ЦНМД |
| answer | string | нет | Ответ на обращение |
| recommendationId | uuid | да | ID предложения |
| created | timestamp | да | Дата и время создания |
| createdBy | uuid | да | ID пользователя создавшего запись |
| modified | timestamp | да | Дата и время изменения |
| modifiedBy | uuid | да | ID пользователя последним изменившего запись |
| removed | boolean | да | Признак удаления записи |
| version | int | да | Версия для оптимистичной блокировки |
TestRulesDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| routeStageId | uuid | да | ID стадии маршрута |
| employeeId | uuid | да | ID сотрудника в ЦНМД |
| employeeOrg | uuid | да | ID организации сотрудника в ЦНМД |
| displayRules | RecommendationGroupDisplayRule[] | да | Правила отображения предложений |
| addToGroupRule | AddToGroup | нет | Правила добавления предложений в группу |
| requestId | uuid | да | ID запроса, для которого выполняется проверка |
SetAnswerDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID объекта |
| answer | string | нет | Ответ |
| version | int | да | Версия для оптимистичной блокировки |
sed-analytics
Сервис принимает команды и хранит состояние в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик sed_analytics_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
domain, в котором содержатся все доменные модели и их различные представления.commands, в котором содержатся всё, что связано с командами, их описанием и обработчиками.storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу localhost:5432/sed-analytics
- Kafka по адресу localhost:9092
- Consul по адресу localhost:8500
- Адрес Kafka будет указан в application.conf
- Добавлены необходимые переменные окружения:
- SED_ANALYTICS_DB_HOST
- SED_ANALYTICS_DB_PORT
- SED_ANALYTICS_DB_NAME
- SED_ANALYTICS_DB_USER
- SED_ANALYTICS_DB_PASSWORD
Запуск из консоли с помощью SBT
SED_ANALYTICS_DB_HOST=localhost SED_ANALYTICS_DB_PORT=5432 SED_ANALYTICS_DB_NAME=sed-analytics SED_ANALYTICS_DB_USER=postgres SED_ANALYTICS_DB_PASSWORD=postgres sbt boot/run
Список переменных окружения сервиса sed-analytics
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| SED_ANALYTICS_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| SED_ANALYTICS_HTTP_PORT | int | нет | 8027 | Порт, на котором слушает HTTP-сервер |
| SED_ANALYTICS_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| SED_ANALYTICS_KAFKA_CONSUMER_GROUP | string | нет | "sed_analytics_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| SED_ANALYTICS_KAFKA_TOPIC | string | нет | "sed_analytics_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| SED_ANALYTICS_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| SED_ANALYTICS_KAFKA_OBJECT_EVENT_TOPIC | string | да | "entityObjectEvent" | Название кафка-топика для получения событий |
| SED_ANALYTICS_KAFKA_OBJECT_EVENT_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика событий |
| SED_ANALYTICS_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| SED_ANALYTICS_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| SED_ANALYTICS_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| SED_ANALYTICS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах SED_ANALYTICS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| SED_ANALYTICS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который SED_ANALYTICS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| SED_ANALYTICS_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| SED_ANALYTICS_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| SED_ANALYTICS_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| SED_ANALYTICS_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| SED_ANALYTICS_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| SED_ANALYTICS_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| SED_ANALYTICS_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к харнилищу сертификатов. |
| SED_ANALYTICS_KAFKA_AUTH_MODE | string | нет | "static" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_ANALYTICS_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]. Переменная соответствует полю authConfig из KafkaAuthSettings. |
| SED_ANALYTICS_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| SED_ANALYTICS_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| SED_ANALYTICS_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| SED_ANALYTICS_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| SED_ANALYTICS_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| SED_ANALYTICS_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| SED_ANALYTICS_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| SED_ANALYTICS_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| SED_ANALYTICS_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| SED_ANALYTICS_DISCOVERABLE_ID | string | нет | "another_sed_analytics_instance" | ID сервиса в ServiceDiscovery |
| SED_ANALYTICS_DISCOVERABLE_NAME | string | нет | "sed-analytics" | Имя сервиса в ServiceDiscovery |
| SED_ANALYTICS_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| SED_ANALYTICS_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| SED_ANALYTICS_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| SED_ANALYTICS_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| SED_ANALYTICS_SERVICE_TITLE | string | нет | "sed-analytics" | Название сервиса для отображения |
| SED_ANALYTICS_SERVICE_DESCRIPTION | string | нет | "Service SED_ANALYTICS" | Описание сервиса для отображения |
| SED_ANALYTICS_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| SED_ANALYTICS_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| SED_ANALYTICS_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| SED_ANALYTICS_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| SED_ANALYTICS_HEALTH_TIMEOUT | duration string | нет | 5 seconds | Максимальное время ожидания ответа health check |
| SED_ANALYTICS_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| SED_ANALYTICS_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| SED_ANALYTICS_DB_HOST | string | да | Хост БД | |
| SED_ANALYTICS_DB_PORT | int | да | Порт БД | |
| SED_ANALYTICS_DB_NAME | string | да | Имя базы в БД | |
| SED_ANALYTICS_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| SED_ANALYTICS_DB_USER | string | да | Пользователь БД | |
| SED_ANALYTICS_DB_PASSWORD | string | да | Пароль пользователя БД | |
| SED_ANALYTICS_AUTHZFORCE_ADDR | string | нет | "http://localhost:8080/authzforce-ce" | Адрес AuthZforce server |
| SED_ANALYTICS_AUTHZFORCE_DOMAIN | string | нет | "" | Доступный DomainID в AuthZforce server |
| SED_ANALYTICS_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| SED_ANALYTICS_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| SED_ANALYTICS_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| SED_ANALYTICS_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| SED_ANALYTICS_LOG_LEVEL_SLICK_STATEMENT | string | нет | WARN | Уровень логирования запросов, отправляемых slick в БД |
| SED_ANALYTICS_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирование бенчмарков выполнения запросов slick |
| SED_ANALYTICS_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| SED_ANALYTICS_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| SED_ANALYTICS_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| SED_ANALYTICS_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| SED_ANALYTICS_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| SED_ANALYTICS_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| SED_ANALYTICS_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| SED_ANALYTICS_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| GPN_VERSION_POSTFIX | string | нет | Постфикс для библиотеки gpn-libs | |
| CLIENT_VERSION_POSTFIX | string | нет | Постфикс для библиотеки sed-client-libs | |
| SYSTEM_VERSION_POSTFIX | string | нет | Постфикс для библиотеки sed-system-lib | |
| SED_ANALYTICS_LOGGING_HOSTNAME | string | нет | SERVER | Имя хоста для логирования |
| SED_ANALYTICS_LOGGING_EXTERNAL_ADDRESS | string | нет | localhost | Дополнительный адрес логирования |
| SED_ANALYTICS_LOG_FORMAT | string | нет | CEF | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| SED_ANALYTICS_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| SED_ANALYTICS_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| SED_ANALYTICS_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| SED_ANALYTICS_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| SED_ANALYTICS_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| SED_ANALYTICS_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| SED_ANALYTICS_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| SED_ANALYTICS_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| SED_ANALYTICS_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
| STORAGE_DIALECT | string | нет | elasticSearch | Тип хранилища данных "elasticSearch" или "openSearch" |
| OPEN_SEARCH_HOST | string | нет | localhost | Хост openSearch |
| OPEN_SEARCH_PORT | int | нет | 9200 | Порт openSearch |
| OPEN_SEARCH_SSL | bool | нет | false | Использовать ли SSL для соединении с openSearch |
| OPEN_SEARCH_AUTH_USER | string | нет | "" | Название учетной записи для openSearch |
| OPEN_SEARCH_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи для openSearch |
| OPEN_SEARCH_AUTH_STORE_TYPE | string | нет | pem | Тип хранилища сертификата для openSearch |
| OPEN_SEARCH_AUTH_STORE_LOCATION | string | нет | "" | Путь до хранилища сертификата для openSearch |
| ELASTIC_HOST | string | нет | localhost | Хост elasticSearch |
| ELASTIC_PORT | int | нет | 9200 | Порт elasticSearch |
| ELASTIC_SSL | bool | нет | false | Использовать ли SSL для соединении с elasticSearch |
| ELASTIC_AUTH_USER | string | нет | "" | Название учетной записи для elasticSearch |
| ELASTIC_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи для elasticSearch |
| ELASTIC_AUTH_STORE_TYPE | string | нет | pem | Тип хранилища сертификата для elasticSearch |
| ELASTIC_AUTH_STORE_LOCATION | string | нет | "" | Путь до хранилища сертификата для elasticSearch |
Список команд сервиса sed-analytics
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованы следующие команды:
Document
На выходе аналитика по документам
[
{
"docType": "Nmd",
"count": 6,
"percent": 75,
"byDevelopmentType": [
{
"developmentType": "DevelopmentType_2",
"count": 3,
"percent": 50
},
{
"developmentType": "DevelopmentType_1",
"count": 2,
"percent": 33
},
{
"developmentType": "DevelopmentType_3",
"count": 1,
"percent": 17
}
],
"byRouteStage": [
{
"routeStageId": "00000000-0001-0000-0000-000000000000",
"count": 2,
"byDevelopmentType": [
{
"developmentType": "DevelopmentType_2",
"count": 1,
"percent": 50
},
{
"developmentType": "DevelopmentType_3",
"count": 1,
"percent": 50
}
]
},
{
"routeStageId": "00000000-0002-0000-0000-000000000000",
"count": 1,
"byDevelopmentType": [
{
"developmentType": "DevelopmentType_1",
"count": 1,
"percent": 100
}
]
}
],
"maxStageCount": 2
},
{
"docType": "Plan",
"count": 2,
"percent": 25,
"byDevelopmentType": [
{
"developmentType": "DevelopmentType_2",
"count": 1,
"percent": 50
},
{
"developmentType": "DevelopmentType_1",
"count": 1,
"percent": 50
}
],
"byRouteStage": [
{
"routeStageId": "00000202-0021-0000-0000-000000000000",
"count": 1,
"byDevelopmentType": [
{
"developmentType": "DevelopmentType_1",
"count": 1,
"percent": 100
}
]
}
],
"maxStageCount": 1
}
]
Получение аналитики по документам.
- Input: None
- Output: DocumentAnalytics
| Команда | Путь |
|---|---|
| sedAnalytics_document | HTTP POST "/v1/document-analytics/get" |
Объекты сервиса sed-analytics
DocumentAnalytics
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| docType | string | да | Тип документа |
| count | Integer | да | Число документов |
| percent | Int | да | Процент от общего числа документов |
| byDevelopmentType | ByDevelopmentType[] | да | Аналитика в разрезе типов разработки |
| byRouteStage | ByRouteStage[] | да | Аналитика в разрезе стадий |
| maxStageCount | Integer | да | Максимальное количество документов на стадии |
ByDevelopmentType
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| developmentType | string | да | Тип разработки |
| count | Integer | да | Число документов |
| percent | Int | да | Процент от общего числа документов |
ByRouteStage
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| routeStageId | string | да | ID стадии |
| count | Integer | да | Число документов |
| byDevelopmentType | ByDevelopmentType[] | да | Аналитика в разрезе типов разработки |
Sed Aris: Сервис для работы с ARIS
Сервис для интеграции с КИС БА (ARIS 10) - корпоративной системой проектирования бизнес-процессов. Данный сервис имеет команды для двустороннего обмена информацией между СЭД-ЦНМД и ARIS. В ключевой функционал сервиса входит:
- Хранение структуры папок моделей из ARIS.
- Хранение данных о непосредственно моделях из ARIS.
- Хранение реестра шаблонов.
- Заполнение шаблонов данными из моделей.
- Хранение статусов публикации документов в ЦНМД.
- Базовый набор CRUD-команд для работы с вышеописанными данными.
Состояние хранится в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик sed_aris_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
domainв котором содержатся все доменные модели и их различные представления.commandsв котором содержатся все, что связано с командами, их описанием и обработчиками.storageсодержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.serviceсодержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.bootсодержит зависимости и описание для сборки и запуска сервиса.
Информацию по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу
localhost:5432/sedAris_db - Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - Добавлены необходимые переменные окружения:
- SED_ARIS_DB_HOST
- SED_ARIS_DB_PORT
- SED_ARIS_DB_NAME
- SED_ARIS_DB_USER
- SED_ARIS_DB_PASSWORD
Запуск из консоли с помощью SBT
SED_ARIS_DB_HOST=localhost SED_ARIS_DB_PORT=5432 SED_ARIS_DB_NAME=sedAris_db SED_ARIS_DB_USER=postgres SED_ARIS_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса Sed Aris
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| SED_ARIS_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| SED_ARIS_HTTP_PORT | int | нет | 8192 | Порт, на котором слушает HTTP-сервер |
| SED_ARIS_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| SED_ARIS_KAFKA_TOPIC | string | нет | "sed_aris_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| SED_ARIS_KAFKA_CONSUMER_GROUP | string | нет | "sed_aris_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| SED_ARIS_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| SED_ARIS_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| SED_ARIS_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| SED_ARIS_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| SED_ARIS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах SED_ARIS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| SED_ARIS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который SED_ARIS_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| SED_ARIS_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| SED_ARIS_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka. Если название не указано, то настройки авторизации не будут применены. |
| SED_ARIS_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka. |
| SED_ARIS_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| SED_ARIS_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к хранилищу сертификатов. |
| SED_ARIS_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае соединения с kafka через Kerberos). |
| SED_ARIS_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае соединения с kafka через Kerberos). |
| SED_ARIS_KAFKA_AUTH_MODE | string | нет | "" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_ARIS_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig] |
| SED_ARIS_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| SED_ARIS_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| SED_ARIS_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| SED_ARIS_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| SED_ARIS_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| SED_ARIS_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| SED_ARIS_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| SED_ARIS_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| SED_ARIS_DISCOVERABLE_ID_PREFIX | string | нет | "another_sed_aris_instance" | Префикс для ID сервиса в ServiceDiscovery. ID сервиса будет состоять из префикса и времени запуска сервиса в формате Unix timestamp. |
| SED_ARIS_DISCOVERABLE_NAME | string | нет | "sedAris" | Имя сервиса в ServiceDiscovery |
| SED_ARIS_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| SED_ARIS_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| SED_ARIS_DISCOVERABLE_TTL | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| SED_ARIS_DISCOVERABLE_HEALTHPASS | duration string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| SED_ARIS_DISCOVERABLE_HEALTHTIMEOUT | duration string | нет | 10 seconds | Таймаут отправки health check в ServiceDiscovery |
| SED_ARIS_SERVICE_NAME | string | нет | Sed Aris | Название сервиса для отображения |
| SED_ARIS_SERVICE_DESCRIPTION | string | нет | "Service SED_ARIS" | Описание сервиса для отображения |
| SED_ARIS_INTERNALCMD_ALLOW | bool | нет | true | Можно ли сервису отправлять внутрисистемные команды |
| SED_ARIS_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| SED_ARIS_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| SED_ARIS_DB_HOST | string | да | Хост БД | |
| SED_ARIS_DB_PORT | int | да | Порт БД | |
| SED_ARIS_DB_NAME | string | да | Имя базы в БД | |
| SED_ARIS_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| SED_ARIS_DB_USER | string | да | Пользователь БД | |
| SED_ARIS_DB_PASSWORD | string | да | Пароль пользователя БД | |
| SED_ARIS_DB_THREADS | int | нет | 10 | Количество потоков в пуле потоков для соединения с БД |
| SED_ARIS_DB_QUEUE_SIZE | int | нет | 300 | Размер очереди для действий базы данных, которые не могут быть выполнены немедленно, когда все потоки заняты. За пределами этого значения новые действия немедленно завершаются неудачей |
| SED_ARIS_DB_CONN_MAX | int | нет | 10 | Максимальное количество одновременных подключений к БД |
| SED_ARIS_DB_CONN_TIMEOUT | duration string | нет | 20 second | Максимальное время ожидания ответа для соединения к БД. Если это время превышено, а соединение не становится доступным, будет брошено исключение SQLException. 1000 мс — минимальное значение. |
| SED_ARIS_DB_ISOLATION | string | нет | "READ_COMMITTED" | Уровень изоляции транзакций для новых подключений. Допустимые значения: NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ, SERIALIZABLE. |
| SED_ARIS_DB_READONLY | boolean | нет | false | Read-only SQL транзакция может изменять только временные таблицы. Этот параметр управляет статусом «только для чтения» по умолчанию для каждой новой транзакции. |
| SED_ARIS_DB_CONN_MIN | int | нет | = DB_THREADS | Минимальное количество одновременных подключений к БД |
| SED_ARIS_DB_VALIDATION_TIMEOUT | duration string | нет | 1 seconds | Максимальное время, в течение которого соединение будет проверяться на работоспособность. 1000 мс — минимальное значение. |
| SED_ARIS_DB_IDLE_TIMEOUT | duration string | нет | 10 minutes | Максимальное время, в течение которого соединению разрешено простаивать в пуле. Значение 0 означает, что простаивающие соединения никогда не удаляются из пула. |
| SED_ARIS_DB_MAX_LIFETIME | duration string | нет | 30 minutes | Максимальное время жизни соединения в пуле. Когда простаивающее соединение достигает этого времени ожидания, даже если оно недавно использовалось, оно будет удалено из пула. Значение 0 указывает на отсутствие максимального срока службы. |
| SED_ARIS_DB_INITIALIZATION_FAIL_FAST | string | нет | false | Определяет, будет ли пул «быстро выходить из строя», если пул не может быть успешно заполнен начальными соединениями. Если соединения не могут быть созданы во время запуска пула, будет выдано исключение RuntimeException. Это свойство не имеет никакого эффекта, если minConnections равно 0. |
| SED_ARIS_DB_LEAK_DETECTION_THRESHOLD | int | нет | 0 | Время, в течение которого соединение может находиться вне пула, прежде чем будет зарегистрировано сообщение, указывающее на возможную утечку соединения. Значение 0 означает, что обнаружение утечек отключено. Наименьшее приемлемое значение для включения обнаружения утечек составляет 10 с. |
| SED_ARIS_DB_CONNECTION_TEST_QUERY | string | нет | "SELECT 1" | Выражение, которое будет выполнено непосредственно перед получением соединения из пула для проверки того, что соединение с базой данных все еще активно. Оно зависит от базы данных и должно представлять собой запрос, требующий минимальной обработки базой данных (например, «VALUES 1»). Если этот параметр не установлен, вместо него используется метод JDBC4 Connection.isValid(). |
| SED_ARIS_DB_REGISTER_MBEANS | boolean | нет | false | Зарегистрированы ли JMX Management Beans («MBeans») |
| SED_ARIS_AUTHZFORCE_ADDR | string | нет | "http://localhost:8080/authzforce-ce" | Адрес AuthZforce server |
| SED_ARIS_AUTHZFORCE_DOMAIN | string | нет | "" | Доступный DomainID в AuthZforce server |
| SED_ARIS_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| SED_ARIS_LOG_LEVEL_AUTHORIZATIONSERVICE | string | нет | INFO | Уровень логирования для AuthorizationService |
| SED_ARIS_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| SED_ARIS_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| SED_ARIS_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| SED_ARIS_LOG_LEVEL_SLICK_STATEMENT | string | нет | DEBUG | Уровень логирования запросов, отправляемых slick в БД |
| SED_ARIS_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирования бенчмарков выполнения запросов slick |
| SED_ARIS_LOG_LEVEL_SLICK_PARAMETER | string | нет | OFF | Уровень логирования заполнения параметризованных запросов slick параметрами |
| SED_ARIS_LOG_LEVEL_SLICK_QUERY_COMPILER | string | нет | OFF | Уровень логирования компиляции запросов slick |
| SED_ARIS_LOG_LEVEL_SLICK_QUERY_COMPILER_BENCHMARK | string | нет | OFF | Уровень логирования бенчмарков компиляции запросов slick |
| SED_ARIS_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| SED_ARIS_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования kafka-consumer |
| SED_ARIS_LOG_LEVEL_HTTP_SERVER | string | нет | WARN | Уровень логирования HTTP-сервера |
| SED_ARIS_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| SED_ARIS_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| SED_ARIS_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| SED_ARIS_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| SED_ARIS_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| SED_ARIS_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| SED_ARIS_LOG_OUTPUT | string | нет | STDOUT | Вывод лога |
| SED_ARIS_SYSLOG_TYPE | string | нет | UDP | Тип передачи syslog |
| SED_ARIS_LOGGING_SRC_IP | string | нет | "localhost" | для параметра src в логах |
| SED_ARIS_LOGGING_SRC_HOST | string | нет | "SERVER" | для параметра shost в логах |
| SED_ARIS_LOGGING_DST_IP | string | нет | "SERVER" | для параметра dst в логах |
| SED_ARIS_LOGGING_CEF_VER | string | нет | 0 | версия CEF |
| SED_ARIS_MAX_PAGE_SIZE | int | нет | 500 | Максимальный размер одной страницы при постраничном получении или отправке данных |
| SED_ARIS_REQUEST_PARALLELISM | int | нет | 16 | Максимальное число одновременно отправляемых запросов во внешние сервисы |
| SED_ARIS_RETRY_DELAY | duration string | нет | 2 seconds | Задержка между ретраями запросов во внешние сервисы |
| SED_ARIS_RETRY_COUNT | string | нет | 5 | Максимальное число ретраев на запросы во внешние сервисы |
| SED_ARIS_FS_URI | url string | нет | "http://localhost:9000" | Адрес для подключения к хранилищу файлов по S3-API |
| SED_ARIS_FS_ACCESS_KEY_ID | string | нет | Ключ доступа для хранилища файлов (aka логин) | |
| SED_ARIS_FS_SECRET_ACCESS_KEY | string | нет | Секретный ключ для хранилища файлов (aka пароль) | |
| SED_ARIS_FS_UPLOAD_PARALLELISM | int | нет | 4 | Параллелизм для загрузки файлов |
| SED_ARIS_FS_AUTH_MODE | string | нет | static | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_ARIS_FS_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации, если AuthMode = mapping (пример: [{"bucketName": "aris", "credentials": {"accessKeyId": "minioadmin", "secretAccessKey": "minioadmin"}}]) |
| SED_ARIS_FS_CACHE_SIZE | int | нет | 1 | Максимальный размер кеша клиентов для хранилища файлов (количество активных соединений). |
| SED_ARIS_FS_CACHE_TTL | duration string | нет | Время жизни клиента в кеше | |
| SED_ARIS_FS_BUCKET | string | нет | aris | Бакет в файловом хранилище для файлов шаблонов из ARIS |
| SED_ARIS_TEMP_BUCKET | string | нет | temp | Бакет в файловом хранилище для временных файлов, загружаемых на apigateway |
| CLIENT_VERSION_POSTFIX | string | нет | Постфикс для версии библиотеки sed-client-libs | |
| SED_ARIS_MIGRATIONS_TIMEOUT | duration string | нет | 10 minutes | Таймаут для миграций CustomChange |
| SED_ARIS_EXTERNAL_MIGRATIONS_RETRY_DELAY | duration string | нет | 15 seconds | Задержка между ретраями внешних миграций |
| SED_ARIS_EXTERNAL_MIGRATIONS_RETRY_ATTEMPTS | int | нет | 5 | Количество попыток выполнения внешних миграций |
| SPIRE_DOC_LICENSE_KEY | string | нет | "" | Лицензионный ключ библиотеки spire.doc |
| SPIRE_DOC_ALLOW_TRIAL | boolean | нет | false | Определяет поведение в случае пустого лицензионного ключа библиотеки spire.doc. Если выставлено в true, то будет работать в режиме trial-версии, если false - приложение не запустится. |
| SED_ARIS_WORD_DOCUMENT_PROCESSING_CHUNK_SIZE | int | нет | 4096 | Размер чанка, используемый при конвертации между fs2.Stream и InputStream/OutputStream для работы с java-библиотеками. |
| SED_ARIS_WORD_DOCUMENT_PROCESSING_GRANULARITY | string | нет | "Paragraph" | Гранулярность сравнения документов. Возможные значения: Paragraph - Грубый вариант, при котором сравниваются между собой только параграфы целиком; Run - При конфликтующих изменениях параграфов будет производиться попытка совместить их с минимальными потерями путём разбиения на более мелкие изменения. |
Формат CEF для логов сервиса Sed Aris
У логов есть возможность включить формат CEF для
логирования по следующему шаблону:
2022-12-14T16:56:31+0500 CEF:Version|Device Vendor|Device Product|Device Version|EventClassId|Message|Severity|src=? dst=? shost=? suid=? suser=? msg=? end=currentTimeMillis|.
Чтобы включить логирование в формате CEF, нужно задать значение переменной с постфиксом CEF.
Например, SED_ARIS_LOG_OUTPUT = STDOUT_CEF. Если логи пишутся в формате CEF, то желательно поменять
следующие переменные:
SED_ARIS_LOGGING_SRC_IP, для параметраsrcв логахSED_ARIS_LOGGING_SRC_HOST, для параметраshostв логахSED_ARIS_LOGGING_DST_IP, для параметраdstв логах
В файле src/main/resources/logback.xml можно поменять class path для основного класса приложения
(переменная projectMainClassPath), если это необходимо.
Список команд сервиса Sed Aris
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
GetArisModel
Получение метаданных модели по ID
- Input: UUID (ID модели в ARIS)
- Output: ArisModel
| Команда | Тип |
|---|---|
| sedAris_getArisModel | HTTP |
ListArisModelsByFolder
Получение списка моделей в папке
- Input: UUID (ID папки в ARIS)
- Output: ArisModel[]
| Команда | Тип |
|---|---|
| sedAris_listArisModelsByFolder | HTTP |
ListArisModelsByIds
Получение метаданных моделей по списку ID
- Input: UUID
- Output: ArisModel
| Команда | Тип |
|---|---|
| sedAris_listArisModelsByIds | HTTP |
ListFoldersByParentFolder
Получение списка дочерних папок по id папки.
Можно указать id=null, тогда будут получены все корневые папки.
- Input: ListFoldersByParentFolderInput
- Output: FolderDTO
| Команда | Тип |
|---|---|
| sedAris_listFoldersByParentFolder | HTTP |
FillTemplate
Создание файла НМД из шаблона
- Input: FillTemplateDTO
- Output: String (ссылка на файл НМД)
| Команда | Тип |
|---|---|
| sedAris_fillTemplate | Kafka |
MergeDocuments
Создание файла НМД из шаблона
- Input: MergeDocumentsDTO
- Output: String (ссылка на объединенный файл)
| Команда | Тип |
|---|---|
| sedAris_mergeDocuments | Kafka |
GetTree
Получение дерева папок и моделей.
Возможен поиск по подстроке названия папки или модели.
- Input: GetTreeInput
- Output: TreeNodeDTO[]
| Команда | Тип |
|---|---|
| sedAris_getTree | HTTP |
SyncArisModels
Синхронизация моделей в сервис иерархий.
Команду нужно применить, если из-за ошибки модели в постгресе не соответствуют моделям в сервисе иерархий.
- Input: Пустое тело
- Output: Пустое тело
| Команда | Тип |
|---|---|
| sedAris_syncArisModels | Kafka |
ImportFolders
Передача полной иерархической структуры папок из папки ARIS.
- Input: ImportFolderDTO[]
- Output: Пустое тело
| Команда | Тип |
|---|---|
| sedAris_ImportFolders | HTTP |
CreateFolder
Создание новой папки в СЭД ЦНМД при создании пользователем новой папки в ARIS.
- Input: CreateFolderDTO
- Output: Пустое тело
| Команда | Тип |
|---|---|
| sedAris_CreateFolder | HTTP |
DeleteFolder
Удаление папки в СЭД ЦНМД при удалении пользователем папки в ARIS.
- Input: UUID (ID папки в ARIS)
- Output: Пустое тело
| Команда | Тип |
|---|---|
| sedAris_DeleteFolder | HTTP |
UpdateFolder
Изменение имени папки или ее родителя в СЭД ЦНМД при свершении такого события в ARIS.
- Input: UpdateFolderInputDTO
- Output: Пустое тело
| Команда | Тип |
|---|---|
| sedAris_UpdateFolder | HTTP |
ImportModel
Передача метаданных модели
- Input: ArisModelCreateInputDTO
- Output: Пустое тело
| Команда | Тип |
|---|---|
| sedAris_createArisModel | HTTP |
ListNmdStatus
Список статусов нмд с моделями
- Input: String (дата и время публикации)
- Output: NmdStatusDTO[]
| Команда | Тип |
|---|---|
| sedAris_listNmd | HTTP |
UpsertNmdStatusRecord
Добавление/обновление записи о статусе нмд. (Внутренняя команда)
- Input: NmdStatusDTO
- Output: Пустое тело
| Команда | Тип |
|---|---|
| sedAris_upsertNmdStatusRecord | kafka |
Список сущностей сервиса Sed Aris
ArisModel
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID модели в ARIS |
| fileId | uuid | да | ID файла модели в файловом хранилище |
| hierarchyEntityObjectId | uuid | да | ID модели в сервисе иерархий |
| name | string | да | Имя модели |
| folderId | uuid | да | ID папки в ARIS |
| created | timestamp | да | Дата и время создания модели |
| modified | timestamp | да | Дата и время изменения модели |
| removed | boolean | да | Признак удаления модели |
GetTreeInput
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| searchQuery | string | нет | Строка поиска по имени папки или модели |
TreeNodeDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID сущности в ARIS |
| nodeType | string | да | folder или arismodel |
| name | string | да | Имя сущности |
| modified | timestamp | да | Дата и время изменения сущности |
| children | TreeNodeDTO[] | нет | Дочерние объекты |
ImportFolderDTO
Поля те же, что и у CreateFolderDTO, но семантически эта структура предназначена для обработки произвольных изменений структуры директорий (как создания, так и удаления или изменения).
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| folderId | uuid | да | ID папки в ARIS |
| parentFolderId | uuid | нет | ID родителя папки в ARIS |
| folderName | string | да | Имя папки |
FolderDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID папки в ARIS |
| parentId | uuid | нет | ID родителя папки в ARIS |
| name | string | да | Имя папки |
ListFoldersByParentFolderInput
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| parentFolderId | uuid | нет | ID родительской папки в ARIS |
CreateFolderDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| folderId | uuid | да | ID папки в ARIS |
| parentFolderId | uuid | нет | ID родителя папки в ARIS |
| folderName | string | да | Имя папки |
UpdateFolderInputDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| idFromPath | uuid | да | ID папки в ARIS (из uri, подставляется сервисом внешнего апи) |
| folderId | uuid | нет | ID папки в ARIS |
| parentFolderId | uuid | нет | ID родителя папки в ARIS |
| folderName | string | да | Имя папки |
ArisModelCreateInputDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| model | ArisModelCreateDTO | да | Метаданные модели |
ArisModelCreateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID модели в ARIS |
| fileId | uuid | да | ID файла модели в файловом хранилище |
| name | string | да | Имя модели |
| created | string | да | Дата и время создания модели |
| modified | string | да | Дата и время изменения модели |
| folderId | uuid | да | ID папки в ARIS |
NmdStatusDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| modelId | uuid | да | ID модели в ARIS |
| nmdId | uuid | да | Идентификатор НМД в СЭД ЦНМД |
| status | string | нет | Статус НМД (возможные значения: cancel, accept) |
| modified | timestamp | да | Дата и время последнего изменения статуса НМД |
FillTemplateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| modelId | uuid | да | ID модели в ARIS |
| nmdId | uuid | да | Идентификатор НМД в СЭД ЦНМД |
| nmdFields | json | да | Поля НМД, необходимые для создания файла НМД |
MergeDocumentsDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| nmdId | uuid | да | Идентификатор НМД в СЭД ЦНМД |
| oldDocumentUrl | string | да | Ссылка на файл с документом НМД |
| newDocumentUrl | string | да | Ссылка на временный файл-шаблон |
Sed Functional Groups
Сервис принимает запросы для работы с функциональными группами. Состояние хранится в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик sed_fg_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
domainв котором содержатся все доменные модели и их различные представления.commandsв котором содержатся все, что связано с командами, их описанием и обработчиками.storageсодержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.serviceсодержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.bootсодержит зависимости и описание для сборки и запуска сервиса.
Информацию по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу
localhost:5432/sed-fg_db - Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - Добавлены необходимые переменные окружения:
- SED_FG_DB_HOST
- SED_FG_DB_PORT
- SED_FG_DB_NAME
- SED_FG_DB_USER
- SED_FG_DB_PASSWORD
Запуск из консоли с помощью SBT
SED_FG_DB_HOST=localhost SED_FG_DB_PORT=5432 SED_FG_DB_NAME=sed-fg_db SED_FG_DB_USER=postgres SED_FG_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса Sed Functional Groups
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| SED_FG_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| SED_FG_HTTP_PORT | int | нет | 8033 | Порт, на котором слушает HTTP-сервер |
| SED_FG_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| SED_FG_KAFKA_TOPIC | string | нет | "sed_fg_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| SED_FG_KAFKA_CONSUMER_GROUP | string | нет | "sed_fg_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| SED_FG_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| SED_FG_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| SED_FG_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| SED_FG_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| SED_FG_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах SED_FG_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| SED_FG_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который SED_FG_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| SED_FG_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| SED_FG_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka. Если название не указано, то настройки авторизации не будут применены. |
| SED_FG_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka. |
| SED_FG_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| SED_FG_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к хранилищу сертификатов. |
| SED_FG_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае соединения с kafka через Kerberos). |
| SED_FG_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае соединения с kafka через Kerberos). |
| SED_FG_KAFKA_AUTH_MODE | string | нет | "" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_FG_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig] |
| SED_FG_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| SED_FG_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| SED_FG_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| SED_FG_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| SED_FG_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| SED_FG_DISCOVERABLE_ID_PREFIX | string | нет | "another_sed_fg_instance" | Префикс для ID сервиса в ServiceDiscovery. ID сервиса будет состоять из префикса и времени запуска сервиса в формате Unix timestamp. |
| SED_FG_DISCOVERABLE_NAME | string | нет | "sedFunctionalGroups" | Имя сервиса в ServiceDiscovery |
| SED_FG_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| SED_FG_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| SED_FG_DISCOVERABLE_TTL | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| SED_FG_DISCOVERABLE_HEALTHPASS | duration string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| SED_FG_DISCOVERABLE_HEALTHTIMEOUT | duration string | нет | 10 seconds | Таймаут отправки health check в ServiceDiscovery |
| SED_FG_SERVICE_NAME | string | нет | Sed Functional Groups | Название сервиса для отображения |
| SED_FG_SERVICE_DESCRIPTION | string | нет | "Service SED_FG" | Описание сервиса для отображения |
| SED_FG_INTERNALCMD_ALLOW | bool | нет | true | Можно ли сервису отправлять внутрисистемные команды |
| SED_FG_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| SED_FG_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| SED_FG_DB_HOST | string | да | Хост БД | |
| SED_FG_DB_PORT | int | да | Порт БД | |
| SED_FG_DB_NAME | string | да | Имя базы в БД | |
| SED_FG_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| SED_FG_DB_USER | string | да | Пользователь БД | |
| SED_FG_DB_PASSWORD | string | да | Пароль пользователя БД | |
| SED_FG_DB_THREADS | int | нет | 10 | Количество потоков в пуле потоков для соединения с БД |
| SED_FG_DB_QUEUE_SIZE | int | нет | 300 | Размер очереди для действий базы данных, которые не могут быть выполнены немедленно, когда все потоки заняты. За пределами этого значения новые действия немедленно завершаются неудачей |
| SED_FG_DB_CONN_MAX | int | нет | 10 | Максимальное количество одновременных подключений к БД |
| SED_FG_DB_CONN_TIMEOUT | duration string | нет | 20 second | Максимальное время ожидания ответа для соединения к БД. Если это время превышено, а соединение не становится доступным, будет брошено исключение SQLException. 1000 мс — минимальное значение. |
| SED_FG_DB_ISOLATION | string | нет | "READ_COMMITTED" | Уровень изоляции транзакций для новых подключений. Допустимые значения: NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ, SERIALIZABLE. |
| SED_FG_DB_READONLY | boolean | нет | false | Read-only SQL транзакция может изменять только временные таблицы. Этот параметр управляет статусом «только для чтения» по умолчанию для каждой новой транзакции. |
| SED_FG_DB_CONN_MIN | int | нет | = DB_THREADS | Минимальное количество одновременных подключений к БД |
| SED_FG_DB_VALIDATION_TIMEOUT | duration string | нет | 1 seconds | Максимальное время, в течение которого соединение будет проверяться на работоспособность. 1000 мс — минимальное значение. |
| SED_FG_DB_IDLE_TIMEOUT | duration string | нет | 10 minutes | Максимальное время, в течение которого соединению разрешено простаивать в пуле. Значение 0 означает, что простаивающие соединения никогда не удаляются из пула. |
| SED_FG_DB_MAX_LIFETIME | duration string | нет | 30 minutes | Максимальное время жизни соединения в пуле. Когда простаивающее соединение достигает этого времени ожидания, даже если оно недавно использовалось, оно будет удалено из пула. Значение 0 указывает на отсутствие максимального срока службы. |
| SED_FG_DB_INITIALIZATION_FAIL_FAST | string | нет | false | Определяет, будет ли пул «быстро выходить из строя», если пул не может быть успешно заполнен начальными соединениями. Если соединения не могут быть созданы во время запуска пула, будет выдано исключение RuntimeException. Это свойство не имеет никакого эффекта, если minConnections равно 0. |
| SED_FG_DB_LEAK_DETECTION_THRESHOLD | int | нет | 0 | Время, в течение которого соединение может находиться вне пула, прежде чем будет зарегистрировано сообщение, указывающее на возможную утечку соединения. Значение 0 означает, что обнаружение утечек отключено. Наименьшее приемлемое значение для включения обнаружения утечек составляет 10 с. |
| SED_FG_DB_CONNECTION_TEST_QUERY | string | нет | "SELECT 1" | Выражение, которое будет выполнено непосредственно перед получением соединения из пула для проверки того, что соединение с базой данных все еще активно. Оно зависит от базы данных и должно представлять собой запрос, требующий минимальной обработки базой данных (например, «VALUES 1»). Если этот параметр не установлен, вместо него используется метод JDBC4 Connection.isValid(). |
| SED_FG_DB_REGISTER_MBEANS | boolean | нет | false | Зарегистрированы ли JMX Management Beans («MBeans») |
| SED_FG_AUTHZFORCE_ADDR | string | нет | "http://localhost:8080/authzforce-ce" | Адрес AuthZforce server |
| SED_FG_AUTHZFORCE_DOMAIN | string | нет | "" | Доступный DomainID в AuthZforce server |
| SED_FG_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| SED_FG_LOG_LEVEL_AUTHORIZATIONSERVICE | string | нет | INFO | Уровень логирования для AuthorizationService |
| SED_FG_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| SED_FG_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| SED_FG_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| SED_FG_LOG_LEVEL_SLICK_STATEMENT | string | нет | DEBUG | Уровень логирования запросов, отправляемых slick в БД |
| SED_FG_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирования бенчмарков выполнения запросов slick |
| SED_FG_LOG_LEVEL_SLICK_PARAMETER | string | нет | OFF | Уровень логирования заполнения параметризованных запросов slick параметрами |
| SED_FG_LOG_LEVEL_SLICK_QUERY_COMPILER | string | нет | OFF | Уровень логирования компиляции запросов slick |
| SED_FG_LOG_LEVEL_SLICK_QUERY_COMPILER_BENCHMARK | string | нет | OFF | Уровень логирования бенчмарков компиляции запросов slick |
| SED_FG_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| SED_FG_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования kafka-consumer |
| SED_FG_LOG_LEVEL_HTTP_SERVER | string | нет | WARN | Уровень логирования HTTP-сервера |
| SED_FG_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| SED_FG_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| SED_FG_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| SED_FG_LOG_OUTPUT | string | нет | STDOUT | Вывод лога |
| SED_FG_SYSLOG_TYPE | string | нет | UDP | Тип передачи syslog |
| SED_FG_LOGGING_SRC_IP | string | нет | "localhost" | для параметра src в логах |
| SED_FG_LOGGING_SRC_HOST | string | нет | "SERVER" | для параметра shost в логах |
| SED_FG_LOGGING_DST_IP | string | нет | "SERVER" | для параметра dst в логах |
| SED_FG_LOGGING_CEF_VER | string | нет | 0 | версия CEF |
| SED_FG_MAX_PAGE_SIZE | int | нет | 500 | Максимальный размер одной страницы при постраничном получении или отправке данных |
| SED_FG_REQUEST_PARALLELISM | int | нет | 16 | Максимальное число одновременно отправляемых запросов во внешние сервисы |
| SED_FG_RETRY_DELAY | duration string | нет | 2 seconds | Максимальное число ретраев на запросы во внешние сервисы |
| SED_FG_RETRY_COUNT | string | нет | 5 | Задержка между ретраями запросов во внешние сервисы |
| SED_FG_MIGRATIONS_TIMEOUT | duration string | нет | 10 minutes | Таймаут для миграций CustomChange |
| SED_FG_ARCHIVE_REQUIRED_COUNT_RESPONSES | int | нет | 1 | Количество требуемых ответов от сервисов при архивации функциональной группы |
| SED_FG_ARCHIVE_RETRY_DELAY | duration string | нет | 30 seconds | Время между проверками ответов от сервисов при архивации функциональной группы |
| SED_FG_ARCHIVE_RETRY_TIMEOUT | duration string | нет | 10 minutes | Таймаут ожидания ответов от сервисов при архивации функциональной группы |
Формат CEF для логов сервиса Sed Functional Groups
У логов есть возможность включить формат CEF для
логирования по следующему шаблону:
2022-12-14T16:56:31+0500 CEF:Version|Device Vendor|Device Product|Device Version|EventClassId|Message|Severity|src=? dst=? shost=? suid=? suser=? msg=? end=currentTimeMillis|.
Чтобы включить логирование в формате CEF, нужно задать значение переменной с постфиксом CEF.
Например, SED_FG_LOG_OUTPUT = STDOUT_CEF. Если логи пишутся в формате CEF, то желательно поменять
следующие переменные:
SED_FG_LOGGING_SRC_IP, для параметраsrcв логахSED_FG_LOGGING_SRC_HOST, для параметраshostв логахSED_FG_LOGGING_DST_IP, для параметраdstв логах
В файле src/main/resources/logback.xml можно поменять class path для основного класса приложения
(переменная projectMainClassPath), если это необходимо.
Список команд сервиса Sed Functional Groups
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованны команды:
FunctionalGroupCommands
GetFG
На входе id функциональной группы
"013cdbf3-b398-4398-b309-855dc29e6db2"
На выходе информация о функциональной группе
{
"id": "013cdbf3-b398-4398-b309-855dc29e6db2",
"name": "NewFg",
"headEmployeeId": null,
"email": null,
"systemModule": "NMD",
"organizationIds": [],
"description": "description null",
"employeeIds": [
"28a04058-dba9-4eb0-ada3-e83c63d086d5"
],
"created": 1729596455831,
"createdBy": "9cc724c4-dfef-42a1-b43d-c433ab9bcf0e",
"modified": 1729596455831,
"modifiedBy": "9cc724c4-dfef-42a1-b43d-c433ab9bcf0e",
"version": 1
}
Возвращает функциональную группу по id.
Поддерживается только синхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_getFG | HTTP POST "/sedFG_getFG" |
- На входе: uuid
- На выходе: FunctionalGroupLongDTO
GetFGByCode
На входе код функциональной группы
"SomeFgCode"
На выходе информация о функциональной группе
{
"id": "013cdbf3-b398-4398-b309-855dc29e6db2",
"name": "NewFg",
"code": "SomeFgCode",
"headEmployeeId": null,
"email": null,
"systemModule": "NMD",
"organizationIds": [],
"description": "description null",
"employeeIds": [
"28a04058-dba9-4eb0-ada3-e83c63d086d5"
],
"created": 1729596455831,
"createdBy": "9cc724c4-dfef-42a1-b43d-c433ab9bcf0e",
"modified": 1729596455831,
"modifiedBy": "9cc724c4-dfef-42a1-b43d-c433ab9bcf0e",
"version": 1
}
Возвращает функциональную группу по коду.
Поддерживается только синхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_getFGByCode | HTTP POST "/sedFG_getFGByCode" |
- На входе: string
- На выходе: FunctionalGroupLongDTO
ListFG
На входе Search
{
"query": "name",
"context": {
"name": {
"likequery": "%First%",
"kind": "like",
"negation": false
}
},
"sorting": {
"fieldName": "name",
"order": "Asc"
},
"paging": {
"page": 1,
"count": 10
}
}
На выходе список функциональных групп
{
"items": [
{
"id": "00000000-0000-0000-0000-000000000010",
"name": "FirstName",
"headEmployeeId": null,
"email": null,
"systemModule": "NMD",
"organizationIds": [
"00000000-1111-0000-0000-000000000000"
],
"description": "FirstName FG",
"countEmployees": 1,
"created": 1010101,
"createdBy": "00000000-0000-0000-0000-000000000100",
"modified": 1010155,
"modifiedBy": "00000000-0000-0000-0000-000000001000",
"version": 1
}
],
"total": 1
}
Возвращает список функциональных групп по Search.
Поддерживается только синхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_listFG | HTTP POST "/sedFG_listFG" |
- На входе: Search
- На выходе: Page[FunctionalGroupShortDTO]
Доступные поля для фильтрации и виды фильтров по ним:
| Поле | Виды фильтров |
|---|---|
| name | LikeQuery |
| functionalgroupids | InSetQuery |
| systemmodules | InSetQuery |
| ids | InSetQuery |
| heademployeeid | InSetQuery |
| organizationids | InSetQuery |
| code | InSetQuery |
| status | InSetQuery |
Доступные поля для сортировки:
| Поле | Примечание |
|---|---|
| name | Сортирует по параметру "name" |
| modified | Сортирует по параметру "modified" |
Стандартная сортировка: --"name" в порядке возрастания.
CreateFG
На входе информация о функциональной группе
{
"name": "NewFg",
"headEmployeeId": null,
"email": null,
"systemModule": "NMD",
"organizationIds": [],
"description": "description null",
"employeeIds": [
"28a04058-dba9-4eb0-ada3-e83c63d086d5"
]
}
На выходе ничего
{}
Позволяет создать новую функциональную группу.
Нельзя создать группу с уже существующим именем с модулем.
Поддерживается синхронный и асинхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_createFG | Kafka Topic "sed_fg_commands" |
- На входе: FunctionalGroupCreateDTO
- На выходе: Unit
ImportFunctionalGroup
На входе информация о функциональной группе
{
"code": "SomeFgCode",
"name": "NewFg",
"headEmployeeId": null,
"email": null,
"systemModule": "NMD",
"organizationIds": [],
"description": "description null",
"employeeIds": [
"28a04058-dba9-4eb0-ada3-e83c63d086d5"
]
}
На выходе ничего
{}
Позволяет создать новую или обновить существующую функциональную группу.
Не проводит валидацию заполнения полей и сверку их с уже существующими ФГ, но требует обязательного заполнения поля code.
Внутренняя команда.
Поддерживается синхронный и асинхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_importFG | Kafka Topic "sed_fg_commands" |
- На входе: FunctionalGroupImportDTO
- На выходе: Unit
UpdateFG
На входе обновлённая информация о функциональной группе
{
"id": "f708eb24-82c3-4b88-a902-27dba243d13a",
"name": "OldFG",
"headEmployeeId": null,
"email": "newEmail",
"systemModule": "NMD",
"organizationIds": [],
"description": "description null",
"employeeIds": [
"28a04058-dba9-4eb0-ada3-e83c63d086d5"
],
"version": 1
}
На выходе ничего
{}
Позволяет обновить существующую функциональную группу.
Поддерживается синхронный и асинхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_updateFG | Kafka Topic "sed_fg_commands" |
- На входе: FunctionalGroupUpdateDTO
- На выходе: Unit
StartArchivingFG
На входе id и версия функциональной группы
{
"id": "f708eb24-82c3-4b88-a902-27dba243d13a",
"version": 2
}
На выходе ничего
{}
Позволяет начать архивацию функциональной группы.
Архивирует как группу, так и все связанные с ней данные.
Поддерживается синхронный и асинхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_startArchivingFG | Kafka Topic "sed_fg_commands" |
- На входе: FunctionalGroupSetStatusArchivingDTO
- На выходе: Unit
StartArchivingFGInternal
На входе id и версия функциональной группы
{
"id": "f708eb24-82c3-4b88-a902-27dba243d13a",
"version": 2
}
На выходе ничего
{}
Позволяет начать архивацию функциональной группы, игнорирует признак archivable.
Архивирует как группу, так и все связанные с ней данные.
Поддерживается синхронный и асинхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_startArchivingFGInternal | Kafka Topic "sed_fg_commands" |
- На входе: FunctionalGroupSetStatusArchivingDTO
- На выходе: Unit
ConfirmationArchiveFG
На входе id функциональной группы и ошибка архивации (если таковая есть)
{
"id": "f708eb24-82c3-4b88-a902-27dba243d13a",
"errorData": {
"serviceName": "Sed",
"data": {
"exception": "Very High RPS"
}
}
}
На выходе ничего
{}
Позволяет сервису подтвердить архивацию функциональной группы.
Является внутренней командой
Поддерживается синхронный и асинхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_confirmationArchiveFG | Kafka Topic "sed_fg_commands" |
- На входе: FunctionalGroupSetStatusArchivedOrErrorDTO
- На выходе: Unit
EmployeesCommands
GetEmployeeIdsByFGId
На входе id функциональной группы
"013cdbf3-b398-4398-b309-855dc29e6db2"
На выходе список id сотрудников
[
"28a04058-dba9-4eb0-ada3-e83c63d086d5"
]
Возвращает список id функциональных групп по id сотрудника.
Поддерживается только синхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_getEmployeeIdsByFGId | HTTP POST "/sedFG_getEmployeeIdsByFGId" |
- На входе: uuid
- На выходе: uuid[]
InternalGetEmployeeIdsByFGId
На входе id функциональной группы
"013cdbf3-b398-4398-b309-855dc29e6db2"
На выходе список id сотрудников
[
"28a04058-dba9-4eb0-ada3-e83c63d086d5"
]
Возвращает список id функциональных групп по id сотрудника.
Поддерживается только синхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_internalGetEmployeeIdsByFGId | HTTP POST "/sedFG_internalGetEmployeeIdsByFGId" |
- На входе: uuid
- На выходе: uuid[]
GetFGIdsByEmployeeId
На входе id функциональных группы
"013cdbf3-b398-4398-b309-855dc29e6db2"
На выходе список id сотрудников
[
"28a04058-dba9-4eb0-ada3-e83c63d086d5"
]
Возвращает список id сотрудников по id функциональной группы.
Поддерживается только синхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_getFGIdsByEmployeeId | HTTP POST "/sedFG_getFGIdsByEmployeeId" |
- На входе: uuid
- На выходе: uuid[]
CheckDuplicateFGName
На входе наименование ФГ и тип модуля
{
"name": "FunctionalGroup1",
"systemModule": "00000001-0000-0000-0000-000000000000"
}
На выходе 200 ОК с пустым телом или ошибка о дублирующем нейминге
{}
Проверка на дублирование имени в ФГ в разрезе модулей
Поддерживается только синхронный вызов
| Команда | Путь |
|---|---|
| sedFG_checkDuplicateFGName | HTTP POST "/sedFG_checkDuplicateFGName" |
- На входе: DuplicateFGName
- На выходе: Unit
InternalListFG
На входе Search
{
"query": "name",
"context": {
"name": {
"likequery": "%First%",
"kind": "like",
"negation": false
}
},
"sorting": {
"fieldName": "name",
"order": "Asc"
},
"paging": {
"page": 1,
"count": 10
}
}
На выходе список функциональных групп
{
"items": [
{
"id": "00000000-0000-0000-0000-000000000010",
"name": "FirstName",
"headEmployeeId": null,
"email": null,
"systemModule": "NMD",
"organizationIds": [
"00000000-1111-0000-0000-000000000000"
],
"description": "FirstName FG",
"countEmployees": 1,
"created": 1010101,
"createdBy": "00000000-0000-0000-0000-000000000100",
"modified": 1010155,
"modifiedBy": "00000000-0000-0000-0000-000000001000",
"version": 1
}
],
"total": 1
}
Возвращает список функциональных групп по Search.
Внутренняя команда.
Поддерживается только синхронный вызов.
| Команда | Путь |
|---|---|
| sedFG_internalListFG | HTTP POST "/sedFG_internalListFG" |
- На входе: Search
- На выходе: Page[FunctionalGroupShortDTO]
Объекты сервиса sed-fg
Типы данных, которые принимает на вход команд сервис или возвращает в результате работы команды.
—Функциональная группа—
FunctionalGroupLongDTO
Информация о функциональной группе
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | Id функциональной группы |
| name | string | да | Название функциональной группы |
| code | string | нет | Уникальный технический код функциональной группы |
| headEmployeeId | uuid | нет | Руководитель ФГ |
| string | нет | Общая почта функциональной группы | |
| systemModule | string | да | Идентификатор модуля системы |
| organizationIds | uuid[] | да | ID организаций |
| description | string | да | Описание функциональной группы |
| employeeIds | uuid[] | да | Сотрудники функциональной группы |
| created | TimeStamp | да | Время создания |
| createdBy | UserId | да | Кем создан |
| modified | TimeStamp | да | Время последнего изменения |
| modifiedBy | UserId | да | Кто последний раз изменил |
| version | int | да | Версия |
| archivable | boolean | да | Признак возможности архивировать ФГ |
FunctionalGroupShortDTO
Информация о функциональной группе
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | Id функциональной группы |
| name | string | да | Название функциональной группы |
| code | string | нет | Уникальный технический код функциональной группы |
| headEmployeeId | uuid | нет | Руководитель ФГ |
| string | нет | Общая почта функциональной группы | |
| systemModule | string | да | Идентификатор модуля системы |
| organizationIds | uuid[] | да | ID организаций |
| description | string | да | Описание функциональной группы |
| countEmployees | int | да | Кол-во сотрудников функциональной группы |
| created | TimeStamp | да | Время создания |
| createdBy | UserId | да | Кем создан |
| modified | TimeStamp | да | Время последнего изменения |
| modifiedBy | UserId | да | Кто последний раз изменил |
| version | int | да | Версия |
| archivable | boolean | да | Признак возможности архивировать ФГ |
FunctionalGroupCreateDTO
Информация о создании новой функциональной группы
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| name | string | да | Название функциональной группы |
| code | string | нет | Уникальный технический код функциональной группы |
| headEmployeeId | uuid | нет | Руководитель ФГ |
| string | нет | Общая почта функциональной группы | |
| systemModule | string | да | Идентификатор модуля системы |
| organizationIds | uuid[] | да | ID организаций |
| description | string | да | Описание функциональной группы |
| employeeIds | uuid[] | да | Сотрудники функциональной группы |
| archivable | boolean | да | Признак возможности архивировать ФГ |
FunctionalGroupImportDTO
Информация об импорте новой функциональной группы. Поле code - обязательное.
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| name | string | да | Название функциональной группы |
| code | string | да | Уникальный технический код функциональной группы |
| headEmployeeId | uuid | нет | Руководитель ФГ |
| string | нет | Общая почта функциональной группы | |
| systemModule | string | да | Идентификатор модуля системы |
| organizationIds | uuid[] | да | ID организаций |
| description | string | да | Описание функциональной группы |
| employeeIds | uuid[] | да | Сотрудники функциональной группы |
| archivable | boolean | да | Признак возможности архивировать ФГ |
FunctionalGroupUpdateDTO
Информация об обновлении функциональной группы
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | Id функциональной группы |
| name | string | да | Название функциональной группы |
| code | string | нет | Уникальный технический код функциональной группы |
| headEmployeeId | uuid | нет | Руководитель ФГ |
| string | нет | Общая почта функциональной группы | |
| systemModule | string | да | Идентификатор модуля системы |
| organizationIds | uuid[] | да | ID организаций |
| description | string | да | Описание функциональной группы |
| employeeIds | uuid[] | да | Сотрудники функциональной группы |
| version | int | да | Версия |
| archivable | boolean | да | Признак возможности архивировать ФГ |
FunctionalGroupSetStatusArchivingDTO
Информация об архивировании функциональной группы
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | Id функциональной группы |
| version | int | да | Версия |
FunctionalGroupSetStatusArchivedOrErrorDTO
Информация при подтверждении архивации сервисом
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | Id функциональной группы |
| errorData | ArchiveStatusErrorData | нет | Информация об ошибке архивации |
ArchiveStatusErrorData
Информация сервиса об ошибке
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| serviceName | string | да | Имя сервиса, в котором произошла ошибка |
| data | json | да | Тело ошибки |
DuplicateFGNameDTO
Проверка на дублирование наименования ФГ в разрезе модулей
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| name | string | да | Наименование функциональной группы |
| systemModule | string | да | Системный модуль |
| currentFgId | uuid | нет | ID фг, которую не надо учитывать |
sed-jd-constructor
Сервис принимает команды и хранит состояние в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик sed_jd_constructor_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
- domain, в котором содержатся все доменные модели и их различные представления.
- commands, в котором содержатся все? что связано с командами, их описанием и обработчиками.
- storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.
- service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.
- boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу localhost:5432/sed-jd-constructor
- Kafka по адресу localhost:9092
- Consul по адресу localhost:8500
- Адрес Kafka будет указан в application.conf
- Добавлены необходимые переменные окружения:
- SED_JD_CONSTRUCTOR_DB_HOST
- SED_JD_CONSTRUCTOR_DB_PORT
- SED_JD_CONSTRUCTOR_DB_NAME
- SED_JD_CONSTRUCTOR_DB_USER
- SED_JD_CONSTRUCTOR_DB_PASSWORD
Запуск из консоли с помощью SBT
SED_JD_CONSTRUCTOR_DB_HOST=localhost SED_JD_CONSTRUCTOR_DB_PORT=5432 SED_JD_CONSTRUCTOR_DB_NAME=sed-jd-constructor SED_JD_CONSTRUCTOR_DB_USER=postgres SED_JD_CONSTRUCTOR_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса sed-jd-constructor
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| SED_JD_CONSTRUCTOR_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| SED_JD_CONSTRUCTOR_HTTP_PORT | int | нет | 8192 | Порт, на котором слушает HTTP-сервер |
| SED_JD_CONSTRUCTOR_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| SED_JD_CONSTRUCTOR_KAFKA_TOPIC | string | нет | "sed_jd_constructor_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| SED_JD_CONSTRUCTOR_KAFKA_CONSUMER_GROUP | string | нет | "sed_jd_constructor_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| SED_JD_CONSTRUCTOR_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| SED_JD_CONSTRUCTOR_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| SED_JD_CONSTRUCTOR_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| SED_JD_CONSTRUCTOR_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| SED_JD_CONSTRUCTOR_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах SED_JD_CONSTRUCTOR_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| SED_JD_CONSTRUCTOR_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который SED_JD_CONSTRUCTOR_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| SED_JD_CONSTRUCTOR_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| SED_JD_CONSTRUCTOR_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| SED_JD_CONSTRUCTOR_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| SED_JD_CONSTRUCTOR_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| SED_JD_CONSTRUCTOR_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| SED_JD_CONSTRUCTOR_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| SED_JD_CONSTRUCTOR_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к хранилищу сертификатов. |
| SED_JD_CONSTRUCTOR_KAFKA_AUTH_MODE | string | нет | "static" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_JD_CONSTRUCTOR_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]. Переменная соответствует полю authConfig из KafkaAuthSettings. |
| SED_JD_CONSTRUCTOR_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| SED_JD_CONSTRUCTOR_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| SED_JD_CONSTRUCTOR_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| SED_JD_CONSTRUCTOR_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| SED_JD_CONSTRUCTOR_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| SED_JD_CONSTRUCTOR_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| SED_JD_CONSTRUCTOR_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| SED_JD_CONSTRUCTOR_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| SED_JD_CONSTRUCTOR_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| SED_JD_CONSTRUCTOR_DISCOVERABLE_ID | string | нет | "another_sed_jd_constructor_service_instance" | ID сервиса в ServiceDiscovery |
| SED_JD_CONSTRUCTOR_DISCOVERABLE_NAME | string | нет | "sed-jd-constructor" | Имя сервиса в ServiceDiscovery |
| SED_JD_CONSTRUCTOR_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| SED_JD_CONSTRUCTOR_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| SED_JD_CONSTRUCTOR_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| SED_JD_CONSTRUCTOR_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| SED_JD_CONSTRUCTOR_SERVICE_TITLE | string | нет | "sed-jd-constructor" | Название сервиса для отображения |
| SED_JD_CONSTRUCTOR_SERVICE_DESCRIPTION | string | нет | "Service SED_JD_CONSTRUCTOR" | Описание сервиса для отображения |
| SED_JD_CONSTRUCTOR_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| SED_JD_CONSTRUCTOR_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| SED_JD_CONSTRUCTOR_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| SED_JD_CONSTRUCTOR_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| SED_JD_CONSTRUCTOR_HEALTH_TIMEOUT | duration string | нет | 5 seconds | Максимальное время ожидания ответа health check |
| SED_JD_CONSTRUCTOR_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| SED_JD_CONSTRUCTOR_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| SED_JD_CONSTRUCTOR_DB_HOST | string | да | Хост БД | |
| SED_JD_CONSTRUCTOR_DB_PORT | int | да | Порт БД | |
| SED_JD_CONSTRUCTOR_DB_NAME | string | да | Имя базы в БД | |
| SED_JD_CONSTRUCTOR_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| SED_JD_CONSTRUCTOR_DB_USER | string | да | Пользователь БД | |
| SED_JD_CONSTRUCTOR_DB_PASSWORD | string | да | Пароль пользователя БД | |
| SED_JD_CONSTRUCTOR_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_SLICK_STATEMENT | string | нет | INFO | Уровень логирования запросов, отправляемых slick в БД |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирование бенчмарков выполнения запросов slick |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| SED_JD_CONSTRUCTOR_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| LOGGING_HOSTNAME | string | нет | SERVER | Имя сервера для CEF-логов |
| LOGGING_EXTERNAL_ADDRESS | string | нет | localhost | IP-адрес сервера для CEF-логов |
| GPN_VERSION_POSTFIX | string | нет | Постфикс библиотеки gpn-libs для сборки CI | |
| CLIENT_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-domain-lib для сборки CI | |
| SYSTEM_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-system-lib для сборки CI | |
| SED_JD_CONSTRUCTOR_LOG_FORMAT | string | нет | CEF | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| SED_JD_CONSTRUCTOR_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| SED_JD_CONSTRUCTOR_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| SED_JD_CONSTRUCTOR_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| SED_JD_CONSTRUCTOR_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| SED_JD_CONSTRUCTOR_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| SED_JD_CONSTRUCTOR_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| SED_JD_CONSTRUCTOR_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| SED_JD_CONSTRUCTOR_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| SED_JD_CONSTRUCTOR_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
Список команд сервиса sed-jd-constructor
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованы следующие команды:
CreateForm
На входе [FormCreateDTO]
На выходе ID формы
Создание новой формы
- Input: [FormCreateDTO]
- Output: UUID
| Команда | Путь |
|---|---|
| sedJdConstructor_createForm | Kafka Topic "sed_jd_constructor_commands" |
GetForm
На входе ID формы
На выходе атрибуты формы
Получение формы по идентификатору.
- Input: UUID
- Output: Form
| Команда | Путь |
|---|---|
| sedJdConstructor_getForm | HTTP POST "/v1/form/get" |
ListForms
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
На выходе список атрибутов каждой из форм
Получение списка форм с фильтрацией, сортировкой и пагинацией. Список блоков возвращается пустым.
| Команда | Путь |
|---|---|
| sedJdConstructor_listForms | HTTP POST "/v1/form/list" |
UpdateForm
На входе атрибуты обновляемой формы, а также ID и версия
На выходе признак успешности
Обновление формы.
- На входе: FormUpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_updateForm | Kafka Topic "sed_jd_constructor_commands" |
DeleteForm
На входе ID формы
На выходе результат удаления
Удаление формы
- На входе: UUID
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_deleteForm | Kafka Topic "sed_jd_constructor_commands" |
RestoreForm
На входе ID формы
На выходе результат восстановления
Восстановления формы
- На входе: UUID
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_restoreForm | Kafka Topic "sed_jd_constructor_commands" |
CreateBlock
На входе [BlockCreateDTO]
На выходе ID блока
Создание новой блока
- Input: [BlockCreateDTO]
- Output: UUID
| Команда | Путь |
|---|---|
| sedJdConstructor_createBlock | Kafka Topic "sed_jd_constructor_commands" |
GetBlock
На входе ID блока
На выходе атрибуты блока
Получение блока по идентификатору.
- Input: UUID
- Output: Block
| Команда | Путь |
|---|---|
| sedJdConstructor_getBlock | HTTP POST "/v1/block/get" |
ListBlocks
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
На выходе список атрибутов каждого из блоков
Получение списка блоков с фильтрацией, сортировкой и пагинацией. Список секций возвращается пустым.
| Команда | Путь |
|---|---|
| sedJdConstructor_listBlocks | HTTP POST "/v1/block/list" |
UpdateBlock
На входе атрибуты обновляемой блока, а также ID и версия
На выходе признак успешности
Обновление блока.
- На входе: BlockUpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_updateBlock | Kafka Topic "sed_jd_constructor_commands" |
DeleteBlock
На входе ID блока
На выходе результат удаления
Удаление блока
- На входе: UUID
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_deleteBlock | Kafka Topic "sed_jd_constructor_commands" |
CreateSection
На входе [SectionCreateDTO]
На выходе ID секции
Создание новой секции
- Input: [SectionCreateDTO]
- Output: UUID
| Команда | Путь |
|---|---|
| sedJdConstructor_createSection | Kafka Topic "sed_jd_constructor_commands" |
GetSection
На входе ID секции
На выходе атрибуты секции
Получение секции по идентификатору.
- Input: UUID
- Output: Section
| Команда | Путь |
|---|---|
| sedJdConstructor_getSection | HTTP POST "/v1/section/get" |
ListSections
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
На выходе список атрибутов каждого из полей
Пилучение списка секций с фильтрацией, сортировкой и пагинацией. Список полей возвращается пустым.
| Команда | Путь |
|---|---|
| sedJdConstructor_listSections | HTTP POST "/v1/section/list" |
UpdateSection
На входе атрибуты обновляемой секции, а также ID и версия
На выходе признак успешности
Обновление секции.
- На входе: SectionUpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_updateSection | Kafka Topic "sed_jd_constructor_commands" |
DeleteSection
На входе ID секции
На выходе результат удаления
Удаление секции
- На входе: UUID
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_deleteSection | Kafka Topic "sed_jd_constructor_commands" |
CreateField
На входе [FieldCreateDTO]
На выходе ID поля
Создание новой поля
- Input: [FieldCreateDTO]
- Output: UUID
| Команда | Путь |
|---|---|
| sedJdConstructor_createField | Kafka Topic "sed_jd_constructor_commands" |
GetField
На входе ID поля
На выходе атрибуты поля
Получение поля по идентификатору.
- Input: UUID
- Output: Field
| Команда | Путь |
|---|---|
| sedJdConstructor_getField | HTTP POST "/v1/field/get" |
ListFields
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
На выходе список атрибутов каждого из полей
Пилучение списка полей с фильтрацией, сортировкой и пагинацией.
| Команда | Путь |
|---|---|
| sedJdConstructor_listFields | HTTP POST "/v1/field/list" |
UpdateField
На входе атрибуты обновляемой поля, а также ID и версия
На выходе признак успешности
Обновление поля.
- На входе: FieldUpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_updateField | Kafka Topic "sed_jd_constructor_commands" |
DeleteField
На входе ID поля
На выходе результат удаления
Удаление поля
- На входе: UUID
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_deleteField | Kafka Topic "sed_jd_constructor_commands" |
CreateSelect
На входе [SelectCreateDTO]
На выходе ID списка для выбора
Создание новой списка для выбора
- Input: [SelectCreateDTO]
- Output: UUID
| Команда | Путь |
|---|---|
| sedJdConstructor_createSelect | Kafka Topic "sed_jd_constructor_commands" |
GetSelect
На входе ID списка для выбора
На выходе атрибуты списка для выбора
Получение списка для выбора по идентификатору.
- Input: UUID
- Output: SelectWithItems
| Команда | Путь |
|---|---|
| sedJdConstructor_getSelect | HTTP POST "/v1/select/get" |
UpdateSelect
На входе атрибуты обновляемой списка для выбора, а также ID и версия
На выходе признак успешности
Обновление списка для выбора.
- На входе: SelectUpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_updateSelect | Kafka Topic "sed_jd_constructor_commands" |
DeleteSelect
На входе ID списка для выбора
На выходе результат удаления
Удаление списка для выбора
- На входе: UUID
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_deleteSelect | Kafka Topic "sed_jd_constructor_commands" |
RestoreSelect
На входе ID списка для выбора
На выходе результат восстановления
Восстановления списка для выбора
- На входе: UUID
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdConstructor_restoreSelect | Kafka Topic "sed_jd_constructor_commands" |
GetSchema
На входе SchemaGetDTO
На выходе дерево сущностей
Восстановления списка для выбора
- На входе: SchemaGetDTO
- На выходе: BlockDTO
| Команда | Путь |
|---|---|
| sedJdConstructor_getSchema | Kafka Topic "sed_jd_constructor_commands" |
Объекты сервиса sed-jd-constructor
Field
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | varchar(256) | Да | ID поля |
| title | varchar(256) | Да | Имя поля |
| attributeType | varchar(32) | Да | Тип поля |
| sourceId | varchar(36) | Нет | Идентификатор источника |
| sourceType | varchar(64) | Нет | Тип источника |
| conditionId | varchar(256) | Нет | Идентификатор поля-условия |
| conditionValue | text | Нет | Значение поля-условия |
| default | jsonb | Нет | Значение поля по умолчанию |
| required | boolean | Да | Признак обязательности для заполнения |
| enabled | boolean | Да | Признак доступности для редактирования |
| multiselect | boolean | Да | Признак множественного выбора в поле |
| multiline | boolean | Да | Признак многострочности текстовых данных |
| copyAllowed | boolean | Да | Признак доступности для копирования |
| defaultAttribute | boolean | Да | Признак первичного поля |
| editable | boolean | Да | Признак доступности для редактирования |
| documentStyle | DocumentStyle | Нет | Настройки отображения в файле документа |
| created | bigint | Да | Дата и время создания |
| createdBy | UUID | Да | ID пользователя создавшего запись |
| modified | bigint | Да | Дата и время изменения |
| modifiedBy | UUID | Да | ID пользователя последним изменившего запись |
| removed | boolean | Да | Признак удаления записи |
| version | integer | Да | Версия для оптимистичной блокировки |
FieldCreateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| title | varchar(256) | Да | Имя поля |
| attributeType | varchar(32) | Да | Тип поля |
| sourceId | varchar(36) | Нет | Идентификатор источника |
| sourceType | varchar(64) | Нет | Тип источника |
| conditionId | varchar(256) | Нет | Идентификатор поля-условия |
| conditionValue | text | Нет | Значение поля-условия |
| default | jsonb | Нет | Значение поля по умолчанию |
| subdivisionIds | UUID[] | Нет | Список подразделений, которым доступно поле |
| required | boolean | Да | Признак обязательности для заполнения |
| enabled | boolean | Да | Признак доступности для редактирования |
| multiselect | boolean | Да | Признак множественного выбора в поле |
| multiline | boolean | Да | Признак многострочности текстовых данных |
FieldUpdateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | varchar(256) | Да | ID поля |
| title | varchar(256) | Да | Имя поля |
| attributeType | varchar(32) | Да | Тип поля |
| sourceId | varchar(36) | Нет | Идентификатор источника |
| sourceType | varchar(64) | Нет | Тип источника |
| conditionId | varchar(256) | Нет | Идентификатор поля-условия |
| conditionValue | text | Нет | Значение поля-условия |
| default | jsonb | Нет | Значение поля по умолчанию |
| subdivisionIds | UUID[] | Нет | Список подразделений, которым доступно поле |
| required | boolean | Да | Признак обязательности для заполнения |
| enabled | boolean | Да | Признак доступности для редактирования |
| multiselect | boolean | Да | Признак множественного выбора в поле |
| multiline | boolean | Да | Признак многострочности текстовых данных |
| copyAllowed | boolean | Да | Признак доступности для копирования |
| defaultAttribute | boolean | Да | Признак первичного поля |
| editable | boolean | Да | Признак доступности для редактирования |
| documentStyle | DocumentStyle | Нет | Настройки отображения в файле документа |
| version | integer | Да | Версия для оптимистичной блокировки |
Section
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID раздела |
| title | text | Да | Заголовок раздела |
| businessProcessExtId | UUID | Нет | Бизнесс процесс из цнмд |
| fields | Field[] | Нет | Список привязанных полей |
| organizationIds | UUID[] | Нет | Список организаций, которым доступен раздел |
| copyAllowed | boolean | Да | Признак доступности для копирования |
| documentStyle | DocumentStyle | Нет | Настройки отображения в файле документа |
| hiddenIfEmpty | Boolean | Да | Признак отображения, в случае скрытия привязанных полей |
| created | bigint | Да | Дата и время создания |
| createdBy | UUID | Да | ID пользователя создавшего запись |
| modified | bigint | Да | Дата и время изменения |
| modifiedBy | UUID | Да | ID пользователя последним изменившего запись |
| removed | boolean | Да | Признак удаления записи |
| version | integer | Да | Версия для оптимистичной блокировки |
SectionCreateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| title | text | Да | Заголовок раздела |
| businessProcessExtId | UUID | Нет | Бизнесс процесс из цнмд |
| fieldIds | UUID[] | Да | Список ID полей |
| organizationIds | UUID[] | Нет | Список организаций, которым доступен раздел |
SectionUpdateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID раздела |
| title | text | Да | Заголовок раздела |
| businessProcessExtId | UUID | Нет | Бизнесс процесс из цнмд |
| fieldIds | UUID[] | Да | Список ID полей |
| organizationIds | UUID[] | Нет | Список организаций, которым доступен раздел |
| copyAllowed | boolean | Да | Признак доступности для копирования |
| documentStyle | DocumentStyle | Нет | Настройки отображения в файле документа |
| hiddenIfEmpty | Boolean | Да | Признак отображение, в случае не отображения привязанных полей |
| version | integer | Да | Версия для оптимистичной блокировки |
Block
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID блока |
| title | text | Да | Заголовок блока |
| sections | Section[] | Да | Список привязанных секций |
| subdivisionIds | UUID[] | Нет | Список подразделений, которым доступен блок |
| copyAllowed | boolean | Да | Признак доступности для копирования |
| documentStyle | DocumentStyle | Нет | Настройки отображения в файле документа |
| created | bigint | Да | Дата и время создания |
| createdBy | UUID | Да | ID пользователя создавшего запись |
| modified | bigint | Да | Дата и время изменения |
| modifiedBy | UUID | Да | ID пользователя последним изменившего запись |
| removed | boolean | Да | Признак удаления записи |
| version | integer | Да | Версия для оптимистичной блокировки |
BlockCreateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| title | text | Да | Заголовок блока |
| subdivisionIds | UUID[] | Нет | Список подразделений, которым доступен блок |
| sectionIds | UUID[] | Да | Список ID секций |
BlockUpdateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID блока |
| title | text | Да | Заголовок блока |
| subdivisionIds | UUID[] | Нет | Список подразделений, которым доступен блок |
| sectionIds | UUID[] | Да | Список ID секций |
| copyAllowed | boolean | Да | Признак доступности для копирования |
| documentStyle | DocumentStyle | Нет | Настройки отображения в файле документа |
| version | integer | Да | Версия для оптимистичной блокировки |
Form
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID формы |
| blocks | Block[] | Да | Список привязанных блоков |
| subdivisionId | UUID | Нет | ID подразделения |
| fileId | UUID | Да | ID шаблона раздела |
| created | bigint | Да | Дата и время создания |
| createdBy | UUID | Да | ID пользователя создавшего запись |
| modified | bigint | Да | Дата и время изменения |
| modifiedBy | UUID | Да | ID пользователя последним изменившего запись |
| removed | boolean | Да | Признак удаления записи |
| version | integer | Да | Версия для оптимистичной блокировки |
FormCreateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| subdivisionId | UUID | Нет | ID подразделения |
| blockIds | UUID[] | Да | Список ID блоков |
FormUpdateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID формы |
| subdivisionId | UUID | Нет | ID подразделения |
| blockIds | UUID[] | Да | Список ID блоков |
| version | integer | Да | Версия для оптимистичной блокировки |
Select
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID |
| withDocumentText | boolean | Да | Признак наличия дополнительного подставного текста для документа |
| created | bigint | Да | Дата и время создания |
| createdBy | UUID | Да | ID пользователя создавшего запись |
| modified | bigint | Да | Дата и время изменения |
| modifiedBy | UUID | Да | ID пользователя последним изменившего запись |
| removed | boolean | Да | Признак удаления записи |
| version | integer | Да | Версия для оптимистичной блокировки |
SelectCreateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| withDocumentText | boolean | Да | Признак наличия дополнительного подставного текста для документа |
| items | [SelectItemCreateDTO][] | Да | Список элементов выбора |
SelectUpdateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID |
| withDocumentText | boolean | Да | Признак наличия дополнительного подставного текста для документа |
| items | [SelectItemUpdateDTO][] | Да | Список элементов выбора |
| version | integer | Да | Версия для оптимистичной блокировки |
SelectWithItems
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID |
| withDocumentText | boolean | Да | Признак наличия дополнительного подставного текста для документа |
| items | [SelectItem][] | Да | Список элементов выбора |
| version | integer | Да | Версия для оптимистичной блокировки |
SelectItem
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID |
| selectId | UUID | Да | ID компонента выбора |
| text | varchar(256) | Да | Текст элемента |
| documentText | varchar(256) | Нет | Опциональный текст документа элемента |
| removed | boolean | Да | Признак удаления записи |
SelectItemCreateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| text | varchar(256) | Да | Текст элемента |
| documentText | varchar(256) | Нет | Опциональный текст документа элемента |
SelectItemUpdateDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Нет | ID (если не передается, то создается новый SelectItem) |
| text | varchar(256) | Да | Текст элемента |
| documentText | varchar(256) | Нет | Опциональный текст документа элемента |
DocumentStyle
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| isHidden | Boolean | Да | Признак отображения сущности в файле документа |
| titleAlias | String | Нет | Подменяемый заголовок сущности в файле документа |
| titleBackgroundColor | String | Нет | Цвет заливки ячейки заголовка сущности в файле документа |
| printType | String | Да | Тип отображения ячеек в файле документа |
| isHiddenTitle | String | Нет | Признак отображения заголовка сущности в файле документа |
| columnNumber | Int | Нет | номер столбца (указывается, если несколько сущностей надо расположить в одном столбце, вне логики printType контейнера) |
| rowNumber | Int | Нет | номер строки (указывается, если несколько сущностей надо расположить в одной строке, вне логики printType контейнера) |
| columnSizes | Int[] | Нет | размеры столбцов в процентах (должно быть указано не меньше максимального кол-ва столбцов) |
BlockDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID блока |
| title | text | Да | Заголовок блока |
| sections | SectionDTO[] | Да | Список привязанных секций |
| documentStyle | DocumentStyle | Нет | Настройки отображения в файле документа |
SectionDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | UUID | Да | ID раздела |
| title | text | Да | Заголовок раздела |
| businessProcessExtId | UUID | Нет | Бизнесс процесс из цнмд |
| fields | FieldDTO[] | Нет | Список привязанных полей |
| documentStyle | DocumentStyle | Нет | Настройки отображения в файле документа |
| hiddenIfEmpty | Boolean | Да | Признак отображение, в случае не отображения привязанных полей |
FieldDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| id | varchar(256) | Да | ID поля |
| title | varchar(256) | Да | Имя поля |
| attributeType | varchar(32) | Да | Тип поля |
| sourceId | varchar(36) | Нет | Идентификатор источника |
| sourceType | varchar(64) | Нет | Тип источника |
| conditionId | varchar(256) | Нет | Идентификатор поля-условия |
| conditionValue | text | Нет | Значение поля-условия |
| default | jsonb | Нет | Значение поля по умолчанию |
| required | boolean | Да | Признак обязательности для заполнения |
| enabled | boolean | Да | Признак доступности для редактирования |
| multiselect | boolean | Да | Признак множественного выбора в поле |
| multiline | boolean | Да | Признак многострочности текстовых данных |
| copyAllowed | boolean | Да | Признак доступности для копирования |
| documentStyle | DocumentStyle | Нет | Настройки отображения в файле документа |
| value | String | Нет | Заполненое значение поля |
SchemaGetDTO
| Имя поля | Тип поля | Обязательное | Описание |
|---|---|---|---|
| organizationId | UUID | Нет | Id организации |
sed-jd-file-generator
Сервис принимает команды и хранит состояние в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик sed_jd_file_generator_commands.
Сервис разбит на несколько модулей, в виде sbt проектов: - domain, в котором содержатся все доменные модели и их различные представления. - commands, в котором содержатся всё, что связано с командами, их описанием и обработчиками. - storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей. - service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой. - boot, содержит зависимости и описание для сборки и запуска сервиса.
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу
localhost:5432/sedJdFileGenerator - Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - Добавлены необходимые переменные окружения:
- SED_JD_FILE_GENERATOR_DB_HOST
- SED_JD_FILE_GENERATOR_DB_PORT
- SED_JD_FILE_GENERATOR_DB_NAME
- SED_JD_FILE_GENERATOR_DB_USER
- SED_JD_FILE_GENERATOR_DB_PASSWORD
Запуск из консоли с помощью SBT
SED_JD_FILE_GENERATOR_DB_HOST=localhost SED_JD_FILE_GENERATOR_DB_PORT=5432 SED_JD_FILE_GENERATOR_DB_NAME=sedJdFileGenerator SED_JD_FILE_GENERATOR_DB_USER=postgres SED_JD_FILE_GENERATOR_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса sed-jd-file-generator
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| SED_JD_FILE_GENERATOR_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| SED_JD_FILE_GENERATOR_HTTP_PORT | int | нет | 8032 | Порт, на котором слушает HTTP-сервер |
| SED_JD_FILE_GENERATOR_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| SED_JD_FILE_GENERATOR_KAFKA_TOPIC | string | нет | "sed_jd_file_generator_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| SED_JD_FILE_GENERATOR_KAFKA_CONSUMER_GROUP | string | нет | "sed_jd_file_generator_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| SED_JD_FILE_GENERATOR_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| SED_JD_FILE_GENERATOR_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| SED_JD_FILE_GENERATOR_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| SED_JD_FILE_GENERATOR_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| SED_JD_FILE_GENERATOR_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах SED_JD_FILE_GENERATOR_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| SED_JD_FILE_GENERATOR_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который SED_JD_FILE_GENERATOR_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| SED_JD_FILE_GENERATOR_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| SED_JD_FILE_GENERATOR_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| SED_JD_FILE_GENERATOR_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| SED_JD_FILE_GENERATOR_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| SED_JD_FILE_GENERATOR_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| SED_JD_FILE_GENERATOR_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| SED_JD_FILE_GENERATOR_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к хранилищу сертификатов. |
| SED_JD_FILE_GENERATOR_KAFKA_AUTH_MODE | string | нет | "static" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_JD_FILE_GENERATOR_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]. Переменная соответствует полю authConfig из KafkaAuthSettings. |
| SED_JD_FILE_GENERATOR_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| SED_JD_FILE_GENERATOR_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| SED_JD_FILE_GENERATOR_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| SED_JD_FILE_GENERATOR_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| SED_JD_FILE_GENERATOR_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| SED_JD_FILE_GENERATOR_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| SED_JD_FILE_GENERATOR_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| SED_JD_FILE_GENERATOR_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| SED_JD_FILE_GENERATOR_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| SED_JD_FILE_GENERATOR_DISCOVERABLE_ID | string | нет | "another_sed_jd_file_generator_service_instance" | ID сервиса в ServiceDiscovery |
| SED_JD_FILE_GENERATOR_DISCOVERABLE_NAME | string | нет | "sedJdFileGenerator" | Имя сервиса в ServiceDiscovery |
| SED_JD_FILE_GENERATOR_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| SED_JD_FILE_GENERATOR_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| SED_JD_FILE_GENERATOR_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| SED_JD_FILE_GENERATOR_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| SED_JD_FILE_GENERATOR_SERVICE_TITLE | string | нет | "Sed Jd File Generator" | Название сервиса для отображения |
| SED_JD_FILE_GENERATOR_SERVICE_DESCRIPTION | string | нет | "Service SED_JD_FILE_GENERATOR" | Описание сервиса для отображения |
| SED_JD_FILE_GENERATOR_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| SED_JD_FILE_GENERATOR_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| SED_JD_FILE_GENERATOR_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| SED_JD_FILE_GENERATOR_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| SED_JD_FILE_GENERATOR_HEALTH_TIMEOUT | duration string | нет | 5 seconds | Максимальное время ожидания ответа health check |
| SED_JD_FILE_GENERATOR_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| SED_JD_FILE_GENERATOR_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| SED_JD_FILE_GENERATOR_DB_HOST | string | да | Хост БД | |
| SED_JD_FILE_GENERATOR_DB_PORT | int | да | Порт БД | |
| SED_JD_FILE_GENERATOR_DB_NAME | string | да | Имя базы в БД | |
| SED_JD_FILE_GENERATOR_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| SED_JD_FILE_GENERATOR_DB_USER | string | да | Пользователь БД | |
| SED_JD_FILE_GENERATOR_DB_PASSWORD | string | да | Пароль пользователя БД | |
| SED_JD_FILE_GENERATOR_AUTHZFORCE_ADDR | string | нет | "http://localhost:8080/authzforce-ce" | Адрес AuthZforce server |
| SED_JD_FILE_GENERATOR_AUTHZFORCE_DOMAIN | string | нет | "" | Доступный DomainID в AuthZforce server |
| SED_JD_FILE_GENERATOR_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_SLICK_STATEMENT | string | нет | INFO | Уровень логирования запросов, отправляемых slick в БД |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирование бенчмарков выполнения запросов slick |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| SED_JD_FILE_GENERATOR_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| LOGGING_HOSTNAME | string | нет | SERVER | Имя сервера для CEF-логов |
| LOGGING_EXTERNAL_ADDRESS | string | нет | localhost | IP-адрес сервера для CEF-логов |
| GPN_VERSION_POSTFIX | string | нет | Постфикс библиотеки gpn-libs для сборки CI | |
| CLIENT_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-domain-lib для сборки CI | |
| SYSTEM_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-system-lib для сборки CI | |
| SED_JD_FILE_GENERATOR_LOG_FORMAT | string | нет | CEF | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| SED_JD_FILE_GENERATOR_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| SED_JD_FILE_GENERATOR_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| SED_JD_FILE_GENERATOR_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| SED_JD_FILE_GENERATOR_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| SED_JD_FILE_GENERATOR_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| SED_JD_FILE_GENERATOR_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| SED_JD_FILE_GENERATOR_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| SED_JD_FILE_GENERATOR_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| SED_JD_FILE_GENERATOR_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
Список команд сервиса sed-jd-file-generator
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованы следующие команды:
CreateJdFile
На входе ID Должностной инструкции
На выходе признак успешности
- На входе: UUID должностной инструкции
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedJdFileGenerator_createJdFile | Kafka Topic "sed_jd_file_generator_commands" |
Объекты сервиса sed-jd-file-generator
sed-report
Сервис принимает команды и хранит состояние в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик sed_report_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
domain, в котором содержатся все доменные модели и их различные представления.commands, в котором содержатся всё, что связано с командами, их описанием и обработчиками.storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу
localhost:5432/sed-report - Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - Добавлены необходимые переменные окружения:
- SED_REPORT_DB_HOST
- SED_REPORT_DB_PORT
- SED_REPORT_DB_NAME
- SED_REPORT_DB_USER
- SED_REPORT_DB_PASSWORD
Запуск из консоли с помощью SBT
SED_REPORT_DB_HOST=localhost SED_REPORT_DB_PORT=5432 SED_REPORT_DB_NAME=sed-report SED_REPORT_DB_USER=postgres SED_REPORT_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса sed-report
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| SED_REPORT_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| SED_REPORT_HTTP_PORT | int | нет | 8026 | Порт, на котором слушает HTTP-сервер |
| SED_REPORT_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| SED_REPORT_KAFKA_TOPIC | string | нет | "sed_report_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| SED_REPORT_KAFKA_CONSUMER_GROUP | string | нет | "sed_report_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| SED_REPORT_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| SED_REPORT_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| SED_REPORT_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| SED_REPORT_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| SED_REPORT_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах SED_REPORT_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| SED_REPORT_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который SED_REPORT_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| SED_REPORT_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| SED_REPORT_KAFKA_OBJECT_EVENT_TOPIC | string | да | "entityObjectEvent" | Название кафка-топика для получения событий |
| SED_REPORT_KAFKA_OBJECT_EVENT_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика событий |
| SED_REPORT_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| SED_REPORT_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| SED_REPORT_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| SED_REPORT_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| SED_REPORT_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| SED_REPORT_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к харнилищу сертификатов. |
| SED_REPORT_KAFKA_AUTH_MODE | string | нет | "static" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_REPORT_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]. Переменная соответствует полю authConfig из KafkaAuthSettings. |
| SED_REPORT_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| SED_REPORT_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| SED_REPORT_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| SED_REPORT_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| SED_REPORT_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| SED_REPORT_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| SED_REPORT_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| SED_REPORT_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| SED_REPORT_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| SED_REPORT_DISCOVERABLE_ID | string | нет | "another_SED_REPORT_service_instance" | ID сервиса в ServiceDiscovery |
| SED_REPORT_DISCOVERABLE_NAME | string | нет | "sedReport" | Имя сервиса в ServiceDiscovery |
| SED_REPORT_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| SED_REPORT_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| SED_REPORT_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| SED_REPORT_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| SED_REPORT_SERVICE_TITLE | string | нет | "sed-report" | Название сервиса для отображения |
| SED_REPORT_SERVICE_DESCRIPTION | string | нет | "Service SED_REPORT" | Описание сервиса для отображения |
| SED_REPORT_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| SED_REPORT_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| SED_REPORT_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| SED_REPORT_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| SED_REPORT_HEALTH_TIMEOUT | duration string | нет | 5 seconds | Максимальное время ожидания ответа health check |
| SED_REPORT_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| SED_REPORT_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| SED_REPORT_DB_HOST | string | да | Хост БД | |
| SED_REPORT_DB_PORT | int | да | Порт БД | |
| SED_REPORT_DB_NAME | string | да | Имя базы в БД | |
| SED_REPORT_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| SED_REPORT_DB_USER | string | да | Пользователь БД | |
| SED_REPORT_DB_PASSWORD | string | да | Пароль пользователя БД | |
| SED_REPORT_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| SED_REPORT_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| SED_REPORT_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| SED_REPORT_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| SED_REPORT_LOG_LEVEL_SLICK_STATEMENT | string | нет | WARN | Уровень логирования запросов, отправляемых slick в БД |
| SED_REPORT_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирование бенчмарков выполнения запросов slick |
| SED_REPORT_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| SED_REPORT_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| SED_REPORT_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| SED_REPORT_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| SED_REPORT_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| SED_REPORT_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| SED_REPORT_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| SED_REPORT_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| STORAGE_DIALECT | string | нет | elasticSearch | Тип хранилища данных "elasticSearch" или "openSearch" |
| OPEN_SEARCH_HOST | string | нет | localhost | Хост openSearch |
| OPEN_SEARCH_PORT | int | нет | 9200 | Порт openSearch |
| OPEN_SEARCH_SSL | bool | нет | false | Использовать ли SSL для соединении с openSearch |
| OPEN_SEARCH_AUTH_USER | string | нет | "" | Название учетной записи для openSearch |
| OPEN_SEARCH_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи для openSearch |
| OPEN_SEARCH_AUTH_STORE_TYPE | string | нет | pem | Тип хранилища сертификата для openSearch |
| OPEN_SEARCH_AUTH_STORE_LOCATION | string | нет | "" | Путь до хранилища сертификата для openSearch |
| ELASTIC_HOST | string | нет | localhost | Хост elasticSearch |
| ELASTIC_PORT | int | нет | 9200 | Порт elasticSearch |
| ELASTIC_SSL | bool | нет | false | Использовать ли SSL для соединении с elasticSearch |
| ELASTIC_AUTH_USER | string | нет | "" | Название учетной записи для elasticSearch |
| ELASTIC_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи для elasticSearch |
| ELASTIC_AUTH_STORE_TYPE | string | нет | pem | Тип хранилища сертификата для elasticSearch |
| ELASTIC_AUTH_STORE_LOCATION | string | нет | "" | Путь до хранилища сертификата для elasticSearch |
| SED_REPORT_FS_URI | url string | нет | "http://localhost:9000" | Адрес для подключения к хранилищу файлов по S3-API |
| SED_REPORT_FS_ACCESS_KEY_ID | string | нет | "" | Ключ доступа для хранилища файлов (aka логин) |
| SED_REPORT_FS_SECRET_ACCESS_KEY | string | нет | "" | Секретный ключ для хранилища файлов (aka пароль) |
| SED_REPORT_FS_UPLOAD_PARALLELISM | int | нет | 4 | Параллелизм для загрузки файлов |
| SED_REPORT_FS_AUTH_MODE | string | нет | static | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_REPORT_FS_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации, если AuthMode = mapping (пример: [{"bucketName": "report", "credentials": {"accessKeyId": "minioadmin", "secretAccessKey": "minioadmin"}}]) |
| SED_REPORT_FS_CACHE_SIZE | int | нет | 1 | Максимальный размер кеша клиентов для хранилища файлов (количество активных соединений). |
| SED_REPORT_FS_CACHE_TTL | duration string | нет | Время жизни клиента в кеше | |
| SED_REPORT_FS_BUCKET | string | нет | temp | Бакет в файловом хранилище для временных файлов, загружаемых на gateway |
| GPN_VERSION_POSTFIX | string | нет | Постфикс для библиотеки gpn-libs | |
| CLIENT_VERSION_POSTFIX | string | нет | Постфикс для библиотеки sed-client-libs | |
| SYSTEM_VERSION_POSTFIX | string | нет | Постфикс для библиотеки sed-system-lib | |
| LOGGING_HOSTNAME | string | нет | SERVER | Имя хоста для логирования |
| LOGGING_EXTERNAL_ADDRESS | string | нет | localhost | Дополнительный адрес логирования |
| SED_REPORT_LOG_FORMAT | string | нет | CEF | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| SED_REPORT_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| SED_REPORT_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| SED_REPORT_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| SED_REPORT_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| SED_REPORT_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| SED_REPORT_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| SED_REPORT_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| SED_REPORT_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| SED_REPORT_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
| SED_REPORT_MIGRATIONS_TIMEOUT | duration string | нет | 5 minutes | Таймаут на выполнение миграций в elastic |
Список команд сервиса sed-report
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованы следующие команды:
CommentReport
На входе атрибуты запроса
{
"entityType": "NmdRequest",
"entityId": "75b76f93-5ba0-4141-b0bc-e81e36c7e946"
}
На выходе ссылка на скачивание выгрузки
"temp/01ec6e18-7804-4c28-8cbf-e5026fc06c33"
Выгрузка комментариев.
- На входе: CreateReport
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sedReport_commentReport | Kafka Topic "sed_commands" |
Объекты сервиса sed-report
CreateReport
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| entityType | string | да | тип сущности |
| entityId | string | да | id сущности |
sed-request-registry
Сервис принимает команды и хранит состояние в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик sed_request_registry_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
domain, в котором содержатся все доменные модели и их различные представления.commands, в котором содержатся всё, что связано с командами, их описанием и обработчиками.storage, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.service, содержит сервисы бизнес логики, которые определяют правила взаимодействия компонентов между собой.boot, содержит зависимости и описание для сборки и запуска сервиса.
Локальный запуск
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу
localhost:5432/sedRequestRegistry - Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - Добавлены необходимые переменные окружения:
- SED_REQUEST_REGISTRY_DB_HOST
- SED_REQUEST_REGISTRY_DB_PORT
- SED_REQUEST_REGISTRY_DB_NAME
- SED_REQUEST_REGISTRY_DB_USER
- SED_REQUEST_REGISTRY_DB_PASSWORD
Запуск из консоли с помощью SBT
SED_REQUEST_REGISTRY_DB_HOST=localhost SED_REQUEST_REGISTRY_DB_PORT=5432 SED_REQUEST_REGISTRY_DB_NAME=sedRequestRegistry SED_REQUEST_REGISTRY_DB_USER=postgres SED_REQUEST_REGISTRY_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса sed-request-registry
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| SED_REQUEST_REGISTRY_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| SED_REQUEST_REGISTRY_HTTP_PORT | int | нет | 8315 | Порт, на котором слушает HTTP-сервер |
| SED_REQUEST_REGISTRY_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| SED_REQUEST_REGISTRY_KAFKA_TOPIC | string | нет | "sed_request_registry_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| SED_REQUEST_REGISTRY_KAFKA_CONSUMER_GROUP | string | нет | "sed_request_registry_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| SED_REQUEST_REGISTRY_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| SED_REQUEST_REGISTRY_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| SED_REQUEST_REGISTRY_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| SED_REQUEST_REGISTRY_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| SED_REQUEST_REGISTRY_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах SED_REQUEST_REGISTRY_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| SED_REQUEST_REGISTRY_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который SED_REQUEST_REGISTRY_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| SED_REQUEST_REGISTRY_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| SED_REQUEST_REGISTRY_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| SED_REQUEST_REGISTRY_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| SED_REQUEST_REGISTRY_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| SED_REQUEST_REGISTRY_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| SED_REQUEST_REGISTRY_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| SED_REQUEST_REGISTRY_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к хранилищу сертификатов. |
| SED_REQUEST_REGISTRY_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| SED_REQUEST_REGISTRY_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| SED_REQUEST_REGISTRY_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| SED_REQUEST_REGISTRY_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| SED_REQUEST_REGISTRY_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| SED_REQUEST_REGISTRY_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| SED_REQUEST_REGISTRY_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| SED_REQUEST_REGISTRY_DISCOVERABLE_ID | string | нет | "another_sed_request_registry_service_instance" | ID сервиса в ServiceDiscovery |
| SED_REQUEST_REGISTRY_DISCOVERABLE_NAME | string | нет | "sedRequestRegistry" | Имя сервиса в ServiceDiscovery |
| SED_REQUEST_REGISTRY_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| SED_REQUEST_REGISTRY_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| SED_REQUEST_REGISTRY_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| SED_REQUEST_REGISTRY_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| SED_REQUEST_REGISTRY_SERVICE_TITLE | string | нет | "SED Request Registry" | Название сервиса для отображения |
| SED_REQUEST_REGISTRY_SERVICE_DESCRIPTION | string | нет | "Service SED_REQUEST_REGISTRY" | Описание сервиса для отображения |
| SED_REQUEST_REGISTRY_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| SED_REQUEST_REGISTRY_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| SED_REQUEST_REGISTRY_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| SED_REQUEST_REGISTRY_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| SED_REQUEST_REGISTRY_HEALTH_TIMEOUT | duration string | нет | 5 seconds | Максимальное время ожидания ответа health check |
| SED_REQUEST_REGISTRY_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| SED_REQUEST_REGISTRY_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| SED_REQUEST_REGISTRY_DB_HOST | string | да | Хост БД | |
| SED_REQUEST_REGISTRY_DB_PORT | int | да | Порт БД | |
| SED_REQUEST_REGISTRY_DB_NAME | string | да | Имя базы в БД | |
| SED_REQUEST_REGISTRY_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| SED_REQUEST_REGISTRY_DB_USER | string | да | Пользователь БД | |
| SED_REQUEST_REGISTRY_DB_PASSWORD | string | да | Пароль пользователя БД | |
| SED_REQUEST_REGISTRY_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| SED_REQUEST_REGISTRY_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| SED_REQUEST_REGISTRY_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| SED_REQUEST_REGISTRY_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| SED_REQUEST_REGISTRY_LOG_LEVEL_SLICK_STATEMENT | string | нет | INFO | Уровень логирования запросов, отправляемых slick в БД |
| SED_REQUEST_REGISTRY_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирование бенчмарков выполнения запросов slick |
| SED_REQUEST_REGISTRY_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| SED_REQUEST_REGISTRY_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| SED_REQUEST_REGISTRY_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| SED_REQUEST_REGISTRY_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| SED_REQUEST_REGISTRY_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| SED_REQUEST_REGISTRY_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| SED_REQUEST_REGISTRY_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| SED_REQUEST_REGISTRY_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| LOGGING_HOSTNAME | string | нет | SERVER | Имя сервера для CEF-логов |
| LOGGING_EXTERNAL_ADDRESS | string | нет | localhost | IP-адрес сервера для CEF-логов |
| GPN_VERSION_POSTFIX | string | нет | Постфикс библиотеки gpn-libs для сборки CI | |
| CLIENT_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-domain-lib для сборки CI | |
| SYSTEM_VERSION_POSTFIX | string | нет | Постфикс библиотеки sed-system-lib для сборки CI | |
| SED_REQUEST_REGISTRY_LOG_FORMAT | string | нет | CEF | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| SED_REQUEST_REGISTRY_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| SED_REQUEST_REGISTRY_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| SED_REQUEST_REGISTRY_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| SED_REQUEST_REGISTRY_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| SED_REQUEST_REGISTRY_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| SED_REQUEST_REGISTRY_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| SED_REQUEST_REGISTRY_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| SED_REQUEST_REGISTRY_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| SED_REQUEST_REGISTRY_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
| SED_REQUEST_REGISTRY_KAFKA_POLLING_TIMEOUT | duration string | нет | 15 seconds | Таймаут на пуллинг kafka-команд |
| SED_REQUEST_REGISTRY_MIGRATIONS_TIMEOUT | duration string | нет | 5 minutes | Таймаут на выполнение миграций в elastic |
| STORAGE_DIALECT | string | нет | elasticSearch | Тип хранилища данных "elasticSearch" или "openSearch" |
| OPEN_SEARCH_HOST | string | нет | localhost | Хост openSearch |
| OPEN_SEARCH_PORT | int | нет | 9200 | Порт openSearch |
| OPEN_SEARCH_SSL | bool | нет | false | Использовать ли SSL для соединении с openSearch |
| OPEN_SEARCH_AUTH_USER | string | нет | "" | Название учетной записи для openSearch |
| OPEN_SEARCH_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи для openSearch |
| OPEN_SEARCH_AUTH_STORE_TYPE | string | нет | pem | Тип хранилища сертификата для openSearch |
| OPEN_SEARCH_AUTH_STORE_LOCATION | string | нет | "" | Путь до хранилища сертификата для openSearch |
| ELASTIC_HOST | string | нет | localhost | Хост elasticSearch |
| ELASTIC_PORT | int | нет | 9200 | Порт elasticSearch |
| ELASTIC_SSL | bool | нет | false | Использовать ли SSL для соединении с elasticSearch |
| ELASTIC_AUTH_USER | string | нет | "" | Название учетной записи для elasticSearch |
| ELASTIC_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи для elasticSearch |
| ELASTIC_AUTH_STORE_TYPE | string | нет | pem | Тип хранилища сертификата для elasticSearch |
| ELASTIC_AUTH_STORE_LOCATION | string | нет | "" | Путь до хранилища сертификата для elasticSearch |
Список команд сервиса sed-request-registry
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованы следующие команды:
ListRequestRegistryRecords
На входе параметры поиска, сортировки и пагинации (Search)
{
"query": "",
"context": {},
"paging": {
"page": 1,
"count": 10
},
"sorting": {
"fieldName": "entityId",
"order": "Asc"
}
}
На выходе список записей реестра запросов
{
"status": "Completed",
"timestamp": 1709220977521,
"value": {
"items": [
{
"number": "001935",
"classCode": "NmdRequest",
"entityId": "68b7c4b8-25b6-4e62-ade1-b72f4731deb4",
"initiatorId": "1de128f3-f8dd-42d9-b10e-304c14c5a23d",
"initiatorFullName": "Адмиралов Виталий Николаевич",
"routeStageId": "00000000-0001-0000-0000-000000000000",
"stageNumber": "1",
"targetDate": null,
"orgBusinessProcessExtIds": [],
"organizationId": null,
"status": "Active",
"isQuarterlyPlanRequest": false
},
{
"number": "001936",
"classCode": "NmdRequest",
"entityId": "8d54e5ad-c80d-4833-b5c3-36d47e35ca2c",
"initiatorId": "1de128f3-f8dd-42d9-b10e-304c14c5a23d",
"initiatorFullName": "Адмиралов Виталий Николаевич",
"routeStageId": "00000000-0001-0000-0000-000000000000",
"sortingStageNumber": "104758",
"targetDate": null,
"orgBusinessProcessExtId": "84bbf9f7-38e6-4c4b-95b4-258e19c3012a",
"organizationId": null,
"status": "Active",
"isQuarterlyPlanRequest": false
}
],
"total": 2
}
}
Получение списка записей реестра запросов с поиском, сортировкой и пагинацией.
- Input: Search
- Output: Page[RequestRegistryRecord]
| Команда | Путь |
|---|---|
| sedRequestRegistry_listRequestRegistryRecords | HTTP POST "/v1/request-registry/list" |
Объекты сервиса sed-request-registry
RequestRegistryRecord
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| number | string | да | Номер запроса |
| classCode | string | да | Код сущности запроса в модели данных |
| entityId | string | да | ID сущности запроса в модели данных |
| initiatorId | uuid | да | ID сотрудника - инициатора изменений |
| initiatorFullName | string | да | ФИО сотрудника - инициатора изменений |
| routeStageId | uuid | да | ID стадии маршрута |
| sortingStageNumber | BigInt | да | Специальное число для сортировки стадий маршрута (в том числе не имеющих номера). Подчиняется контракту: если стадия А предшествует в маршруте стадии Б, то sortingStageNumber стадии А меньше, чем sortingStageNumber стадии Б. |
| targetDate | timestamp | нет | Нормативный срок стадии |
| orgBusinessProcessExtId | uuid | нет | ID орг бизнес-процесса из ЦНМД, к которому относится документ |
| organizationId | uuid | нет | Организация-владелец НМД |
| status | string | да | Статус запроса |
| isQuarterlyPlanRequest | boolean | да | Признак того, что данный запрос является запросом планирования КТ-202 |
sed-rest-api-adapter
Сервис адаптер команд из седа в REST HTTP запросы
Локальный запуск сервиса sed-rest-api-adapter
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- Kafka по адресу localhost:9092
- Consul по адресу localhost:8500
- Адрес Kafka будет указан в application.conf
Запуск из консоли с помощью SBT
sbt boot/run
Список переменных окружения сервиса sed-rest-api-adapter
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| SED_REST_API_ADAPTER_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| SED_REST_API_ADAPTER_HTTP_PORT | int | нет | 8024 | Порт, на котором слушает HTTP-сервер |
| SED_REST_API_ADAPTER_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| SED_REST_API_ADAPTER_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| SED_REST_API_ADAPTER_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| SED_REST_API_ADAPTER_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| SED_REST_API_ADAPTER_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| SED_REST_API_ADAPTER_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| SED_REST_API_ADAPTER_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| SED_REST_API_ADAPTER_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к хранилищу сертификатов. |
| SED_REST_API_ADAPTER_KAFKA_AUTH_MODE | string | нет | "static" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_REST_API_ADAPTER_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]. Переменная соответствует полю authConfig из KafkaAuthSettings. |
| SED_REST_API_ADAPTER_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| SED_REST_API_ADAPTER_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| SED_REST_API_ADAPTER_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| SED_REST_API_ADAPTER_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| SED_REST_API_ADAPTER_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| SED_REST_API_ADAPTER_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| SED_REST_API_ADAPTER_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| SED_REST_API_ADAPTER_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| SED_REST_API_ADAPTER_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| SED_REST_API_ADAPTER_DISCOVERABLE_ID | string | нет | "another_sed_rest_api_adapter_instance" | ID сервиса в ServiceDiscovery |
| SED_REST_API_ADAPTER_DISCOVERABLE_NAME | string | нет | "sedRestApiAdapter" | Имя сервиса в ServiceDiscovery |
| SED_REST_API_ADAPTER_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| SED_REST_API_ADAPTER_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| SED_REST_API_ADAPTER_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| SED_REST_API_ADAPTER_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| SED_REST_API_ADAPTER_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| SED_REST_API_ADAPTER_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| SED_REST_API_ADAPTER_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| SED_REST_API_ADAPTER_AKKA_HTTP_SERVER_REQUEST_TIMEOUT | duration string | нет | 60 seconds | Время ожидания ответа исходящего HTTP-запроса |
| SED_REST_API_ADAPTER_INTERNALCMD_ALLOW | bool | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| SED_REST_API_ADAPTER_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| SED_REST_API_ADAPTER_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| SED_REST_API_ADAPTER_APIGATEWAY_URL | string | нет | "http://localhost:8080" | Адрес ApiGateway |
| SED_REST_API_ADAPTER_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| SED_REST_API_ADAPTER_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| SED_REST_API_ADAPTER_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| SED_REST_API_ADAPTER_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| SED_REST_API_ADAPTER_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| SED_REST_API_ADAPTER_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| SED_REST_API_ADAPTER_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| SED_REST_API_ADAPTER_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| SED_REST_API_ADAPTER_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| SED_REST_API_ADAPTER_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| SED_REST_API_ADAPTER_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| SED_REST_API_ADAPTER_DZO_LIST_PATH | string | нет | AddDocsDZObyParentUNID | Относительный путь для получения IDs до |
| SED_REST_API_ADAPTER_EXPORT_PATH_PREFIX | string | нет | export | Префикс пути legacy экспорта |
| SED_REST_API_ADAPTER_BUSINESS_PROCESS_LIST_PATH | string | нет | KT001 | Префикс пути legacy экспорта |
| SED_REST_API_ADAPTER_PLAN_LIST_PATH | string | нет | KT202 | Префикс пути legacy экспорта |
| SED_REST_API_ADAPTER_NMD_LIST_PATH | string | нет | NMDList | Префикс пути legacy экспорта |
| SED_REST_API_ADAPTER_DOC_FIELDS_PATH | string | нет | DocFields | Префикс пути legacy экспорта |
| SED_REST_API_ADAPTER_DOWNLOAD_PATH | string | нет | download | ОТносительный путь для скачивания |
| SED_REST_API_ADAPTER_LOG_FORMAT | string | нет | CEF | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| SED_REST_API_ADAPTER_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| SED_REST_API_ADAPTER_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| SED_REST_API_ADAPTER_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| SED_REST_API_ADAPTER_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| SED_REST_API_ADAPTER_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| SED_REST_API_ADAPTER_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| SED_REST_API_ADAPTER_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| SED_REST_API_ADAPTER_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| SED_REST_API_ADAPTER_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
| SED_REST_API_ADAPTER_FS_URI | url string | нет | "http://localhost:9000" | Адрес для подключения к хранилищу файлов по S3-API |
| SED_REST_API_ADAPTER_FS_ACCESS_KEY_ID | string | нет | Ключ доступа для хранилища файлов (aka логин) | |
| SED_REST_API_ADAPTER_FS_SECRET_ACCESS_KEY | string | нет | Секретный ключ для хранилища файлов (aka пароль) | |
| SED_REST_API_ADAPTER_FS_UPLOAD_PARALLELISM | int | нет | 4 | Параллелизм для загрузки файлов |
| SED_REST_API_ADAPTER_FS_AUTH_MODE | string | нет | static | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_REST_API_ADAPTER_FS_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации, если AuthMode = mapping (пример: [{"bucketName": temp", "credentials": {"accessKeyId": "minioadmin", "secretAccessKey": "minioadmin"}}]) |
| SED_REST_API_ADAPTER_FS_CACHE_SIZE | int | нет | 1 | Максимальный размер кеша клиентов для хранилища файлов (количество активных соединений). |
| SED_REST_API_ADAPTER_FS_CACHE_TTL | duration string | нет | Время жизни клиента в кеше | |
| SED_REST_API_ADAPTER_TEMP_BUCKET | string | нет | temp | Бакет в файловом хранилище для временных файлов, загружаемых на apigateway |
| SED_REST_API_ADAPTER_JWT_SIGNATURE | string | да | JWT сигнатура apigateway | |
| SED_REST_API_ADAPTER_JWT_SIGNATURE | string | да | JWT сигнатура apigateway | |
| SED_REST_API_ADAPTER_MAX_PAGE_SIZE | int | нет | 500 | Максимальный размер одной страницы при постраничном получении или отправке данных |
| SED_REST_API_ADAPTER_REQUEST_PARALLELISM | int | нет | 16 | Максимальное число одновременно отправляемых запросов во внешние сервисы |
| SED_REST_API_ADAPTER_RETRY_COUNT | int | нет | 5 | Максимальное число ретраев на запросы во внешние сервисы |
| SED_REST_API_ADAPTER_RETRY_DELAY | duration string | нет | 2 seconds | Задержка между ретраями запросов во внешние сервисы |
Список запросов сервиса sed-rest-api-adapter
ListPlanPublishLegacy
На выходе полный список Плановых Записей к публикации (Legacy-представление) из сервиса СЭД
[
{
"@unid": "A2519D0A29FD488082A7500F4D320094",
"LastModifiedDate": "2022-11-13T11:11:54Z"
}
]
- Input: -
- Output: List[[LegacyDocumentListItem]]
Адаптация команды sed_listPlanPublishLegacy (Получение полного списка Плановых Записей к публикации с датой последнего изменения)
- Request: GET /v1/external-api/export/KT202
ListNMDPublishLegacy
На выходе полный список НМД к публикации (Legacy-представление) из сервиса СЭД
[
{
"@unid": "A2519D0A29FD488082A7500F4D320094",
"LastModifiedDate": "2022-11-13T11:11:54Z"
}
]
- Input: -
- Output: List[[LegacyDocumentListItem]]
Адаптация команды sed_listNmdPublishLegacy (Получение полного списка НМД к публикации с датой последнего изменения)
- Request: GET /v1/external-api/export/NMDList
ListBusinessProcessPublishLegacy
На выходе полный список Бизнесс процессов к публикации (Legacy-представление) из сервиса СЭД
[
{
"@unid": "A2519D0A29FD488082A7500F4D320094",
"LastModifiedDate": "2022-11-13T11:11:54Z"
}
]
- Input: -
- Output: List[[LegacyDocumentListItem]]
Адаптация команды sed_listBusinessProcessPublishLegacy (Получение полного списка Бизнесс процессов к публикации с датой последнего изменения)
- Request: GET /v1/external-api/export/KT001
ListReviewPublishLegacy
На выходе полный список обратных связей к публикации (Legacy-представление) из сервиса СЭД
[
{
"@unid": "A2519D0A29FD488082A7500F4D320094",
"LastModifiedDate": "2022-11-13T11:11:54Z"
}
]
- Input: -
- Output: List[[LegacyDocumentListItem]]
Адаптация команды sed_listReviewPublishLegacy (Получение полного списка обратных связей к публикации с датой последнего изменения)
- Request: GET /v1/external-api/export/ReviewList
ListJobDescriptionPublishLegacy
На выходе полный список должностных инструкций к публикации (Legacy-представление) из сервиса СЭД
[
{
"@unid": "A2519D0A29FD488082A7500F4D320094",
"StageStartTimeDP": "2022-11-13T11:11:54Z",
"URLFiles": "http://localhost:8024/v1/external-api/export/download/datamodel/JobDescription/b10082c5-7b00-4380-985f-d0979c74bd22?=Должностная инструкция: Руководитель направления по геологии и разработке.docx"
}
]
- Input: -
- Output: List[[LegacyDocumentListItem]]
Адаптация команды sed_listJobDescriptionPublishLegacy (Получение полного списка должностных инструкций к публикации с датой последнего изменения)
- Request: GET /v1/external-api/export/JobDescriptionList
GetDocField
На выходе Legacy-представление атрибутов документа
{
"ParentProcess": "02.16.05 Анализ производственной деятельности ПБЕ КД",
"PersonName": "Кадагидзе Л Д",
"PersonPos": "Директор Коммерческой дирекции",
"ProcessType": "BusinessProcessType_1",
"CompanyName": "ПАО Газпром нефть",
"NMDLabel": "Ш-06.01.02.01.02.05-11",
"OwnerCatalogRUS": "Абузяров Ринат Маратович",
"OwnerCatalogPos": "Механик",
"OwnerCatalogCompany": "ООО \"Газпромнефть-Приразломное\"",
"AuthorNameRUS": "Аристова Татьяна Станиславовна",
"AuthorPositionRUS": "Руководитель направления",
"CoAuthorNameRUS": "Мартынова Наталья Борисовна",
"CoAuthorPositionRUS": "Начальник отдела",
"Version": "1.0",
"RazrAdapt": "Адаптация",
"DATEREG": "",
"DATESTART": "",
"RDATERD": "",
"DateEnd": "",
"DATECANCEL": "",
"Priority": "1",
"Status": "",
"ISSCID": "A2519D0A29FD488082A7500F4D320094",
"CompanyNameLocal": "",
"NMDType": "Каталог",
"Type": "common",
"IsTemplate": "",
"AddDocTitle": "Сводная ведомость материальных ресурсов и оборудования поставки Заказчика",
"IsPlan": "Да",
"DateExec": "",
"DeveloperNameRus": "Уханова Марина Николаевна",
"DeveloperPos": "Главный специалист",
"AUTHORNAME": "Аристова Татьяна Станиславовна",
"AuthorPos": "Руководитель направления",
"SimpleDuplication": "",
"MethConfirmPersons": [],
"MethConfirmPersonsPos": [],
"ApprovalDocumentLink": "",
"@modified": "2022-10-18T11:17:25Z",
"ParentProcessId": "82F30CD2B8B64BACBCAB342229B4448C",
"BProcessLevel": "",
"DateConfirm": "",
"ApplicationOrderLink": "",
"STAGESCREENSETNAMEDP": "BProcess",
"OwnerInformationRUS": "Даутов Максим Маратович",
"OwnerInformationPos": "Техник",
"OwnerInformationCompany": "ООО \"Газпромнефть-Ямал\"",
"Quarantine": "No",
"ParentREF": "82F30CD2B8B64BACBCAB342229B4448C"
}
- Input: UUID
- Output: [LegacyDocument]
Адаптация команд sed_getPlanPublishLegacy, sed_getNmdPublishLegacy и sed_getBusinessProcessPublishLegacy
- Request: GET /v1/external-api/export/DocFields/:UUID
GetReview
На выходе Legacy-представление обратной связи
{
"unid": "b4d38704-9b5a-47c5-9fe2-4080855e6579",
"reviewId": "97a1119f-0a87-42a7-a432-aaaa0447829e",
"date": 1698392976977,
"answer": "На основании обращения создана Плановая запись СК-08.30.02 Порядок протокольного обеспечения Компании",
"planId": "8a703eee-a78f-4647-8215-35087364d813"
}
- Input: UUID
Output: [LegacyReview]
Request: GET /v1/external-api/export/Review/:UUID
ListDzoLegacy
На входе Id объекта
"A2519D0A29FD488082A7611F4D320095"
На выходе список тиражей к публикации (Legacy-представление) из сервиса СЭД
[
{
"@unid": "A2519D0A29FD488082A7500F4D320094"
}
]
- Input: UUID
- Output: List[[LegacyDzoItem]]
Адаптация команд sed_listNMDPublishLegacyDzo, sed_listPlanPublishLegacyDzo и sed_listBusinessProcessPublishLegacyDzo
- Request: GET /v1/external-api/export/AddDocsDZObyParentUNID с параметром docunid
CreateNumber
На входе данные для создания номера NumberCreateDTO
- Input: NumberCreateDTO
- Output: String
Адаптация команд gpnCounter_createNumber
- Request: POST /v1/counter-api/number/create
AcquireNumber
На входе данные для создания номера NumberAcquireDTO
- Input: NumberAcquireDTO
- Output: Boolean
Адаптация команды AcquireNumber
- Request: POST /v1/external-api/counter/number/acquire
UpsertNmdStatusRecord
На входе данные для создания записи о нмд в сервисе Aris NmdStatusDTO
- Input: NmdStatusDTO
- Output: Пустое тело ответа
Адаптация команды sedAris_upsertNmdStatusRecord
- Request: POST /v1/external-api/aris/upsert-nmd-status-record
Upload
На входе файл
- Input: --form 'file=@"/path/to/file"'
- Output: EDBResponse При успехе в message кладётся fileId файла
Адаптация команды sedAris_upsertNmdStatusRecord
- Request: POST /api/v1/aris/upload
ImportModel
Передача метаданных модели
- Input: ArisModelCreateInputDTO
- Output: Пустое тело ответа
Адаптация команды sedAris_createArisModel
- Request: POST /api/v1/aris/model
DeleteModel
Удаление модели
- Input: UUID
- Output: Пустое тело ответа
Адаптация команды sedAris_deleteArisModel
- Request: DELETE /api/v1/aris/models/:UUID
ImportFolders
Передача полной иерархической структуры папок из папки ARIS.
- Input: ImportFolderDTO
- Output: Пустое тело ответа
Адаптация команды sedAris_ImportFolders
- Request: PUT /api/v1/aris/folders
CreateFolder
Создание новой папки в СЭД ЦНМД при создании пользователем новой папки в ARIS.
- Input: CreateFolderDTO
- Output: Пустое тело ответа
Адаптация команды sedAris_createFolder
- Request: POST /api/v1/aris/folder
DeleteFolder
Удаление папки в СЭД ЦНМД при удалении пользователем папки в ARIS.
- Input: UUID (ID папки в ARIS)
- Output: Пустое тело ответа
Адаптация команды sedAris_DeleteFolder
- Request: DELETE /api/v1/aris/folders/:UUID
UpdateFolder
Изменение имени папки или ее родителя в СЭД ЦНМД при свершении такого события в ARIS.
- Input: UpdateFolderInputDTO
- Output: Пустое тело ответа
Адаптация команды sedAris_updateFolder
- Request: PUT /api/v1/aris/folders/:UUID
ListNmdStatus
Список статусов нмд с моделями.
- Input: String (дата и время публикации в формате 'ГГГГ-ММ-ДД')
- Output: NmdStatusDTO[]
Адаптация команды sedAris_listNmd
- Request: GET /api/v1/aris/nmd-list/:date
ListByEntityType
Список meta данных сущностей из модели данных по EntityType.
- Input: EntityType
- Output: EntityObjectMeta из DataModel
Адаптация команды listObjectsMeta
- Request: GET /v1/external-api/export/:entityType
GetByEntityType
Список статусов нмд с моделями.
- Input: String/UUID (EntityType/ID)
- Output: EntityObject из DataModel
Адаптация команды internalGetObject
- Request: GET /v1/external-api/export/:entityType/:id
Модели сервиса
EDBResponse
| Аттрибут | Тип | Описание |
|---|---|---|
| timestamp | String | Время ответа |
| success | Boolean | Признак успешности |
| error | String | Название ошибки |
| message | String | Описание ошибка |
| addComments | String | Дополнительная информация |
sed
Сервис бизнес-логики проекта СЭД
Сервис принимает команды и хранит состояние в PostgreSQL.
Команды могут приходить как по HTTP, так и через Kafka в топик sed_commands.
Сервис разбит на несколько модулей, в виде sbt проектов:
domain, в котором содержатся все доменные модели и их различные представления.commands, в котором содержатся все команды, их описание и обработчики: kafka-handlers & http-routes.store, содержит сервисы для сохранения и чтения их разных хранилищ доменных моделей.service, содержит сервисы бизнес логии, которые определяют правила взаимодействия компонентов между собой.boot, содержит зависимости и описание для сборки и запуска сервиса.
Информация по добавлению команд можно прочитать в описании шаблона
Локальный запуск сервиса sed
При запуске сервиса ожидается, что уже развернута необходимая инфраструктура:
- PostgreSQL база по адресу
localhost:5432/sed - Kafka по адресу
localhost:9092 - Consul по адресу
localhost:8500 - Адрес Kafka будет указан в
application.conf - Добавлены необходимые переменные окружения:
- SED_DB_HOST
- SED_DB_PORT
- SED_DB_NAME
- SED_DB_USER
- SED_DB_PASSWORD
Запуск из консоли с помощью SBT
SED_DB_HOST=localhost SED_DB_PORT=5432 SED_DB_NAME=sed SED_DB_USER=postgres SED_DB_PASSWORD=12345 sbt boot/run
Список переменных окружения сервиса sed
Все доступные переменные окружения для настройки сервиса.
| Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
|---|---|---|---|---|
| SED_HTTP_HOST | string | нет | "0.0.0.0" | Хост, на котором слушает HTTP-сервер |
| SED_HTTP_PORT | int | нет | 8020 | Порт, на котором слушает HTTP-сервер |
| SED_APPLICATION_URL | string | да | "localhost:4200" | Адрес фронтенд части Sed |
| SED_RULE_MANAGEMENT_URL | string | нет | "/administration/rule-management" | Ссылка на раздел "Управление загрузкой", используется для отправки уведомления. |
| SED_KAFKA_SERVERS | string | да | "localhost:9092" | Адрес Kafka |
| SED_KAFKA_TOPIC | string | нет | "sed_commands" | Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery. |
| SED_NOTIFICATION_PERSONAL_PAGE_TOPIC | string | нет | "personal-page" | Название кафка-топика уведомлений персональной страницы, для конфигурирования сервиса уведомлений миграцией |
| SED_NOTIFICATION_EMAIL_TOPIC | string | нет | "email" | Название кафка-топика уведомлений на почту, для конфигурирования сервиса уведомлений миграцией |
| SED_KAFKA_CONSUMER_GROUP | string | нет | "sed_consumer_group" | Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске. |
| SED_KAFKA_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика команд. |
| SED_KAFKA_CONSUMER_RESTART_MIN_BACKOFF | duration string | нет | 1 second | Изначальная задержка до рестарта консьюмера после падения (увеличивается в 2 раза после каждого рестарта) |
| SED_KAFKA_CONSUMER_RESTART_MAX_BACKOFF | duration string | нет | 30 seconds | Максимальное задержка до рестарта консьюмера после падения |
| SED_KAFKA_CONSUMER_RESTART_RANDOM_FACTOR | double | нет | 0.2 | Рандомный фактор для вычисления задержки перед следующим рестратом консьюмера (При значении 0.2 задержка может быть до 20% больше, чем при 0) |
| SED_KAFKA_CONSUMER_RESTART_MAX_RESTARTS | int | нет | 5 | Максимальное число рестартов консьюмера после падения (в пределах SED_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN) |
| SED_KAFKA_CONSUMER_RESTART_MAX_RESTARTS_WITHIN | duration string | нет | 5 minutes | Временной отрезок, в который SED_KAFKA_CONSUMER_RESTART_MAX_RESTARTS ограничивает число рестартов |
| SED_USER_EVENTS_PARTITIONS | int | нет | 10 | Число читаемых партиций из кафка-топика userEvents. |
| SED_KAFKA_USER_EVENTS_TOPIC | string | нет | "userEvents" | Название кафка-топика для чтения сообщений об изменении пользовательских групп, которые пишет сервис Mon. |
| SED_KAFKA_COMMANDEVENT_TOPIC | string | да | "commandevents" | Название кафка-топика для отправки сообщений со статусами выполняемых команд. ОБЯЗАТЕЛЬНО должно соответствовать названию этого топика в сервисе статуса команд. |
| SED_KAFKA_AUTH_USER | string | нет | "" | Название учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). Если название не указано, то настройки авторизации не будут применены. |
| SED_KAFKA_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Kafka(в случае аутентификации в kafka с помощью пароля). |
| SED_KAFKA_AUTH_PRINCIPAL | string | нет | "" | Principal учетной записи Kafka в Kerberos(в случае аутентификации в kafka через Kerberos). |
| SED_KAFKA_AUTH_KEYTAB_PATH | string | нет | "" | Путь до keytab-файла(в случае аутентификации в kafka через Kerberos). |
| SED_KAFKA_AUTH_TRUSTSTORE_LOCATION | string | нет | "" | Путь до хранилища сертификатов (Java key store). Если путь не указан, то сертификат применятся не будет. |
| SED_KAFKA_AUTH_TRUSTSTORE_PASSWORD | string | нет | "" | Пароль к харнилищу сертификатов. |
| SED_KAFKA_AUTH_MODE | string | нет | "static" | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_KAFKA_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации: если AuthMode = mapping, то необходим JSON с List[KafkaAuthConfig]. Переменная соответствует полю authConfig из KafkaAuthSettings. |
| SED_KAFKA_AUTH_CACHE_SIZE | int | нет | Максимальный размер кеша для Kafka producer (количество активных соединений). | |
| SED_KAFKA_AUTH_CACHE_TTL | duration string | нет | Время жизни Kafka producer в кеше. | |
| SED_KAFKA_CONNECTION_CHECK_TEST_MESSAGES_INTERVAL | duration string | нет | 4 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Интервал отправки тестовых сообщений кафки в топик connectionCheck.testMessagesTopicName. Тестовые сообщения (null, service producer test) отправляются регулярно с этим интервалом. |
| SED_KAFKA_CONNECTION_CHECK_INTERVAL | duration string | нет | 60 seconds | Применяется только для producer-ов со способом аутентификации kerberos. Интервал проверки того, сколько тестовых сообщений было отправлено за данный период. Если количество сообщений за этот период равно количеству сообщений за прошлый период, то начинается отсчет периода без сообщений. |
| SED_KAFKA_CONNECTION_CHECK_FAILED_AFTER_INTERVAL | duration string | нет | 5 minutes | Применяется только для producer-ов со способом аутентификации kerberos. Максимальная продолжительность периода без успешно отправленных тестовых сообщений. По ее достижении сервис будет объявлен больным. |
| SED_CONSUL_ADDR | url string | нет | "http://localhost:8500" | Адрес Сonsul. |
| SED_CONSUL_AUTH_USER | string | нет | "" | Название учетной записи Сonsul. Если название не указано, то настройки авторизации не будут применены. |
| SED_CONSUL_AUTH_PASSWORD | string | нет | "" | Пароль учетной записи Сonsul. |
| SED_TRACE_DURATION | boolean | нет | false | Признак необходимости трассировки выполнения команд |
| SED_DISCOVERABLE_ID | string | нет | "another_SED _service_instance" | ID сервиса в ServiceDiscovery |
| SED_DISCOVERABLE_NAME | string | нет | "sed" | Имя сервиса в ServiceDiscovery |
| SED_DISCOVERABLE_HOST | string | да | "localhost" | Хост, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. Указанный адрес должен быть виден другим сервисам. Пример: имя kubernetes/docker_swarm service |
| SED_DISCOVERABLE_PORT | int | нет | Порт, публикуемый в ServiceDiscovery. По нему на данный сервис будут обращаться другие через HTTP. По умолчанию указывается порт, который слушает HTTP-сервер. | |
| SED_DISCOVERABLE_LIVETIME | duration string | нет | 2 minutes | Период после последней отправки health check, в течение которого ServiceDiscovery считает данный сервис живым. |
| SED_DISCOVERABLE_HEALTHPASS | string | нет | 1 minute | Периодичность отправки health check в ServiceDiscovery |
| SED_AKKA_HTTP_CLIENT_MAXCON | int | нет | 512 | Максимальное число одновременных исходящих HTTP-соединений |
| SED_AKKA_HTTP_CLIENT_MAXREQ | int | нет | 1024 | Максимальное число одновременных исходящих HTTP-запросов |
| SED_AKKA_HTTP_SERVER_MAXCON | int | нет | 1024 | Максимальное число одновременных входящих HTTP-соединений |
| SED_INTERNALCMD_ALLOW | boolean | нет | false | Можно ли сервису отправлять внутрисистемные команды |
| SED_HEALTH_TIMEOUT | duration string | нет | 5 seconds | Максимальное время ожидания ответа health check |
| SED_SENDERLIB_COMMANDS_CACHE_UPDATEPERIOD | duration string | нет | 10 minutes | Время кэширования данных по командам из CommandDiscovery |
| SED_SENDERLIB_SERVICES_CACHE_UPDATEPERIOD | duration string | нет | 30 seconds | Время кэширования данных по сервисам из ServiceDiscovery |
| SED_DB_HOST | string | да | Хост БД | |
| SED_DB_PORT | int | да | Порт БД | |
| SED_DB_NAME | string | да | Имя базы в БД | |
| SED_DB_URL | jdbc url string | нет | JDBC-url для соединения с БД. По умолчанию собирается из других обязательных переменных. Можно указать только его, если не хочется отдельно указывать хост/порт/имя базы. | |
| SED_DB_USER | string | да | Пользователь БД | |
| SED_DB_PASSWORD | string | да | Пароль пользователя БД | |
| SED_JWT_SIGNATURE | string | да | jwt сигнатура apigateway | |
| SED_FS_URI | url string | нет | "http://localhost:9000" | Адрес для подключения к хранилищу файлов по S3-API |
| SED_FS_ACCESS_KEY_ID | string | нет | "" | Ключ доступа для хранилища файлов (aka логин) |
| SED_FS_SECRET_ACCESS_KEY | string | нет | "" | Секретный ключ для хранилища файлов (aka пароль) |
| SED_FS_UPLOAD_PARALLELISM | int | нет | 4 | Параллелизм для загрузки файлов |
| SED_FS_AUTH_MODE | string | нет | static | Режим аутентификации: static - одна учетная запись на все запросы, mapping - учетная запись зависит от запроса |
| SED_FS_AUTH_CONFIG | string | нет | "" | Настройки для аутентификации, если AuthMode = mapping (необходим доступ к бакетам "temp" и "datamodel") |
| SED_FS_CACHE_SIZE | int | нет | Максимальный размер кеша клиентов для хранилища файлов (количество активных соединений). | |
| SED_FS_CACHE_TTL | duration string | нет | Время жизни клиента в кеше | |
| SED_TEMP_BUCKET | string | нет | temp | Бакет в файловом хранилище для временных файлов, загружаемых на gateway |
| APIGATEWAY_URL | string | нет | "http://localhost:8080" | Адресс ApiGateway |
| SED_LEGACY_URL | string | нет | "http://localhost:8024" | Адрес legacy api |
| SED_LEGACY_DOWNLOAD_PATH | string | нет | "/v1/legacy-api/download/" | Путь для скачивания файлов legacy api |
| SED_LOG_LEVEL | string | нет | INFO | Общий уровень логирования в сервисе |
| SED_LOG_LEVEL_AKKA | string | нет | INFO | Уровень логирования для akka |
| SED_LOG_LEVEL_LIQUIBASE | string | нет | INFO | Уровень логирования для liquibase (миграции) |
| SED_LOG_LEVEL_APPLICATION | string | нет | DEBUG | Уровень логирования для application |
| SED_LOG_LEVEL_SLICK_STATEMENT | string | нет | WARN | Уровень логирования запросов, отправляемых slick в БД |
| SED_LOG_LEVEL_SLICK_BENCHMARK | string | нет | OFF | Уровень логирование бенчмарков выполнения запросов slick |
| SED_LOG_LEVEL_KAFKA_PRODUCER | string | нет | WARN | Уровень логирования конфига kafka-producer |
| SED_LOG_LEVEL_KAFKA_CONSUMER | string | нет | WARN | Уровень логирования конфига kafka-consumer |
| SED_LOG_LEVEL_AKKAHTTPSENDER | string | нет | TRACE | Уровень логирования для отправки команд через HTTP. На уровне INFO логируется трассировка, если она включена |
| SED_LOG_LEVEL_KAFKASENDER | string | нет | TRACE | Уровень логирования для отправки команд через Kafka. На уровне INFO логируется трассировка, если она включена |
| SED_LOG_LEVEL_COMMANDSTATUSCLI | string | нет | TRACE | Уровень логирования для проверки состояний команд в сервисе статусов |
| SED_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| SED_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| SED_LOG_LEVEL_KAFKA_SELECTOR | string | нет | INFO | Уровень логирования селектора клиента кафки |
| SED_LOG_LEVEL_KAFKA_NETWORK_CLIENT | string | нет | INFO | Уровень логирования сети клиента кафки |
| SED_LOG_LEVEL_KAFKA_STREAMING_PRODUCER | string | нет | INFO | Уровень логирования продьюсера клиента кафки |
| LOGGING_HOSTNAME | string | нет | SERVER | Имя хоста для логирования в формате CEF |
| LOGGING_EXTERNAL_ADDRESS | string | нет | localhost | Внешний адрес для логирования в формате CEF |
| SED_SAFE_PAGE_SIZE | int | нет | 500 | Число сущностей, помещающихся в одно сообщение kafka |
| SED_LOG_FORMAT | string | нет | CEF | Формат вывода логов (если переменная содержит CEF, применяет формат CEF, иначе дефолтный паттерн) |
| SED_SYSLOG_ENABLE | boolean | нет | false | Включить дополнительный вывод в syslog |
| SED_SYSLOG_PROTOCOL | string | нет | TCP | Протокол (TCP или UDP) |
| SED_SYSLOG_SSL_ENABLE | boolean | нет | false | Включить SSL |
| SED_SYSLOG_HOST | string | нет | Хост syslog сервера | |
| SED_SYSLOG_PORT | string | нет | Порт syslog сервера | |
| SED_SYSLOG_RECONNECTION_DELAY | int | нет | 10000 | Задержка между попытками соединиться с сервером syslog, если было неудачное соединение |
| SED_SYSLOG_TRUSTSTORE_LOCATION | string | нет | Путь к truststore | |
| SED_SYSLOG_TRUSTSTORE_PASSWORD | string | нет | Пароль к truststore | |
| SED_LOG_FILE_ENABLE | boolean | нет | false | Включить вывод в файл |
| SED_KAFKA_POLLING_TIMEOUT | duration string | нет | 15 seconds | Таймаут на пуллинг kafka-команд |
| SED_ATTRIBUTE_PROVIDER_EVAL_CACHE_MAX_SIZE | long | нет | Максимальное количество элементов в кеше , при превышении которого элементы начнут удаляться (LRU). None - размер кеша не ограничен. (Кэш провайдера на атрибуты для вычисление) | |
| SED_ATTRIBUTE_PROVIDER_EVAL_CACHE_TTL | duration string | нет | Максимальное время жизни элемента. None - время жизни элемента равно времени жизни всего кеша. (Кэш провайдера на атрибуты для вычисление) | |
| SED_ATTRIBUTE_PROVIDER_EVAL_CACHE_WITH_SCHEDULER | boolean | нет | false | Флаг, определяющий будет ли в кэше выделен отдельный поток, отвечающий за удаления элементов с истекшим ttl, или такие элементы будут удаляться после записи чего-либо в кэш (Кэш провайдера на атрибуты для вычисление) |
| SED_ATTRIBUTE_PROVIDER_PROCESS_CACHE_MAX_SIZE | long | нет | Максимальное количество элементов в кеше, при превышении которого элементы начнут удаляться (LRU). None - размер кеша не ограничен. (Кэш провайдера на атрибуты для процессинга) | |
| SED_ATTRIBUTE_PROVIDER_PROCESS_CACHE_TTL | duration string | нет | Максимальное время жизни элемента. None - время жизни элемента равно времени жизни всего кеша. (Кэш провайдера на атрибуты для процессинга) | |
| SED_ATTRIBUTE_PROVIDER_PROCESS_CACHE_WITH_SCHEDULER | boolean | нет | false | Флаг, определяющий будет ли в кэше выделен отдельный поток, отвечающий за удаления элементов с истекшим ttl, или такие элементы будут удаляться после записи чего-либо в кэш (Кэш провайдера на атрибуты для процессинга) |
| SED_ARIS_CLIENT_FILL_TEMPLATE_DELAY | duration string | нет | 5 seconds | Delay между запросом результата fill template сервиса sedAris |
| SED_ARIS_CLIENT_FILL_TEMPLATE_RETRY_COUNT | int | нет | 20 | Количество запросов результата запроса fill template сервиса sedAris |
| SED_ARIS_CLIENT_MERGE_DOCUMENT_DELAY | duration string | нет | 5 seconds | Delay между запросом результата merge document сервиса sedAris |
| SED_ARIS_CLIENT_MERGE_DOCUMENT_RETRY_COUNT | int | нет | 20 | Количество запросов результата запроса merge document сервиса sedAris |
| SED_PAO_GPN_TITLE | string | нет | "ПАО Газпром нефть" | Полное наименование организации "ПАО Газпром нефть" |
Список команд сервиса sed
В описании команд используется путь/route для отправки команды в сам сервис, а не в ApiGateway. В качестве Input-а для команд, сервис всегда ожидает CommandRequest (как и любой другой сервис, принимающий команды), так что в описании команды указано лишь описание поля payload для CommandRequest.
В сервисе реализованны следующие команды:
- Создание Запроса Согласование НМД
- Получение Запроса Согласование НМД
- Получение списка Запросов Согласование НМД
- Обновление Запросов Согласование НМД
- Удаление Запросов Согласование НМД
- Создание НМД
- Создание внепланового НМД
- Получение НМД
- Получение списка НМД
- Обновление НМД
- Удаление НМД
- Создание Запроса на изменение КТ-202
- Получение Запроса на изменение КТ-202
- Получение списка Запросов на изменение КТ-202
- Обновление Запроса на изменение КТ-202
- Удаление Запроса на изменение КТ-202
- Создание Запроса на изменение КТ-001
- Получение Запроса на изменение КТ-001
- Получение списка Запросов на изменение КТ-001
- Обновление Запроса на изменение КТ-001
- Удаление Запроса на изменение КТ-001
- Создание Запроса на внутреннее согласование
- Получение Запроса на внутреннее согласование
- Получение списка Запросов на внутреннее согласование
- Обновление Запроса на внутреннее согласование
- Удаление Запроса на внутреннее согласование
- Перенос результатов внутреннего согласования
- Удаление результатов внутреннего согласования
- Создание нового бизнес процесса
- Создание сущности существующего бизнес процесса
- Получение бизнес процесса
- Получение списка бизнес процессов
- Обновить бизнес процесс
- Удалить бизнес процесс
- Получение списка кодов и названий бизнес процессов
- Преобразовать бизнес процесс в группу бизнес процессов
- Преобразовать группу бизнес процессов в бизнес процесс
- Создание нового бизнес процесса участника
- Создание сущности существующего бизнес процесса участника
- Получение бизнес процесса участника
- Получение списка бизнес процессов участника
- Обновить бизнес процесс участника
- Удалить бизнес процесс участника
- Получение Бизнес процесса к публикации (Legacy)
- Получение списка Бизнес процессов к публикации (Legacy)
- Создание Плановой записи на разработку нового ЦНМД
- Создание Плановой записи на действия с существующим НМД
- Создание Плановой записи СЭД для изменения существующий в ЦНМД Плановой записи
- Получение Плановой записи
- Получение списка Плановых записей
- Обновление Плановой записи
Проверки перед созданием Плановой записи на действия с существующим НМД
Проверки перед созданием Плановой записи СЭД для изменения существующий в ЦНМД Плановой записи
- Получение Плановой Записи к публикации (Legacy)
- Получение списка Плановых Записей к публикации (Legacy)
- Создание Решения участника стадии
- Принудительное завершение визирования
- Обновление Решения участника стадии
- Удаление Решения участника стадии
- Получение Решения участника стадии
- Получение списка Решения участника стадии
- Проверка возможности голосования
- Обновление элемента Истории переходов
- Получение элемента Истории переходов
- Получение списка элементов Истории переходов
- Создание Доп. документа
- Получение Доп. документа
- Получение списка Доп. документов
- Обновление Доп. документа
- Удаление Доп. документа
- Создание участника НМД
- Получение участника НМД
- Получение списка участников НМД
- Обновление участника НМД
- Удаление участника НМД
- Создание участника Плановой записи
- Получение участника Плановой записи
- Получение списка участников Плановой записи
- Обновление участника Плановой записи
- Удаление участника Плановой записи
- Получение Запроса на Управление ДИ
- Получение списка Запросов Управление ДИ
- Обновление Запроса на Управление ДИ
- Удаление Запроса на Управление ДИ
- Создание Должностной инструкции
- Получение Должностной инструкции
- Получение Должностной инструкции(Внутренняя команда)
- Получение списка Должностных инструкций
- Обновление Должностной инструкции
- Удаление Должностной инструкции
- Получение списков предложений для стадии
- Получение списка предложений, в который можно добавлять предложения на стадии
Authorize
На входе параметры ресурса и список действий
{
"resourceId": "457d8058-4ff0-4823-9fba-2084eb516101",
"resourceType": "NmdRequest",
"actions": [
"ViewNmdRequest",
"EditNmdRequest"
]
}
На выходе список действий с результатами авторизации
{
"ViewNmdRequest": true,
"EditNmdRequest": false
}
Проверяет доступность действий для конкретного ресурса, указанных во входных параметрах.
Проксирующая команда для oberto_Authorize. Обогащает запрос данными из СЭД, необходимыми для авторизации
(кроме того, данные из DataModel могут извлекаться Oberto средствами AuthzForce).
- Input: AuthorizeDTO
- Output: Map[String, Boolean]
| Команда | Путь |
|---|---|
| sed_authorize | HTTP POST "/v1/user/authorize" |
CreateNmdRequest
На выходе ID Запроса Согласование НМД
"75b76f93-5ba0-4141-b0bc-e81e36c7e946"
Создание нового Запроса Согласование НМД с автоматическим заполнением обязательных атрибутов.
- Input: -
- Output: UUID Запроса Согласование НМД
| Команда | Путь |
|---|---|
| sed_createNmdRequest | Kafka Topic "sed_commands" |
GetNmdRequest
На входе ID Запроса Согласование НМД
"75b76f93-5ba0-4141-b0bc-e81e36c7e946"
На выходе атрибуты Запроса Согласование НМД
{
"id": "75b76f93-5ba0-4141-b0bc-e81e36c7e946",
"entityType": "NmdRequest",
"title": "NmdRequest 75b76f93-5ba0-4141-b0bc-e81e36c7e946",
"source": "sed",
"created": 1663317203410,
"modified": 1663336819339,
"version": 1,
"number": "000001",
"authorId": "9ec87a4b-c640-443d-9b11-d9e0d35c339b",
"authorEmployeeId": "1415516c-728b-4471-ae09-203248065812",
"authorContacts": null,
"initiatorEmployeeId": null,
"initiatorPhone": null,
"orgBusinessProcessExtIds": null,
"confirmDate": 1663317201435,
"issuanceDate": 1663317201435,
"changesDescription": null,
"minor": null,
"functionalExpertiseDays": null,
"functionalOwnerEmployeeIds": null,
"functionalMemberEmployeeIds": null,
"methodologistEmployeeIds": [
"b52c053e-37f5-4163-bd51-f874e8f63ef6"
],
"methodologistEmployeeIdsManual": [],
"additionalEmployeeIds": null,
"informedOrganizationIds": null,
"nmdIds": null,
"implementationPlanId": null,
"files": null,
"explanatoryNoteId": null,
"accompanyingFileIds": [],
"status": "Active",
"targetDate": 1663345619339,
"standartFgId": null
}
Получение Запроса Согласование НМД по идентификатору.
- Input: UUID Запроса Согласование НМД
- Output: NmdRequest
| Команда | Путь |
|---|---|
| sed_getNmdRequest | HTTP POST "/v1/nmd-request/get" |
ListNmdRequests
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "nmd.id",
"context": {
"nmd.id": "[f88087d7-e44a-4a7a-8418-0922c2477625, 1a4f4260-111c-44fa-91f3-4e861dc25d71]"
},
"sorting": {
"fieldName": "number",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждого из Запросов Согласование НМД
{
"items": [
{
"id": "5c962354-b4f3-4a46-809a-d402b42b26f4",
"entityType": "NmdRequest",
"title": "NmdRequest 5c962354-b4f3-4a46-809a-d402b42b26f4",
"source": "sed",
"created": 1663321828513,
"modified": 1663321828513,
"version": 1,
"number": "000002",
"authorId": "9ec87a4b-c640-443d-9b11-d9e0d35c339b",
"authorEmployeeId": "1415516c-728b-4471-ae09-203248065812",
"authorContacts": null,
"initiatorEmployeeId": null,
"initiatorPhone": null,
"orgBusinessProcessExtIds": null,
"confirmDate": 1663321828372,
"issuanceDate": 1663321828372,
"changesDescription": null,
"minor": null,
"functionalExpertiseDays": null,
"functionalOwnerEmployeeIds": null,
"functionalMemberEmployeeIds": null,
"methodologistEmployeeIds": [
"b52c053e-37f5-4163-bd51-f874e8f63ef6"
],
"methodologistEmployeeIdsManual": [],
"additionalEmployeeIds": null,
"informedOrganizationIds": null,
"nmdIds": [
"f88087d7-e44a-4a7a-8418-0922c2477625"
],
"implementationPlanId": null,
"files": null,
"explanatoryNoteId": null,
"accompanyingFileIds": [],
"status": "Active",
"targetDate": 1663345619339,
"standartFgId": null
},
{
"id": "75b76f93-5ba0-4141-b0bc-e81e36c7e946",
"entityType": "NmdRequest",
"title": "NmdRequest 75b76f93-5ba0-4141-b0bc-e81e36c7e946",
"source": "sed",
"created": 1663317203410,
"modified": 1663317203410,
"version": 1,
"number": "000001",
"authorId": "9ec87a4b-c640-443d-9b11-d9e0d35c339b",
"authorEmployeeId": "1415516c-728b-4471-ae09-203248065812",
"authorContacts": null,
"initiatorEmployeeId": null,
"initiatorPhone": null,
"orgBusinessProcessExtIds": null,
"confirmDate": 1663317201435,
"issuanceDate": 1663317201435,
"changesDescription": null,
"minor": null,
"functionalExpertiseDays": null,
"functionalOwnerEmployeeIds": null,
"functionalMemberEmployeeIds": null,
"methodologistEmployeeIds": [
"b52c053e-37f5-4163-bd51-f874e8f63ef6"
],
"methodologistEmployeeIdsManual": [],
"additionalEmployeeIds": null,
"informedOrganizationIds": null,
"nmdIds": [
"1a4f4260-111c-44fa-91f3-4e861dc25d71"
],
"implementationPlanId": null,
"files": null,
"explanatoryNoteId": null,
"accompanyingFileIds": [],
"status": "Active",
"targetDate": 1663345619339,
"standartFgId": null
}
],
"total": 2
}
Получение списка Запросов Согласование НМД с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[NmdRequest]
Фильтрация по связям с объектами (пока не работает из-за встроенной фильтрации по "originalId": "null"):
- nmd (Nmd)
- event (Event)
- explanatoryNote (ExplanatoryNote)
| Команда | Путь |
|---|---|
| sed_listNmdRequests | HTTP POST "/v1/nmdRequest/list" |
UpdateNmdRequest
На входе атрибуты обновляемого Запроса Согласование НМД, а также ID и версия
{
"id": "75b76f93-5ba0-4141-b0bc-e81e36c7e946",
"version": 1,
"data": {
"files": [
{
"fileId": "00000000-0000-0000-0000-000000000001"
}
]
}
}
На выходе признак успешности
true
Обновление Запроса Согласование НМД.
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
Поддерживается обновление связей и удаление связанных объектов Nmd через поле nmd.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updateNmdRequest | Kafka Topic "sed_commands" |
DeleteNmdRequest
На входе ID Запроса Согласование НМД
"75b76f93-5ba0-4141-b0bc-e81e36c7e946"
На выходе результат удаления
true
Удаление Запроса Согласование НМД по ID
- На входе: UUID Запроса Согласование НМД
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deleteNmdRequest | Kafka Topic "sed_commands" |
CreateNmd
На входе ID документа из ЦНМД и ID Запроса Согласование НМД
{
"documentId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"requestId": "680681ff-8033-43f2-8636-66e88836c0f9",
"action": "Create"
}
На выходе ID НМД
"196a455f-7ae0-4d42-81fd-444d69f03fc6"
Создание нового НМД с автоматическим заполнением обязательных атрибутов и создание участников только на чтение.
- Input: NmdCreate
- Output: UUID Запроса Согласование НМД
| Команда | Путь |
|---|---|
| sed_createNmd | Kafka Topic "sed_commands" |
CreateNmdFromPlan
На входе ID ПЗ из СЭД и ID Запроса Согласование НМД
{
"planId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"requestId": "680681ff-8033-43f2-8636-66e88836c0f9",
"action": "Create"
}
На выходе ID НМД
"196a455f-7ae0-4d42-81fd-444d69f03fc6"
Создание нового НМД с автоматическим заполнением обязательных атрибутов и создание участников только на чтение.
- Input: NmdCreateFromPlan
- Output: UUID Запроса Согласование НМД
| Команда | Путь |
|---|---|
| sed_createNmdFromPlan | Kafka Topic "sed_commands" |
CreateNmdWithoutPlan
На входе ID Запроса Согласование НМД
"680681ff-8033-43f2-8636-66e88836c0f9"
На выходе ID НМД
"196a455f-7ae0-4d42-81fd-444d69f03fc6"
Создание нового НМД с автоматическим заполнением обязательных атрибутов.
- Input: UUID Запроса Согласование НМД
- Output: UUID внепланового НМД
| Команда | Путь |
|---|---|
| sed_createNmdWithoutPlan | Kafka Topic "sed_commands" |
CreateNmdParticipant
На входе
{
"orgBusinessProcessExtId": "4b505c3c-a51f-4ade-bd74-366cb7aba416",
"nmdId": "2de05ad3-d69d-4022-866e-3b639c38b061"
}
На выходе
"062e2a6c-3ce7-4757-81f6-077e7f5a84ae"
Описание
- Input: NmdParticipantCreate
- Output: uuid созданного бп
| Команда | Путь |
|---|---|
| sed_createNmdParticipant | Kafka Topic "sed_commands" |
GetNmd
На входе ID НМД
"196a455f-7ae0-4d42-81fd-444d69f03fc6"
На выходе атрибуты НМД
{
"id": "196a455f-7ae0-4d42-81fd-444d69f03fc6",
"entityType": "Nmd",
"title": "Нормы возмещения командировочных расходов",
"source": "sed",
"created": 1664196229075,
"modified": 1664196229075,
"version": 1,
"orgBusinessProcessExtId": "68271176-1158-4cd9-ae7f-9317b2b7adc3",
"noOwnerOrganizationApproval": false,
"simpleDuplication": null,
"legalFunctionAgreement": false,
"nmdOwnerOrganizationId": "",
"nmdKind": "NMDKind_01",
"documentCode": "КТ-303",
"documentIndex": null,
"catalogOwnerEmployeeId": "",
"informationOwnerEmployeeId": "",
"authorEmployeeId": "2d3019c0-ac6d-4c95-9d89-77f4472f9593",
"coauthorEmployeeIds": null,
"number": "1.0",
"developmentType": "DevelopmentType_3",
"planningApprovalDate": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"developmentReason": null,
"developmentPriority": null,
"developmentPriorityCatalog": null,
"proposerEmployeeId": null,
"requestId": null,
"planExtId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"files": [],
"nmdParticipantOrganizationIds": null,
"organizationsWithoutConfirmIds": null,
"action": "Create",
"nmdParticipant": [
"c3c06cea-ce42-436d-b08e-67b0cb2c3781",
"3bd4c5dc-6c67-4652-8061-43099afcd808"
]
}
Получение НМД по идентификатору.
- Input: UUID Запроса Согласование НМД
- Output: Nmd
| Команда | Путь |
|---|---|
| sed_getNmd | HTTP POST "/v1/nmd/get" |
GetNmdParticipant
На входе
"5562ecab-f4f6-4dcf-8d85-0ab12dc323b3"
На выходе
{
"id": "5562ecab-f4f6-4dcf-8d85-0ab12dc323b3",
"entityType": "NmdParticipant",
"title": "NmdParticipant 5562ecab-f4f6-4dcf-8d85-0ab12dc323b3",
"source": "sed",
"created": 1669363830611,
"modified": 1669364592911,
"version": 2,
"originalId": null,
"readOnly": false,
"orgBusinessProcessExtId": "4b505c3c-a51f-4ade-bd74-366cb7aba416",
"simpleDuplication": false,
"documentIndex": null,
"action": "Create",
"nmdId": "2de05ad3-d69d-4022-866e-3b639c38b061",
"requestId": "f60ea13a-e786-4bf8-b8a3-707c042694aa",
"noOwnerOrganizationApproval": false,
"legalFunctionAgreement": false,
"nmdOwnerOrganizationId": "05602058-9877-42c2-8e62-731458829978",
"nmdKind": "NMDKind_04",
"documentCode": "М-01.01-01",
"catalogOwnerEmployeeId": "",
"informationOwnerEmployeeId": "",
"authorEmployeeId": "cdcc888a-368b-413c-a8a8-49caf9078d36",
"coauthorEmployeeIds": [
"59a2ca32-f1a1-4a89-92b8-d20db8a77fb3"
],
"number": "1.0",
"developmentType": "DevelopmentType_3",
"planningApprovalDate": "980c6612-1057-4ee4-8532-0ce4b0f5c22",
"developmentReason": "",
"developmentPriority": null,
"developmentPriorityCatalog": null,
"proposerEmployeeId": null,
"nmdParticipantOrganizationIds": [
"05602058-9877-42c2-8e62-731458829978"
],
"organizationsWithoutConfirmIds": null,
"planExtId": "fae15b8f-57dc-4ee0-a0fd-a867119be916",
"files": null
}
Описание
- Input: uuid
- Output: все поля NmdParticipant + недостающие поля Nmd
| Команда | Путь |
|---|---|
| sed_getNmdParticipant | HTTP POST "/v1/nmd-participant/get" |
ListNmds
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "request.id",
"context": {
"request.id": "6de0cbe8-bf96-4879-adaa-e9eb2d21599e"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждого НМД
{
"items": [
{
"id": "f12136fd-a492-444e-9722-5e95033a6d49",
"entityType": "Nmd",
"title": "Нормы возмещения командировочных расходов",
"source": "sed",
"created": 1664196228755,
"modified": 1664196228755,
"version": 1,
"requestId": "6de0cbe8-bf96-4879-adaa-e9eb2d21599e",
"orgBusinessProcessExtId": "68271176-1158-4cd9-ae7f-9317b2b7adc3",
"ownerOrganizationApproval": false,
"simpleDuplication": null,
"legalFunctionAgreement": false,
"nmdOwnerOrganizationId": "",
"nmdKind": "NMDKind_01",
"documentCode": "КТ-303",
"documentIndex": null,
"catalogOwnerEmployeeId": "",
"informationOwnerEmployeeId": "",
"authorEmployeeId": "2d3019c0-ac6d-4c95-9d89-77f4472f9593",
"coauthorEmployeeIds": null,
"number": "1.0",
"developmentType": "DevelopmentType_3",
"planningApprovalDate": "980c6612-1057-4ee4-8532-0ce4b0f5c22",
"developmentReason": null,
"developmentPriority": null,
"developmentPriorityCatalog": null,
"proposerEmployeeId": null,
"planExtId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"files": [],
"nmdParticipantOrganizationIds": null,
"organizationsWithoutConfirmIds": null,
"action": "Create",
"nmdParticipant": [
"c3c06cea-ce42-436d-b08e-67b0cb2c3781",
"3bd4c5dc-6c67-4652-8061-43099afcd808"
]
},
{
"id": "196a455f-7ae0-4d42-81fd-444d69f03fc6",
"entityType": "Nmd",
"title": "Нормы возмещения командировочных расходов",
"source": "sed",
"created": 1664196229075,
"modified": 1664196229075,
"version": 1,
"requestId": "6de0cbe8-bf96-4879-adaa-e9eb2d21599e",
"orgBusinessProcessExtId": "68271176-1158-4cd9-ae7f-9317b2b7adc3",
"ownerOrganizationApproval": false,
"simpleDuplication": null,
"legalFunctionAgreement": false,
"nmdOwnerOrganizationId": "",
"nmdKind": "NMDKind_01",
"documentCode": "КТ-303",
"documentIndex": null,
"catalogOwnerEmployeeId": "",
"informationOwnerEmployeeId": "",
"authorEmployeeId": "2d3019c0-ac6d-4c95-9d89-77f4472f9593",
"coauthorEmployeeIds": null,
"number": "1.0",
"developmentType": "DevelopmentType_3",
"planningApprovalDate": "980c6612-1057-4ee4-8532-0ce4b0f5c22",
"developmentReason": null,
"developmentPriority": null,
"developmentPriorityCatalog": null,
"proposerEmployeeId": null,
"planExtId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"files": [],
"nmdParticipantOrganizationIds": null,
"organizationsWithoutConfirmIds": null,
"action": "Create",
"nmdParticipant": []
}
],
"total": 2
}
Получение списка НМД с фильтрацией, сортировкой и пагинацией.
Фильтрация по связям с объектами:
- request (NmdRequest)
| Команда | Путь |
|---|---|
| sed_listNmds | HTTP POST "/v1/nmd/list" |
ListNmdParticipants
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "",
"context": {
},
"sorting": {
"fieldName": "readOnly",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждой из НМД участников
{
"items": [
{
"id": "5562ecab-f4f6-4dcf-8d85-0ab12dc323b3",
"entityType": "NmdParticipant",
"title": "NmdParticipant 5562ecab-f4f6-4dcf-8d85-0ab12dc323b3",
"source": "sed",
"created": 1669363830611,
"modified": 1669364592911,
"version": 2,
"originalId": null,
"readOnly": false,
"orgBusinessProcessExtId": "4b505c3c-a51f-4ade-bd74-366cb7aba416",
"simpleDuplication": false,
"documentIndex": null,
"action": "Create",
"nmdId": "2de05ad3-d69d-4022-866e-3b639c38b061"
},
{
"id": "062e2a6c-3ce7-4757-81f6-077e7f5a84ae",
"entityType": "NmdParticipant",
"title": "NmdParticipant 062e2a6c-3ce7-4757-81f6-077e7f5a84ae",
"source": "sed",
"created": 1669480593913,
"modified": 1669480593913,
"version": 1,
"originalId": null,
"readOnly": false,
"orgBusinessProcessExtId": "4b505c3c-a51f-4ade-bd74-366cb7aba416",
"simpleDuplication": null,
"documentIndex": null,
"action": "Create",
"nmdId": "2de05ad3-d69d-4022-866e-3b639c38b061"
}
],
"total": 2
}
Получение списка Плановых записей с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[NmdParticipant]
| Команда | Путь |
|---|---|
| sed_listNmdParticipants | HTTP POST "/v1/nmd-participant/list" |
UpdateNmd
На входе необходимые для обновления атрибуты НМД, а также ID и версия
{
"id": "196a455f-7ae0-4d42-81fd-444d69f03fc6",
"version": 1,
"data": {
"ownerOrganizationApproval": true
}
}
На выходе признак успешности
true
Обновление НМД.
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updateNmd | Kafka Topic "sed_commands" |
UpdateNmdParticipant
На входе необходимые для обновления атрибуты участника НМД, а также ID и версия
{
"id": "5562ecab-f4f6-4dcf-8d85-0ab12dc323b3",
"version": 1,
"data": {
"simpleDuplication": false
}
}
На выходе признак успешности
true
Обновление участника НМД.
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updateNmdParticipant | Kafka Topic "sed_commands" |
DeleteNmd
На входе список ID НМД
[
"196a455f-7ae0-4d42-81fd-444d69f03fc6"
]
На выходе результат удаления
true
Удаление НМД по ID
- На входе: список UUID Запроса Согласование НМД
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deleteNmd | Kafka Topic "sed_commands" |
DeleteNmdParticipant
На входе список ID участника НМД
[
"d31af41f-e5a5-4cf7-9a5f-c1834e77bbab"
]
На выходе результат удаления
true
Удаление участника НМД
- На входе: список UUID участника НМД
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deleteNnmParticipant | Kafka Topic "sed_commands" |
GetNmdPublishLegacy
На входе ID НМД к публикации
"80BFE3AE60D849AB86F427FDEEE8F735"
На выходе Legacy-представление атрибутов НМД
{
"ParentProcess": "02.16.05 Анализ производственной деятельности ПБЕ КД",
"PersonName": "Кадагидзе Л Д",
"PersonPos": "Директор Коммерческой дирекции",
"ProcessType": "BusinessProcessKind_1",
"CompanyName": "ПАО Газпром нефть",
"NMDLabel": "Ш-06.01.02.01.02.05-11",
"OwnerCatalogRUS": "Абузяров Ринат Маратович",
"OwnerCatalogPos": "Механик",
"OwnerCatalogCompany": "ООО \"Газпромнефть-Приразломное\"",
"AuthorNameRUS": "Аристова Татьяна Станиславовна",
"AuthorPositionRUS": "Руководитель направления",
"CoAuthorNameRUS": "Мартынова Наталья Борисовна",
"CoAuthorPositionRUS": "Начальник отдела",
"Version": "1.0",
"RazrAdapt": "Адаптация",
"DATEREG": "",
"DATESTART": "30.09.2022",
"RDATERD": "",
"DateEnd": "",
"DATECANCEL": "",
"Priority": "1",
"Status": "",
"ISSCID": "80BFE3AE60D849AB86F427FDEEE8F735",
"CompanyNameLocal": "",
"NMDType": "Каталог",
"Type": "common",
"IsTemplate": "",
"AddDocTitle": "Сводная ведомость материальных ресурсов и оборудования поставки Заказчика",
"IsPlan": "Нет",
"DateExec": "",
"AUTHORNAME": "Аристова Татьяна Станиславовна",
"AuthorPos": "Руководитель направления",
"SimpleDuplication": "Yes",
"MethConfirmPersons": [],
"MethConfirmPersonsPos": [],
"ApprovalDocumentLink": "",
"@modified": "2022-11-14T11:11:54Z",
"ParentProcessId": "82F30CD2B8B64BACBCAB342229B4448C",
"BProcessLevel": "",
"DateConfirm": "30.09.2022",
"ApplicationOrderLink": "",
"STAGESCREENSETNAMEDP": "BProcess",
"OwnerInformationRUS": "Даутов Максим Маратович",
"OwnerInformationPos": "Техник",
"OwnerInformationCompany": "ООО \"Газпромнефть-Ямал\"",
"Quarantine": "No",
"ParentREF": "82F30CD2B8B64BACBCAB342229B4448C"
}
Получение НМД к публикации (Legacy-представление) по идентификатору.
- Input: ID НМД к публикации
- Output: LegacyDocument
ListNmdPublishLegacy
На входе ничего
На выходе полный список НМД к публикации (Legacy-представление)
[
{
"@unid": "80BFE3AE60D849AB86F427FDEEE8F735",
"LastModifiedDate": "2022-11-14T11:11:54Z"
},
{
"@unid": "7C6B9583CD5845D5ABD02AA57BBD41A0",
"LastModifiedDate": "2022-11-14T11:11:54Z"
}
]
Получение полного списка НМД к публикации с датой последнего изменения.
- Input: -
- Output: List[LegacyDocumentListItem]
CreatePlanRequest
На выходе ID Запроса на изменение КТ-202
"7125517d-558d-43ae-b35c-e3c7ece5e78e"
Создание нового Запроса на изменение КТ-202.
- Input: -
- Output: UUID Запроса на изменение КТ-202
| Команда | Путь |
|---|---|
| sed_createPlanRequest | Kafka Topic "sed_commands" |
GetPlanRequest
На входе ID Запроса на изменение КТ-202
"0e72ddbe-57d6-4df6-a16f-73682633c2f5"
На выходе атрибуты Запроса на изменение КТ-202
{
"id": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
"entityType": "PlanRequest",
"title": "PlanRequest 7125517d-558d-43ae-b35c-e3c7ece5e78e",
"source": "sed",
"created": 1663062980555,
"modified": 1663064217661,
"version": 3,
"number": "000001",
"developmentReason": "DevelopmentReason_1",
"authorId": "363c126f-35be-4420-b506-41b1a4e0af0c",
"authorEmployeeId": "463c126f-35be-4420-b506-41b1a4e0af0c",
"authorContacts": null,
"initiatorEmployeeId": null,
"initiatorPhone": null,
"orgBusinessProcessExtIds": [],
"additionalEmployeeIds": null,
"planIds": [],
"status": "Active",
"targetDate": 1663345619339,
"coordinatingEmployeeIds": [
"b52c053e-37f5-4163-bd51-f874e8f63ef6",
"27d9c6a6-3a07-4664-a816-5f9ce8dff553",
"0003d437-2ca7-4a22-b8b9-0ad9795c389d"
],
"standartFgId": null
}
Получение Запроса на изменение КТ-202 по идентификатору.
- Input: UUID Запроса на изменение КТ-202
- Output: PlanRequest
| Команда | Путь |
|---|---|
| sed_getPlanRequest | HTTP POST "/v1/plan-request/get" |
ListPlanRequests
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "plan.id",
"context": {
"plan.id": "f73fbf89-dbd8-4c4c-bbaa-a89698b74dca"
},
"sorting": {
"fieldName": "number",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждого из Запросов на изменение КТ-202
{
"items": [
{
"id": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
"entityType": "PlanRequest",
"title": "PlanRequest 7125517d-558d-43ae-b35c-e3c7ece5e78e",
"source": "sed",
"created": 1663062980555,
"modified": 1663064217661,
"version": 3,
"number": "000001",
"developmentReason": "DevelopmentReason_1",
"authorId": "363c126f-35be-4420-b506-41b1a4e0af0c",
"authorEmployeeId": "463c126f-35be-4420-b506-41b1a4e0af0c",
"authorContacts": null,
"initiatorEmployeeId": null,
"initiatorPhone": null,
"orgBusinessProcessExtIds": [],
"additionalEmployeeIds": null,
"planIds": [
"f73fbf89-dbd8-4c4c-bbaa-a89698b74dca"
],
"status": "Active",
"targetDate": 1663345619339,
"coordinatingEmployeeIds": [
"b52c053e-37f5-4163-bd51-f874e8f63ef6",
"27d9c6a6-3a07-4664-a816-5f9ce8dff553",
"0003d437-2ca7-4a22-b8b9-0ad9795c389d"
],
"standartFgId": null
}
],
"total": 1
}
Получение списка Запросов на изменение КТ-202 с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[PlanRequest]
Фильтрация по связям с объектами (пока не работает из-за встроенной фильтрации по "originalId": "null"):
- plan (Plan)
| Команда | Путь |
|---|---|
| sed_listPlanRequests | HTTP POST "/v1/planRequest/list" |
UpdatePlanRequest
На входе атрибуты обновляемого Запроса на изменение КТ-202, включая ID и версию
{
"id": "42f4be24-1831-4bfb-bac8-4f2e9c4551c6",
"version": 1,
"data": {
"number": "000001",
"developmentReason": "DevelopmentReason_1",
"authorId": "363c126f-35be-4420-b506-41b1a4e0af0c",
"authorEmployeeId": "463c126f-35be-4420-b506-41b1a4e0af0c",
"authorContacts": null,
"initiatorEmployeeId": null,
"initiatorPhone": null,
"additionalEmployeeIds": null
}
}
На выходе признак успешности
true
Обновление Запроса на изменение КТ-202.
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
Поддерживается обновление связей и удаление связанных объектов Plan через поле plan.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updatePlanRequest | Kafka Topic "sed_commands" |
DeletePlanRequest
На входе ID Запроса на изменение КТ-202
"42f4be24-1831-4bfb-bac8-4f2e9c4551c6"
На выходе результат удаления
true
Удаление Запроса на изменение КТ-202 по ID
- На входе: UUID Запроса на изменение КТ-202
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deletePlanRequest | Kafka Topic "sed_commands" |
CreateBusinessProcessRequest
На выходе ID Запроса на изменение КТ-001
"0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140"
Создание нового Запроса на изменение КТ-001.
- Input: -
- Output: UUID Запроса на изменение КТ-001
| Команда | Путь |
|---|---|
| sed_createBusinessProcessRequest | HTTP POST "/v1/business-process-request/create" |
GetBusinessProcessRequest
На входе ID Запроса на изменение КТ-001
"0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140"
На выходе атрибуты Запроса на изменение КТ-001
{
"id": "0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140",
"entityType": "BusinessProcessRequest",
"title": "BusinessProcessRequest 0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140",
"source": "sed",
"created": 1663573576669,
"modified": 1663573576669,
"version": 1,
"number": "000002",
"changeReason": "",
"authorId": "23942f1e-9312-45bd-93d8-b6db3bd72d1b",
"authorEmployeeId": "0e749520-2ea8-4ead-b13b-9da6003477fd",
"initiatorEmployeeId": null,
"initiatorPhone": null,
"orgBusinessProcessExtIds": [],
"additionalEmployeeIds": null,
"informedEmployeeIds": null,
"businessProcessIds": null,
"status": "Active",
"targetDate": 1663345619339,
"cKPersonsIds": [
"ebcd5d45-83a0-4d9d-bd31-9110a89ca012"
],
"approvalEmployeeIds": [
"c282c950-3c53-4442-8938-93a55a1ba1d0",
"27d9c6a6-3a07-4664-a816-5f9ce8dff553"
],
"bProcessOwnerIds": [
"496e6020-9fbe-4582-992f-c6c38ab83152",
"de7e6f01-d607-42f8-8c77-f74885c28057"
],
"confirmEmployeeIds": [
"496e6020-9fbe-4582-992f-c6c38ab83152"
],
"standartFgId": null
}
Получение Запроса на изменение КТ-001 по идентификатору.
- Input: UUID Запроса на изменение КТ-001
- Output: BusinessProcessRequest
| Команда | Путь |
|---|---|
| sed_getBusinessProcessRequest | HTTP POST "/v1/business-process-request/get" |
ListBusinessProcessRequests
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "businessProcess.id",
"context": {
"businessProcess.id": "[61028c65-0a36-4d27-b11d-66814defebd4, 273352b6-5225-4e90-9efc-ffd0a3150d25]"
},
"sorting": {
"fieldName": "number",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждого из Запросов на изменение КТ-001
{
"items": [
{
"id": "c242e073-9699-40f4-ab2c-04dd0d7f355a",
"entityType": "BusinessProcessRequest",
"title": "BusinessProcessRequest c242e073-9699-40f4-ab2c-04dd0d7f355a",
"source": "sed",
"created": 1663573570039,
"modified": 1663573570039,
"version": 1,
"number": "000001",
"changeReason": "",
"authorId": "23942f1e-9312-45bd-93d8-b6db3bd72d1b",
"authorEmployeeId": "0e749520-2ea8-4ead-b13b-9da6003477fd",
"initiatorEmployeeId": null,
"initiatorPhone": null,
"orgBusinessProcessExtIds": [],
"additionalEmployeeIds": null,
"informedEmployeeIds": null,
"businessProcessIds": [
"61028c65-0a36-4d27-b11d-66814defebd4"
],
"status": "Active",
"targetDate": 1663345619339,
"cKPersonsIds": [
"ebcd5d45-83a0-4d9d-bd31-9110a89ca012"
],
"approvalEmployeeIds": [
"c282c950-3c53-4442-8938-93a55a1ba1d0",
"27d9c6a6-3a07-4664-a816-5f9ce8dff553"
],
"bProcessOwnerIds": [
"496e6020-9fbe-4582-992f-c6c38ab83152",
"de7e6f01-d607-42f8-8c77-f74885c28057"
],
"confirmEmployeeIds": [
"496e6020-9fbe-4582-992f-c6c38ab83152"
],
"standartFgId": null
},
{
"id": "0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140",
"entityType": "BusinessProcessRequest",
"title": "BusinessProcessRequest 0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140",
"source": "sed",
"created": 1663573576669,
"modified": 1663573576669,
"version": 1,
"number": "000002",
"changeReason": "",
"authorId": "23942f1e-9312-45bd-93d8-b6db3bd72d1b",
"authorEmployeeId": "0e749520-2ea8-4ead-b13b-9da6003477fd",
"initiatorEmployeeId": null,
"initiatorPhone": null,
"orgBusinessProcessExtIds": [],
"additionalEmployeeIds": null,
"informedEmployeeIds": null,
"businessProcessIds": [
"273352b6-5225-4e90-9efc-ffd0a3150d25"
],
"status": "Active",
"targetDate": 1663345619339,
"cKPersonsIds": [
"ebcd5d45-83a0-4d9d-bd31-9110a89ca012"
],
"approvalEmployeeIds": [
"c282c950-3c53-4442-8938-93a55a1ba1d0",
"27d9c6a6-3a07-4664-a816-5f9ce8dff553"
],
"bProcessOwnerIds": [
"496e6020-9fbe-4582-992f-c6c38ab83152",
"de7e6f01-d607-42f8-8c77-f74885c28057"
],
"confirmEmployeeIds": [
"496e6020-9fbe-4582-992f-c6c38ab83152"
],
"standartFgId": null
}
],
"total": 2
}
Получение списка Запросов на изменение КТ-001 с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[BusinessProcessRequest]
Фильтрация по связям с объектами (пока не работает из-за встроенной фильтрации по "originalId": "null"):
- businessProcess (BusinessProcessOwner)
| Команда | Путь |
|---|---|
| sed_listBusinessProcessRequests | HTTP POST "/v1/business-process-request/list" |
UpdateBusinessProcessRequest
На входе атрибуты обновляемого Запроса на изменение КТ-001, включая ID и версию
{
"id": "0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140",
"version": 1,
"data": {
"number": "000001",
"changeReason": "очень важная причина",
"authorId": "23942f1e-9312-45bd-93d8-b6db3bd72d1b",
"authorEmployeeId": "0e749520-2ea8-4ead-b13b-9da6003477fd",
"initiatorEmployeeId": "0e749520-2ea8-4ead-b13b-9da6003477fd",
"initiatorPhone": "88005553535",
"additionalEmployeeIds": [
"0e749520-2ea8-4ead-b13b-9da6003477fd"
],
"informedEmployeeIds": [
"0e749520-2ea8-4ead-b13b-9da6003477fd"
],
"businessProcessIds": null
}
}
На выходе признак успешности
true
Обновление Запроса на изменение КТ-001.
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
Поддерживается обновление связей и удаление связанных объектов BusinessProcess через поле businessProcess.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updateBusinessProcessRequest | Kafka Topic "sed_commands" |
DeleteBusinessProcessRequest
На входе ID Запроса на изменение КТ-001
"0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140"
На выходе результат удаления
true
Удаление Запроса на изменение КТ-001 по ID
- На входе: UUID Запроса на изменение КТ-001
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deleteBusinessProcessRequest | Kafka Topic "sed_commands" |
CreateInternalApprovalRequest
На входе тип запроса для согласования и его ID
{
"entityType": "BusinessProcessRequest",
"requestId": "03ae21dc-65ca-4f40-be46-15e712f10447"
}
На выходе ID Запроса на согласование
"8c5b2019-ae97-47be-ba5e-5df381d67372"
Создание нового Запроса на внутреннее согласование.
- Input: RequestIdWithType
- Output: UUID Запроса на внутреннее согласование
| Команда | Путь |
|---|---|
| sed_createInternalApprovalRequest | Kafka Topic "sed_commands" |
GetInternalApprovalRequest
На входе ID Запроса на внутреннее согласование
"0e72ddbe-57d6-4df6-a16f-73682633c2f5"
На выходе атрибуты Запроса на внутреннее согласование и прикрепленного запроса
{
"internalApproval": {
"id": "8c5b2019-ae97-47be-ba5e-5df381d67372",
"entityType": "InternalApprovalRequest",
"title": "InternalApprovalRequest 8c5b2019-ae97-47be-ba5e-5df381d67372",
"source": "sed",
"created": 1671001768772,
"modified": 1671001768772,
"version": 1,
"originalId": null,
"number": "000001-01",
"authorId": "23942f1e-9312-45bd-93d8-b6db3bd72d1b",
"authorEmployeeId": "a67421c8-8195-4773-a086-d6cde6779614",
"approveEmployeeIds": [],
"targetDate": null,
"requestType": "BusinessProcessRequest",
"requestId": "03ae21dc-65ca-4f40-be46-15e712f10447",
"stageHistoryId": null
},
"request": {
"id": "03ae21dc-65ca-4f40-be46-15e712f10447",
"entityType": "BusinessProcessRequest",
"title": "BusinessProcessRequest 03ae21dc-65ca-4f40-be46-15e712f10447",
"source": "sed",
"created": 1668425280498,
"modified": 1670502944749,
"version": 24,
"originalId": null,
"number": "000001",
"changeReason": "",
"authorId": "23942f1e-9312-45bd-93d8-b6db3bd72d1b",
"authorEmployeeId": "a67421c8-8195-4773-a086-d6cde6779614",
"initiatorEmployeeId": null,
"initiatorPhone": null,
"orgBusinessProcessExtIds": [
"6e6ccc9d-5787-4eca-a0c5-d22541bd19de",
"1f470e0c-ff89-4bc8-9664-2a1f284987d0",
"1a153381-1b3c-4735-bf69-d7c876d42df7"
],
"additionalEmployeeIds": null,
"informedEmployeeIds": null,
"businessProcessIds": [
"947c5617-7fda-4c40-b2b0-95cde22b55bb",
"554e379e-2b73-4e26-83a9-e5b13522740d",
"35902f40-1e17-467a-92bc-ec7f7050a77b",
"27f5dbb2-7387-40f4-8172-2b9faca89b50",
"8749dd75-8b76-4c54-a170-e80f553c7996"
],
"status": "Active",
"targetDate": null,
"cKPersonsIds": [
"0003e0f9-9cfe-470f-8c43-84f22091bc60"
],
"approvalEmployeeIds": [
"27d9c6a6-3a07-4664-a816-5f9ce8dff553",
"59dab05d-9743-4ce3-8d53-2c6fb8cb5cec",
"54279ada-7854-4dd5-8ccc-94a9cb6b42bd"
],
"bProcessOwnerIds": [],
"confirmEmployeeIds": []
}
}
Получение Запроса на внутреннее согласование по идентификатору.
- Input: UUID Запроса на внутреннее согласование
- Output: InternalApprovalRequestGetDTO
| Команда | Путь |
|---|---|
| sed_getInternalApprovalRequest | HTTP POST "/v1/internal-approval-request/get" |
ListInternalApprovalRequest
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "requestId && requestType",
"context": {
"requestId": "03ae21dc-65ca-4f40-be46-15e712f10447",
"requestType": "BusinessProcessRequest"
},
"sorting": {
"fieldName": "number",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждого из Запросов на внутреннее согласование
{
"items": [
{
"id": "8c5b2019-ae97-47be-ba5e-5df381d67372",
"entityType": "InternalApprovalRequest",
"title": "InternalApprovalRequest 8c5b2019-ae97-47be-ba5e-5df381d67372",
"source": "sed",
"created": 1671001768772,
"modified": 1671001768772,
"version": 1,
"originalId": null,
"number": "000001-01",
"authorId": "23942f1e-9312-45bd-93d8-b6db3bd72d1b",
"authorEmployeeId": "a67421c8-8195-4773-a086-d6cde6779614",
"approveEmployeeIds": [],
"status": "Active",
"targetDate": null,
"requestType": "BusinessProcessRequest",
"requestId": "03ae21dc-65ca-4f40-be46-15e712f10447",
"stageHistoryId": null
}
],
"total": 1
}
Получение списка Запросов на внутреннее согласование с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[InternalApprovalRequest]
| Команда | Путь |
|---|---|
| sed_listInternalApprovalRequests | HTTP POST "/v1/internal-approval-request/list" |
UpdateInternalApprovalRequest
На входе атрибуты обновляемого Запроса на внутреннее согласование, включая ID и версию
{
"id": "42f4be24-1831-4bfb-bac8-4f2e9c4551c6",
"version": 1,
"data": {
"number": "000001",
"authorId": "363c126f-35be-4420-b506-41b1a4e0af0c",
"authorEmployeeId": "463c126f-35be-4420-b506-41b1a4e0af0c",
"additionalEmployeeIds": null
}
}
На выходе признак успешности
true
Обновление Запроса на внутреннее согласование.
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updateInternalApprovalRequest | Kafka Topic "sed_commands" |
TransferResultInternalApprovalRequest
На входе Id запроса на внутреннее согласование
"42f4be24-1831-4bfb-bac8-4f2e9c4551c6"
На выходе признак успешности
true
Обновление атрибута transferResult на true
- На входе: UUID
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_transferResultInternalApprovalRequest | Kafka Topic "sed_commands" |
DeleteResultInternalApprovalRequest
На входе Id запроса на внутреннее согласование
"42f4be24-1831-4bfb-bac8-4f2e9c4551c6"
На выходе признак успешности
true
Обновление атрибута transferResult на false
- На входе: UUID
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deleteResultInternalApprovalRequest | Kafka Topic "sed_commands" |
DeleteInternalApprovalRequest
На входе ID Запроса на внутреннее согласование
"8c5b2019-ae97-47be-ba5e-5df381d67372"
На выходе результат удаления
true
Удаление Запроса на внутреннее согласование по ID
- На входе: UUID Запроса на внутреннее согласование
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deleteInternalApprovalRequest | Kafka Topic "sed_commands" |
GetJobDescriptionRequest
На входе ID Запроса на управление ДИ
"0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140"
На выходе атрибуты Запроса на Управление ДИ
{
"id": "16e3d636-2802-4ab5-976f-4b5644ce82ae",
"entityType": "JobDescriptionRequest",
"title": "JobDescriptionRequest 16e3d636-2802-4ab5-976f-4b5644ce82ae",
"source": "sed",
"created": 1676882905410,
"modified": 1676886941182,
"version": 3,
"originalId": null,
"number": "000001",
"authorId": "ba317843-d2cb-4c0f-b5d8-275ff106e260",
"authorEmployeeId": "03ec99c9-ac3e-41c3-ab95-f02fb3f7a64c",
"additionalEmployeeIds": [],
"status": "Active",
"date": 1676882905410,
"jobStatus": "",
"jobTitle": "",
"jobIds": null,
"jobSubdivision": "",
"jobCategory": "",
"lineManagerEmployeeId": "",
"functionalManagerEmployeeId": null,
"jobEmployeeIds": null,
"changesReasonFile": [],
"changesReasonText": null,
"changesReasonLink": null,
"roles": null,
"jobTargetDate": null,
"approvalEmployeeIds": null,
"confirmEmployeeId": "",
"hrBPfg": null,
"jdSignedFile": null,
"familiarizationSheetFile": null
}
Получение Запроса на управление ДИ по идентификатору.
- Input: UUID Запроса на управление ДИ
- Output: JobDescriptionRequest
| Команда | Путь |
|---|---|
| sed_getJobDescriptionRequest | HTTP POST "/v1/job-description-request/get" |
ListJobDescriptionRequests
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "id",
"context": {
"id": "[61028c65-0a36-4d27-b11d-66814defebd4, 273352b6-5225-4e90-9efc-ffd0a3150d25]"
},
"sorting": {
"fieldName": "number",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждого из Запросов на изменение КТ-001
{
"items": [
{
"id": "16e3d636-2802-4ab5-976f-4b5644ce82ae",
"entityType": "JobDescriptionRequest",
"title": "JobDescriptionRequest 16e3d636-2802-4ab5-976f-4b5644ce82ae",
"source": "sed",
"created": 1676882905410,
"modified": 1676886941182,
"version": 3,
"originalId": null,
"number": "000001",
"authorId": "ba317843-d2cb-4c0f-b5d8-275ff106e260",
"authorEmployeeId": "03ec99c9-ac3e-41c3-ab95-f02fb3f7a64c",
"additionalEmployeeIds": [],
"status": "Active",
"date": 1676882905410,
"jobStatus": "",
"jobTitle": "",
"jobIds": null,
"jobSubdivision": "",
"jobCategory": "",
"lineManagerEmployeeId": "",
"functionalManagerEmployeeId": null,
"jobEmployeeIds": null,
"changesReasonFile": [],
"changesReasonText": null,
"changesReasonLink": null,
"roles": null,
"jobTargetDate": null,
"approvalEmployeeIds": null,
"confirmEmployeeId": "",
"hrBPfg": null,
"jdSignedFile": null,
"familiarizationSheetFile": null
},
{
"id": "c23432b0-1fd1-4742-9871-da84b387f7a4",
"entityType": "JobDescriptionRequest",
"title": "JobDescriptionRequest c23432b0-1fd1-4742-9871-da84b387f7a4",
"source": "sed",
"created": 1676888777784,
"modified": 1676962054099,
"version": 2,
"originalId": null,
"number": "000002",
"authorId": "ba317843-d2cb-4c0f-b5d8-275ff106e260",
"authorEmployeeId": "88888888-ac3e-41c3-ab95-f02fb3f7a64c",
"additionalEmployeeIds": [],
"status": "Finished",
"date": 1676888777784,
"jobStatus": "",
"jobTitle": "",
"jobIds": null,
"jobSubdivision": "",
"jobCategory": "",
"lineManagerEmployeeId": "",
"functionalManagerEmployeeId": null,
"jobEmployeeIds": null,
"changesReasonFile": [],
"changesReasonText": null,
"changesReasonLink": null,
"roles": null,
"jobTargetDate": null,
"approvalEmployeeIds": null,
"confirmEmployeeId": "",
"hrBPfg": null,
"jdSignedFile": null,
"familiarizationSheetFile": null
}
],
"total": 2
}
Получение списка Запросов на управление ДИ с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[JobDescriptionRequest]
| Команда | Путь |
|---|---|
| sed_listJobDescriptionRequests | HTTP POST "/v1/job-description-request/list" |
UpdateJobDescriptionRequest
На входе атрибуты обновляемого Запроса на управление ДИ, включая ID и версию
{
"id": "0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140",
"version": 1,
"data": {
"number": "000001",
"authorId": "23942f1e-9312-45bd-93d8-b6db3bd72d1b",
"authorEmployeeId": "0e749520-2ea8-4ead-b13b-9da6003477fd"
}
}
На выходе признак успешности
true
Обновление Запроса на управление ДИ.
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updateJobDescriptionRequest | Kafka Topic "sed_commands" |
DeleteJobDescriptionRequest
На входе ID Запроса на управление ДИ
"0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140"
На выходе результат удаления
true
Удаление Запроса на управление ДИ по ID
- На входе: UUID Запроса на управление ДИ
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deleteJobDescriptionRequest | Kafka Topic "sed_commands" |
CreatePlanNew
На входе параметры создания
{
"requestId": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
"orgBusinessProcessExtId": "0ecf5dad-3d4d-4622-8b2b-566b7e2421da"
}
На выходе ID Плановой записи
"8bb7c242-2239-45ff-ae9a-e1cccc248ef5"
Создание Плановой записи на разработку нового ЦНМД
- Input: PlanCreateNewDTO
- Output: UUID Плановой записи
| Команда | Путь |
|---|---|
| sed_createPlanNew | Kafka Topic "sed_commands" |
CreatePlanExist
На входе параметры создания и предзаполнения
{
"requestId": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
"developmentType": "DevelopmentType_3",
"documentId": "a6c77fb0-7f93-4f2b-8065-29135641d059"
}
На выходе ID Плановой записи
"8bb7c242-2239-45ff-ae9a-e1cccc248ef5"
Создание Плановой записи на действия с существующим НМД и создание участников только на чтение.
- Input: PlanCreateExistDTO
- Output: UUID Плановой записи
| Команда | Путь |
|---|---|
| sed_createPlanExist | Kafka Topic "sed_commands" |
CreatePlanParticipant
На входе
{
"planId": "eb70a4fc-3709-42ee-8b74-32741b4126d2",
"orgBusinessProcessExtId": "947c5617-7fda-4c40-b2b0-95cde22b55bb"
}
На выходе
"3bd4c5dc-6c67-4652-8061-43099afcd808"
Описание
- Input: PlanParticipantCreate
- Output: uuid созданного бп
| Команда | Путь |
|---|---|
| sed_createPlanParticipant | Kafka Topic "sed_commands" |
CopyPlan
На входе параметры создания и предзаполнения
{
"requestId": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
"documentId": "a6c77fb0-7f93-4f2b-8065-29135641d059",
"action": "Create"
}
На выходе ID Плановой записи
"8bb7c242-2239-45ff-ae9a-e1cccc248ef5"
Создание Плановой записи СЭД для изменения существующий в ЦНМД Плановой записи и создание участников только на чтение.
- Input: CopyPlanDTO
- Output: UUID Плановой записи
| Команда | Путь |
|---|---|
| sed_copyPlan | Kafka Topic "sed_commands" |
GetPlan
На входе ID Плановой записи
"22ab386e-2f38-4dc8-9f2c-39cc5cf0aa2b"
На выходе атрибуты Плановой записи
{
"id": "22ab386e-2f38-4dc8-9f2c-39cc5cf0aa2b",
"entityType": "Plan",
"title": "Plan 22ab386e-2f38-4dc8-9f2c-39cc5cf0aa2b",
"source": "sed",
"created": 1663845053448,
"modified": 1663845053448,
"version": 1,
"requestId": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
"orgBusinessProcessExtId": "a60dc3a0-0492-48e6-a945-f5f1518b7bc5",
"ownerOrganizationApproval": null,
"simpleDuplication": null,
"legalFunctionAgreement": null,
"nmdOwnerOrganizationId": null,
"nmdKind": "NMDKind_01",
"documentTitle": "Сводная ведомость материальных ресурсов и оборудования поставки Заказчика",
"documentCode": "Ш-06.01.02.01.02.05-11",
"documentIndex": null,
"catalogOwnerEmployeeId": null,
"informationOwnerEmployeeId": null,
"authorEmployeeId": "6d985c11-d365-478b-98dc-619b4034f421",
"coauthorEmployeeIds": null,
"number": "1.0",
"developmentType": "DevelopmentType_3",
"planningApprovalDate": null,
"developmentReason": null,
"developmentPriority": null,
"developmentPriorityCatalog": null,
"proposerEmployeeId": null,
"nmdParticipantOrganizationIds": null,
"organizationsWithoutConfirmIds": null,
"action": "Create",
"planParticipant": [
"c3c06cea-ce42-436d-b08e-67b0cb2c3781",
"3bd4c5dc-6c67-4652-8061-43099afcd808"
]
}
Получение Плановой записи
- Input: UUID Плановой записи
- Output: Plan
| Команда | Путь |
|---|---|
| sed_getPlan | HTTP POST "/v1/plan/get" |
GetPlanParticipant
На входе
"c3c06cea-ce42-436d-b08e-67b0cb2c3781"
На выходе
{
"id": "c3c06cea-ce42-436d-b08e-67b0cb2c3781",
"entityType": "PlanParticipant",
"title": "PlanParticipant c3c06cea-ce42-436d-b08e-67b0cb2c3781",
"source": "sed",
"created": 1669382806624,
"modified": 1669382806624,
"version": 1,
"originalId": null,
"readOnly": false,
"orgBusinessProcessExtId": "4b505c3c-a51f-4ade-bd74-366cb7aba416",
"simpleDuplication": null,
"documentIndex": null,
"action": "Create",
"planId": "eb70a4fc-3709-42ee-8b74-32741b4126d2",
"requestId": "5ed234ef-65ab-4aac-8a1b-c7befbe25e7b",
"noOwnerOrganizationApproval": false,
"legalFunctionAgreement": false,
"nmdOwnerOrganizationId": "",
"nmdKind": "",
"documentCode": "",
"catalogOwnerEmployeeId": "",
"informationOwnerEmployeeId": "",
"authorEmployeeId": "",
"coauthorEmployeeIds": null,
"number": "",
"developmentType": "DevelopmentType_3",
"planningApprovalDate": "980c6612-1057-4ee4-8532-0ce4b0f5c22",
"developmentReason": "",
"developmentPriority": null,
"developmentPriorityCatalog": null,
"includedInUPC": null,
"proposerEmployeeId": null,
"nmdParticipantOrganizationIds": null,
"organizationsWithoutConfirmIds": null
}
Описание
- Input: uuid
- Output: все поля PlanParticipant + недостающие поля Plan
| Команда | Путь |
|---|---|
| sed_getPlanParticipant | HTTP POST "/v1/plan-participant/get" |
ListPlans
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "request.id",
"context": {
"request.id": "[7125517d-558d-43ae-b35c-e3c7ece5e78e, 6de0cbe8-bf96-4879-adaa-e9eb2d21599e]"
},
"sorting": {
"fieldName": "number",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждой из Плановых записей
{
"items": [
{
"id": "8bb7c242-2239-45ff-ae9a-e1cccc248ef5",
"entityType": "Plan",
"title": "Plan 8bb7c242-2239-45ff-ae9a-e1cccc248ef5",
"source": "sed",
"created": 1663676830181,
"modified": 1663676830181,
"version": 1,
"requestId": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
"orgBusinessProcessExtId": "a60dc3a0-0492-48e6-a945-f5f1518b7bc5",
"ownerOrganizationApproval": null,
"simpleDuplication": null,
"legalFunctionAgreement": null,
"nmdOwnerOrganizationId": null,
"nmdKind": "NMDKind_01",
"documentTitle": "Сводная ведомость материальных ресурсов и оборудования поставки Заказчика",
"documentCode": "Ш-06.01.02.01.02.05-11",
"documentIndex": null,
"catalogOwnerEmployeeId": null,
"informationOwnerEmployeeId": null,
"authorEmployeeId": "6d985c11-d365-478b-98dc-619b4034f421",
"coauthorEmployeeIds": null,
"number": "1.0",
"developmentType": "DevelopmentType_3",
"planningApprovalDate": null,
"developmentReason": null,
"developmentPriority": null,
"developmentPriorityCatalog": null,
"proposerEmployeeId": null,
"nmdParticipantOrganizationIds": null,
"organizationsWithoutConfirmIds": null,
"action": "Create",
"planParticipant": [
"c3c06cea-ce42-436d-b08e-67b0cb2c3781",
"3bd4c5dc-6c67-4652-8061-43099afcd808"
]
}
],
"total": 1
}
Получение списка Плановых записей с фильтрацией, сортировкой и пагинацией.
Фильтрация по связям с объектами:
- request (PlanRequest)
| Команда | Путь |
|---|---|
| sed_listPlans | HTTP POST "/v1/plan/list" |
ListPlanParticipants
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "",
"context": {
},
"sorting": {
"fieldName": "readOnly",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждой из плановой записи участников
{
"items": [
{
"id": "c3c06cea-ce42-436d-b08e-67b0cb2c3781",
"entityType": "PlanParticipant",
"title": "PlanParticipant c3c06cea-ce42-436d-b08e-67b0cb2c3781",
"source": "sed",
"created": 1669382806624,
"modified": 1669382806624,
"version": 1,
"originalId": null,
"readOnly": false,
"orgBusinessProcessExtId": "4b505c3c-a51f-4ade-bd74-366cb7aba416",
"simpleDuplication": null,
"documentIndex": null,
"action": "Create",
"planId": "eb70a4fc-3709-42ee-8b74-32741b4126d2"
},
{
"id": "3bd4c5dc-6c67-4652-8061-43099afcd808",
"entityType": "PlanParticipant",
"title": "PlanParticipant 3bd4c5dc-6c67-4652-8061-43099afcd808",
"source": "sed",
"created": 1669480742434,
"modified": 1669480742434,
"version": 1,
"originalId": null,
"readOnly": false,
"orgBusinessProcessExtId": "947c5617-7fda-4c40-b2b0-95cde22b55bb",
"simpleDuplication": null,
"documentIndex": null,
"action": "Create",
"planId": "eb70a4fc-3709-42ee-8b74-32741b4126d2"
}
],
"total": 2
}
Получение списка Плановых записей с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[PlanParticipant]
| Команда | Путь |
|---|---|
| sed_listPlanParticipants | HTTP POST "/v1/plan-participant/list" |
UpdatePlan
На входе изменяемые атрибуты обновляемой Плановой записи, включая ID и версию
{
"id": "8bb7c242-2239-45ff-ae9a-e1cccc248ef5",
"version": 1,
"data": {
"number": "1.0"
}
}
На выходе признак успешности
true
Обновление Плановой записи. Допускает частичное изменение полей (если поле не указано, то оно не обновится).
В случае, когда надо занулить значение, нужно явно передать fieldName: null
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updatePlan | Kafka Topic "sed_commands" |
UpdatePlanParticipant
На входе необходимые для обновления атрибуты участника плановой записи, а также ID и версия
{
"id": "2b04abe8-aed1-496b-ad01-75dd5dce908e",
"version": 1,
"data": {
"simpleDuplication": false
}
}
На выходе признак успешности
true
Обновление участника плановой записи.
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updatePlanParticipant | Kafka Topic "sed_commands" |
DeletePlan
На входе список ID Плановой записи
[
"42f4be24-1831-4bfb-bac8-4f2e9c4551c6"
]
На выходе результат удаления
true
Удаление Плановой записи
- На входе: список UUID Плановой записи
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deletePlan | Kafka Topic "sed_commands" |
DeletePlanParticipant
На входе список ID участников Плановой записи
[
"2b04abe8-aed1-496b-ad01-75dd5dce908e"
]
На выходе результат удаления
true
Удаление участника Плановой записи
- На входе: список UUID участников Плановой записи
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deletePlanParticipant | Kafka Topic "sed_commands" |
GetPlanPublishLegacy
На входе ID Плановой Записи к публикации
"dddf6bac-aeed-44f7-a776-4727a74389ec"
На выходе Legacy-представление атрибутов Плановой Записи
{
"ParentProcess": "02.16.05 Анализ производственной деятельности ПБЕ КД",
"PersonName": "Кадагидзе Л Д",
"PersonPos": "Директор Коммерческой дирекции",
"ProcessType": "BusinessProcessKind_1",
"CompanyName": "ПАО Газпром нефть",
"NMDLabel": "Ш-06.01.02.01.02.05-11",
"OwnerCatalogRUS": "Абузяров Ринат Маратович",
"OwnerCatalogPos": "Механик",
"OwnerCatalogCompany": "ООО \"Газпромнефть-Приразломное\"",
"AuthorNameRUS": "Аристова Татьяна Станиславовна",
"AuthorPositionRUS": "Руководитель направления",
"CoAuthorNameRUS": "Мартынова Наталья Борисовна",
"CoAuthorPositionRUS": "Начальник отдела",
"Version": "1.0",
"RazrAdapt": "Адаптация",
"DATEREG": "",
"DATESTART": "",
"RDATERD": "",
"DateEnd": "",
"DATECANCEL": "",
"Priority": "1",
"Status": "",
"ISSCID": "A2519D0A29FD488082A7500F4D320094",
"CompanyNameLocal": "",
"NMDType": "Каталог",
"Type": "common",
"IsTemplate": "",
"AddDocTitle": "Сводная ведомость материальных ресурсов и оборудования поставки Заказчика",
"IsPlan": "Да",
"DateExec": "",
"AUTHORNAME": "Аристова Татьяна Станиславовна",
"AuthorPos": "Руководитель направления",
"SimpleDuplication": "",
"MethConfirmPersons": [],
"MethConfirmPersonsPos": [],
"ApprovalDocumentLink": "",
"@modified": "2022-10-18T11:17:25Z",
"ParentProcessId": "82F30CD2B8B64BACBCAB342229B4448C",
"BProcessLevel": "",
"DateConfirm": "",
"ApplicationOrderLink": "",
"STAGESCREENSETNAMEDP": "BProcess",
"OwnerInformationRUS": "Даутов Максим Маратович",
"OwnerInformationPos": "Техник",
"OwnerInformationCompany": "ООО \"Газпромнефть-Ямал\"",
"Quarantine": "No",
"ParentREF": "82F30CD2B8B64BACBCAB342229B4448C"
}
Получение Плановой Записи к публикации (Legacy-представление) по идентификатору.
- Input: ID Плановой Записи к публикации
- Output: LegacyDocument
ListPlanPublishLegacy
На входе ничего
На выходе полный список Плановых Записей к публикации (Legacy-представление)
[
{
"@unid": "A2519D0A29FD488082A7500F4D320094",
"LastModifiedDate": "2022-11-13T11:11:54Z"
}
]
Получение полного списка Плановых Записей к публикации с датой последнего изменения.
- Input: -
- Output: List[LegacyDocumentListItem]
CheckCreatePlanExistCondition
На входе параметры создания и предзаполнения
{
"requestId": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
"developmentType": "DevelopmentType_3",
"documentId": "a6c77fb0-7f93-4f2b-8065-29135641d059"
}
На выходе ничего, либо бизнес ошибки
Проверки перед созданием Плановой записи на действия с существующим НМД и создание участников только на чтение.
- Input: PlanCreateExistDTO
- Output: Nothing
| Команда | Путь |
|---|---|
| sed_checkCreatePlanExistCondition | Kafka Topic "sed_commands" |
CheckCopyPlanCondition
На входе параметры создания и предзаполнения
{
"requestId": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
"documentId": "a6c77fb0-7f93-4f2b-8065-29135641d059",
"action": "Create"
}
На выходе ничего, либо бизнес ошибки
Проверки перед созданием Плановой записи СЭД для изменения существующий в ЦНМД Плановой записи и создание участников только на чтение.
- Input: CopyPlanDTO
- Output: Nothing
| Команда | Путь |
|---|---|
| sed_checkCopyPlanCondition | Kafka Topic "sed_commands" |
CreateStageSolution
На входе ID маршрута сущности, ID стадии маршрута, ID перехода между стадиями маршрута, комментарий и id стандартизатра
{
"requestId": "38910984-9df3-4862-bc23-54d414503c8a",
"routeEntityId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"routeStageId": "85931683-ee74-4e86-a8cd-6ddfb14fdab2",
"routeStageLinkId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"comment": "Комментарий",
"standardId": null
}
На выходе ID Решения участника стадии
"8f730a01-65ed-4864-af48-415f8edcc985"
Создание нового Решения участника стадии.
- Input: StageSolutionCreate
- Output: UUID Решения участника стадии
| Команда | Путь |
|---|---|
| sed_createStageSolution | Kafka Topic "sed_commands" |
StageForcedCompletion
На входе ID маршрута сущности, ID стадии маршрута, ID перехода между стадиями маршрута и комментарий
{
"requestId": "38910984-9df3-4862-bc23-54d414503c8a",
"routeEntityId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"routeStageId": "85931683-ee74-4e86-a8cd-6ddfb14fdab2",
"routeStageLinkId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"comment": "Комментарий",
"standardId": null
}
На выходе ID Решения принудительного завершения визирования.
Так же будут созданы Task и TaskAttach для пользователя вызвавшего комманду. Затем все активные задачи переходят в статус annulled.
"8f730a01-65ed-4864-af48-415f8edcc985"
Создание нового Решения участника стадии.
- Input: StageSolutionCreate
- Output: UUID Решения принудительного завершения визирования
| Команда | Путь |
|---|---|
| sed_stageForcedCompletion | Kafka Topic "sed_commands" |
RequestForcedCancellation
На входе ID и тип запроса
{
"entityType": "NmdRequest",
"objectId": "72602ae9-66ab-4065-8305-d374ff14a4bf"
}
На выходе ID Решения принудительного архивирования запроса. Все активные задачи переходят в статус annulled.
"8f730a01-65ed-4864-af48-415f8edcc985"
Создание нового Решения участника стадии.
- Input: EntityObjectIdentity
- Output: UUID Решения принудительного архивирования запроса
| Команда | Путь |
|---|---|
| sed_requestForcedCancellation | Kafka Topic "sed_commands" |
GetStageSolution
На входе ID Решения участника стадии
"8f730a01-65ed-4864-af48-415f8edcc985"
На выходе атрибуты Решения участника стадии
{
"id": "8f730a01-65ed-4864-af48-415f8edcc985",
"entityType": "StageSolution",
"title": "StageSolution 8f730a01-65ed-4864-af48-415f8edcc985",
"source": "sed",
"created": 1664956469189,
"modified": 1664956909605,
"version": 1,
"authorId": "6c7292bc-5116-423f-aa5d-3f80b4f34784",
"authorEmployeeId": "1415516c-728b-4471-ae09-203248065812",
"taskId": "30b1485c-bf07-4c93-8eb8-d4abf1fd619d",
"routeEntityId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"routeStageId": "85931683-ee74-4e86-a8cd-6ddfb14fdab2",
"routeStageLinkId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"comment": "Комментарий",
"stageHistoryId": "8634e2f9-568c-45c7-9b91-3f6e864d8a7e"
}
Получение Решения участника стадии по идентификатору.
- Input: UUID Запроса Согласование НМД
- Output: StageSolution
| Команда | Путь |
|---|---|
| sed_getStageSolution | HTTP POST "/v1/stage-solution/get" |
ListStageSolutions
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "",
"context": {},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждого НМД
{
"items": [
{
"id": "8f730a01-65ed-4864-af48-415f8edcc985",
"entityType": "StageSolution",
"title": "StageSolution 8f730a01-65ed-4864-af48-415f8edcc985",
"source": "sed",
"created": 1664956469189,
"modified": 1664956909605,
"version": 2,
"authorId": "6c7292bc-5116-423f-aa5d-3f80b4f34784",
"authorEmployeeId": "1415516c-728b-4471-ae09-203248065812",
"taskId": "30b1485c-bf07-4c93-8eb8-d4abf1fd619d",
"routeEntityId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"routeStageId": "85931683-ee74-4e86-a8cd-6ddfb14fdab2",
"routeStageLinkId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"comment": "Новый комментарий",
"stageHistoryId": "8634e2f9-568c-45c7-9b91-3f6e864d8a7e"
},
{
"id": "039f438b-79b7-4e35-a6ff-483a96e9764b",
"entityType": "StageSolution",
"title": "StageSolution 039f438b-79b7-4e35-a6ff-483a96e9764b",
"source": "sed",
"created": 1664964554060,
"modified": 1664964554060,
"version": 1,
"authorId": "6c7292bc-5116-423f-aa5d-3f80b4f34784",
"authorEmployeeId": "1415516c-728b-4471-ae09-203248065812",
"taskId": "30b1485c-bf07-4c93-8eb8-d4abf1fd619d",
"routeEntityId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"routeStageId": "85931683-ee74-4e86-a8cd-6ddfb14fdab2",
"routeStageLinkId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"comment": "Комментарий",
"stageHistoryId": "8634e2f9-568c-45c7-9b91-3f6e864d8a7e"
}
],
"total": 2
}
Получение списка Решения участника стадии с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[StageSolution]
| Команда | Путь |
|---|---|
| sed_listStageSolutions | HTTP POST "/v1/stage-solution/list" |
GetVoteAbility
На входе ID маршрута сущности и ID стадии маршрута
{
"routeEntityId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
"routeStageId": "00000000-0003-0000-0000-000000000000"
}
На выходе признак возможности голосовать для текущего пользователя
true
Проверка возможности голосовать по стадии сущности.
- Input: GetVoteAbility
- Output: Boolean (возможность голосовать)
| Команда | Путь |
|---|---|
| sed_voteAbility | Kafka Topic "sed_commands" |
UpdateStageSolution
На входе необходимые для обновления атрибуты Решения участника стадии, а также ID и версия
{
"id": "8f730a01-65ed-4864-af48-415f8edcc985",
"version": 1,
"data": {
"comment": "Новый комментарий"
}
}
На выходе признак успешности
true
Обновление Решения участника стадии.
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updateStageSolution | Kafka Topic "sed_commands" |
DeleteStageSolution
На входе ID Решения участника стадии
"8f730a01-65ed-4864-af48-415f8edcc985"
На выходе результат удаления
true
Удаление Решения участника стадии по идентификатору.
- На входе: UUID Решения участника стадии
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deleteStageSolution | Kafka Topic "sed_commands" |
GetStageHistory
На входе ID элемента Истории переходов
"8634e2f9-568c-45c7-9b91-3f6e864d8a7e"
На выходе атрибуты элемента Истории переходов
{
"id": "8634e2f9-568c-45c7-9b91-3f6e864d8a7e",
"entityType": "StageHistory",
"title": "StageHistory 8634e2f9-568c-45c7-9b91-3f6e864d8a7e",
"source": "sed",
"created": 1666245946610,
"modified": 1666245946610,
"version": 1,
"requestEntityType": "NmdRequest",
"requestId": "38910984-9df3-4862-bc23-54d414503c8a",
"requestVersionId": null,
"routeStageId": "00000000-0002-0000-0000-000000000000",
"cycleNumber": 1,
"targetDate": 1666677946199
}
Получение Истории переходов
- Input: UUID элемента Истории переходов
- Output: StageHistory
| Команда | Путь |
|---|---|
| sed_getStageHistory | HTTP POST "/v1/stage-history/get" |
ListStageHistories
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "",
"context": {},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждого элемента Истории переходов
{
"items": [
{
"id": "8634e2f9-568c-45c7-9b91-3f6e864d8a7e",
"entityType": "StageHistory",
"title": "StageHistory 8634e2f9-568c-45c7-9b91-3f6e864d8a7e",
"source": "sed",
"created": 1666245946610,
"modified": 1666245946610,
"version": 1,
"requestEntityType": "NmdRequest",
"requestId": "38910984-9df3-4862-bc23-54d414503c8a",
"requestVersionId": null,
"routeStageId": "00000000-0002-0000-0000-000000000000",
"cycleNumber": 1,
"targetDate": 1666677946199
}
],
"total": 1
}
Получение списка элементов Истории переходов с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[StageHistory]
| Команда | Путь |
|---|---|
| sed_listStageHistories | HTTP POST "/v1/stage-history/list" |
UpdateStageHistory
На входе необходимые для обновления атрибуты элемента Истории переходов, а также ID и версия
{
"id": "8634e2f9-568c-45c7-9b91-3f6e864d8a7e",
"version": 1,
"data": {
"requestVersionId": "5d73b201-15ed-5664-af48-d15f8edcc975"
}
}
На выходе признак успешности
true
Обновление Элемента истории переходов
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updateStageHistory | Kafka Topic "sed_commands" |
StagesInfo
На входе ID запроса
"8634e2f9-568c-45c7-9b91-3f6e864d8a7e"
На выходе список стадий с просрочками и версиями
[
{
"stageDetails": {
"id": "00000202-0003-0000-0000-000000000000",
"routeVersionId": "00000202-0000-0000-0000-000000000000",
"title": "Согласование изменений в план стандартизации КТ-202",
"description": "",
"created": 1667464957239,
"createdBy": "00000000-0000-0000-0000-000000000001",
"modified": 1667464957239,
"modifiedBy": "00000000-0000-0000-0000-000000000001",
"removed": false,
"version": 1,
"data": {
"type": "Review",
"number": 3,
"addTask": {
"details": {
"title": "Согласование изменений в план стандартизации КТ-202",
"description": ""
},
"responsible": [
{
"participantSubdivision": "8ea1dd6f-6038-4a7e-a169-c6882a9c8a36"
}
]
},
"participantRoles": [
"Владельцы процессов изменяемых документов",
"Менеджер процесса инициатора",
"Дополнительные согласующие"
],
"deadlineConditions": {
"fixed": 1
}
}
},
"stageHistory": [
{
"historyDetails": {
"id": "5a9f35bd-8975-4cfd-bdef-ded0f13dccf8",
"entityType": "StageHistory",
"title": "StageHistory 5a9f35bd-8975-4cfd-bdef-ded0f13dccf8",
"source": "sed",
"created": 1666699761311,
"modified": 1666699761311,
"version": 1,
"requestEntityType": "Plan",
"requestId": "273352b6-5225-4e90-9efc-ffd0a3150d25",
"requestVersionId": null,
"routeStageId": "00000202-0003-0000-0000-000000000000",
"cycleNumber": 1,
"targetDate": null
},
"overdue": false
}
],
"stageStatus": "current"
}
]
Получение списка стадий с просрочками и версиями
- Input: ID запроса
- Output: [List[StageInfo]]
| Команда | Путь |
|---|---|
| sed_stagesInfo | HTTP POST "/v1/stage-info/list" |
ListStageParticipants
На входе тип запроса, ID запроса и ID стадии
{
"requestType": "BusinessProcessRequest",
"requestId": "8c08fcd9-0539-49da-90f7-b90112581f0f",
"routeStageId": "00000001-0006-0000-0000-000000000000"
}
На выходе список участников стадии с информацией о функциональных группах и ответственных
{
"employees": [
{
"id": "00000000-0000-0000-0000-111111111111",
"firstName": "Иван",
"middleName": "Иванович",
"lastName": "Иванов",
"email": "ivanov@gazprom-neft.loc",
"post": "Руководитель",
"organization": {
"id": "00000000-0000-0000-0000-222222222222",
"shortTitle": "ПГПН",
"title": "ПАО Газпром нефть"
},
"subdivision": {
"id": "00000000-0000-0000-0000-333333333333",
"title": "Подразделение по контролю"
}
},
{
"id": "00000000-0000-0000-0000-111111111111",
"firstName": "Иван",
"middleName": "Иванович",
"lastName": "Иванов",
"email": "ivanov@gazprom-neft.loc",
"post": "Руководитель",
"organization": {
"id": "00000000-0000-0000-0000-222222222222",
"shortTitle": "ПГПН",
"title": "ПАО Газпром нефть"
},
"subdivision": {
"id": "00000000-0000-0000-0000-333333333333",
"title": "Подразделение по контролю"
}
}
],
"functionalGroupInfos": [
{
"id": "00000000-0000-0000-0000-000000000010",
"name": "FirstName",
"headEmployeeId": "00000000-0000-0000-0000-333333333333",
"email": "fg@example.com",
"systemModule": "NMD",
"description": "FirstName FG",
"responsible": "00000000-0000-0000-0000-555555555555"
},
{
"id": "00000000-0000-0000-0000-000000000011",
"name": "FirstName",
"headEmployeeId": "00000000-0000-0000-0000-666666666666",
"email": "fg@example.com",
"systemModule": "NMD",
"description": "FirstName FG",
"responsible": "00000000-0000-0000-0000-777777777777"
}
]
}
Получение списка участников стадии
- Input: RequestStageDTO
- Output: [List[EmployeeCNMD]]
| Команда | Путь |
|---|---|
| sed_listStageParticipants | HTTP POST "/v1/stage-info/list-stage-participants" |
EntitiesByRequest
На входе Search (entityType должен присутствовать в context, но отсутствовать в query)
{
"query": "request.id",
"context": {
"request.id": "e524fb3a-ef0b-4a24-9997-e646b0ada839",
"entityType": "NmdRequest"
}
}
На выходе список сущностей(владелец и участники) с числом комментариев
{
"items": [
{
"id": "e10da18f-8e00-43a1-a7d8-f32dcd008c49",
"title": "Типовая технологическая схема ЦПС",
"code": "Ш-50",
"entityType": "Nmd",
"files": [],
"orgBusinessProcessExtId": "07c9a8b6-9ebc-4c21-8004-4229d20f61f9",
"participants": [
{
"id": "d0fa65f0-fac9-44fe-99b5-27d4770f0587",
"title": "NmdParticipant d0fa65f0-fac9-44fe-99b5-27d4770f0587",
"code": "Ш-50",
"entityType": "NmdParticipant",
"files": [],
"orgBusinessProcessExtId": "bda5eaf1-0aa6-48f0-829c-e4c88bfc66ba",
"participants": null,
"commentsCount": 3
},
{
"id": "4dfa9270-0a8f-47dc-acd8-c9e314b18ee3",
"title": "NmdParticipant 4dfa9270-0a8f-47dc-acd8-c9e314b18ee3",
"code": "Ш-50",
"entityType": "NmdParticipant",
"files": [],
"orgBusinessProcessExtId": "bda5eaf1-0aa6-48f0-829c-e4c88bfc66ba",
"participants": null,
"commentsCount": 2
}
],
"commentsCount": 2
},
{
"id": "c6360a53-3a4c-4a7c-8afb-88c4f4c830f8",
"title": "",
"code": null,
"entityType": "ExplanatoryNote",
"files": [],
"orgBusinessProcessExtId": null,
"participants": null,
"commentsCount": 5
},
{
"id": "a60237f2-33f0-47b3-b3b6-c8131feff18a",
"title": "",
"code": null,
"entityType": "ImplementationPlan",
"files": [],
"orgBusinessProcessExtId": null,
"participants": null,
"commentsCount": 2
}
],
"commentsCount": 14,
"requestId": "e524fb3a-ef0b-4a24-9997-e646b0ada839"
}
Получение списка привязанных к запросу объектов с числом комментариев
- Input: Search
- Output: PageWithCommentsCount
| Команда | Путь |
|---|---|
| sed_listEntitiesByRequest | HTTP POST "/v1/entities-by-request/list" |
SendDecisionNotification
На входе ID и тип запроса
{
"entityType": "NmdRequest",
"requestId": "8634e2f9-568c-45c7-9b91-3f6e864d8a7e"
}
Отправляет уведомления о необходимости принятия решения на стадии
true
Получение списка стадий с просрочками и версиями
- Input: RequestIdWithType
- Output: [Boolean]
| Команда | Путь |
|---|---|
| sed_sendDecisionNotification | Kafka Topic "sed_commands" |
CreateBusinessProcessOwner
На входе
{
"hierarchyType": "Category",
"requestId": "03ae21dc-65ca-4f40-be46-15e712f10447"
}
На выходе
"947c5617-7fda-4c40-b2b0-95cde22b55bb"
Описание
- Input: BusinessProcessOwnerCreateDTO
- Output: uuid созданного бп
| Команда | Путь |
|---|---|
| sed_createBusinessProcessOwner | Kafka Topic "sed_commands" |
CreateBusinessProcessParticipant
На входе
{
"organizationId": "00404b2f-7287-453e-a6fa-f95409914e0d",
"businessProcessId": "947c5617-7fda-4c40-b2b0-95cde22b55bb"
}
На выходе
"f2c8ad92-f6c0-4adb-866a-65d615a09446"
Описание
- Input: BusinessProcessParticipantCreateDTO
- Output: uuid созданного бп
| Команда | Путь |
|---|---|
| sed_createBusinessProcessParticipant | Kafka Topic "sed_commands" |
CopyBusinessProcessOwner
На входе
{
"businessProcessId": "1a153381-1b3c-4735-bf69-d7c876d42df7",
"requestId": "03ae21dc-65ca-4f40-be46-15e712f10447",
"action": "Create"
}
На выходе
"6a03e7a9-c4d0-4645-a92f-1f54c40652f7"
Описание
- Input: BusinessProcessOwnerCopyDTO
- Output: uuid созданного бп
| Команда | Путь |
|---|---|
| sed_copyBusinessProcessOwner | Kafka Topic "sed_commands" |
CopyBusinessProcessParticipant
На входе
{
"businessProcessId": "869dac66-f400-46a4-a1d2-bccae7709c76",
"requestId": "03ae21dc-65ca-4f40-be46-15e712f10447",
"action": "Create"
}
На выходе
"1fdebb63-7786-4b03-ae0a-265ffbe07148"
Описание
- Input: BusinessProcessParticipantCopyDTO
- Output: uuid созданного бп
| Команда | Путь |
|---|---|
| sed_copyBusinessProcessParticipant | Kafka Topic "sed_commands" |
GetBusinessProcessOwner
На входе
"554e379e-2b73-4e26-83a9-e5b13522740d"
На выходе
{
"id": "554e379e-2b73-4e26-83a9-e5b13522740d",
"entityType": "BusinessProcessOwner",
"source": "sed",
"title": "Ещё один",
"created": 1668427009960,
"modified": 1668427009960,
"version": 1,
"requestId": "03ae21dc-65ca-4f40-be46-15e712f10447",
"readOnly": true,
"hierarchyType": "Group",
"organizationId": "c6e173e4-78ff-4ce4-aa93-ed54f1bde7e8",
"businessProcessExtId": "6e6ccc9d-5787-4eca-a0c5-d22541bd19de",
"ancestorProcessesIds": [
"cd8903c8-ffa4-4598-9009-8394fde2bc99"
],
"code": "00.01",
"simpleDuplication": false,
"visaLaw": true,
"setOperationTypicalRequirements": false,
"processType": null,
"organizationOwnerId": "c6e173e4-78ff-4ce4-aa93-ed54f1bde7e8",
"ownerId": "27d9c6a6-3a07-4664-a816-5f9ce8dff553",
"methConfirmId": null,
"standardGroupRUSId": "27d9c6a6-3a07-4664-a816-5f9ce8dff553",
"cKPersonsIds": [],
"otvISAPId": null,
"shortDescription_Plain": "",
"target": "",
"metrics": "",
"risks": "",
"processIn": "",
"processOut": "",
"borderLine": "",
"processMembers": "",
"stages": "",
"bProcessAroundID": [],
"bProcessAround2ID": [],
"statusSVK": "",
"automation": "",
"methApproveIds": [],
"functionRepresentativeIds": [],
"businessProcessParticipant": [
"1fdebb63-7786-4b03-ae0a-265ffbe07148"
],
"functionRepresentativeLocalIds": [],
"action": "Create",
"selfRegulatingProcess": true,
"feedbackResponsibleIds": [],
"contactPersonISId": null
}
Описание
- Input: uuid бп
- Output: BusinessProcessOwner + functionRepresentativeLocalIds (агрегация полей functionRepresentativeLocalIds участников)
| Команда | Путь |
|---|---|
| sed_getBusinessProcessOwner | HTTP POST "/v1/business-process/get-owner" |
GetBusinessProcessParticipant
На входе
"1fdebb63-7786-4b03-ae0a-265ffbe07148"
На выходе
{
"id": "1fdebb63-7786-4b03-ae0a-265ffbe07148",
"entityType": "BusinessProcessParticipant",
"source": "sed",
"title": "Ещё один",
"created": 1668427010327,
"modified": 1668427010327,
"version": 1,
"requestId": "03ae21dc-65ca-4f40-be46-15e712f10447",
"originalId": null,
"readOnly": false,
"hierarchyType": "Group",
"organizationId": "a510bb32-50ae-4f4a-b479-1a9e8ea3f62a",
"businessProcessExtId": "869dac66-f400-46a4-a1d2-bccae7709c76",
"ancestorProcessesIds": [
"cd8903c8-ffa4-4598-9009-8394fde2bc99"
],
"code": "00.01",
"simpleDuplication": false,
"visaLaw": true,
"setOperationTypicalRequirements": false,
"processType": null,
"organizationOwnerId": "c6e173e4-78ff-4ce4-aa93-ed54f1bde7e8",
"ownerId": "27d9c6a6-3a07-4664-a816-5f9ce8dff553",
"methConfirmId": null,
"standardGroupRUSId": null,
"cKPersonsIds": [],
"otvISAPId": null,
"shortDescription_PlainLocal": "Краткое описание",
"target": "",
"metrics": "",
"risks": "",
"processIn": "",
"processOut": "",
"borderLine": "",
"processMembers": "",
"stages": "",
"bProcessAroundID": [],
"bProcessAround2ID": [],
"statusSVK": "",
"automation": "",
"methApproveIds": [],
"functionRepresentativeIds": [],
"simpleDuplicationLocal": null,
"managerId": null,
"standardGroupRUSLocalId": "00404b2f-7287-453e-a6fa-f95409914e0d",
"methConfirmLocalId": null,
"methApproveLocalIds": [],
"functionRepresentativeLocalIds": [],
"businessProcessOwner": "554e379e-2b73-4e26-83a9-e5b13522740d",
"action": "Create",
"selfRegulatingProcess": true,
"feedbackResponsibleLocalIds": [],
"contactPersonISLocalId": null
}
Описание
- Input: uuid
- Output: все поля BusinessProcessParticipant + недостающие поля BusinessProcessOwner
| Команда | Путь |
|---|---|
| sed_getBusinessProcessParticipant | HTTP POST "/v1/business-process/get-participant" |
ListBusinessProcessOwners
На входе
{
"query": "request.data.id",
"context": {
"request.data.id": "03ae21dc-65ca-4f40-be46-15e712f10447"
},
"paging": {
"page": 1,
"count": 1
}
}
На выходе
{
"items": [
{
"businessProcessOwner": {
"id": "a9b56d38-94e9-4e65-a8e1-536d58775ba6",
"entityType": "BusinessProcessOwner",
"source": "sed",
"title": "",
"created": 1668425256498,
"modified": 1668425256498,
"version": 1,
"originalId": null,
"requestId": null,
"readOnly": true,
"hierarchyType": "Category",
"organizationId": null,
"businessProcessExtId": null,
"ancestorProcessesIds": [],
"code": "",
"simpleDuplication": null,
"visaLaw": true,
"setOperationTypicalRequirements": false,
"processType": null,
"organizationOwnerId": null,
"ownerId": null,
"methConfirmId": "27d9c6a6-3a07-4664-a816-5f9ce8dff553",
"standardGroupRUSId": null,
"cKPersonsIds": [],
"otvISAPId": null,
"shortDescription_Plain": "",
"target": "",
"metrics": "",
"risks": "",
"processIn": "",
"processOut": "",
"borderLine": "",
"processMembers": "",
"stages": "",
"bProcessAroundID": [],
"bProcessAround2ID": [],
"statusSVK": "",
"automation": "",
"methApproveIds": [],
"functionRepresentativeIds": [],
"businessProcessParticipant": null,
"action": "Create",
"selfRegulatingProcess": true,
"feedbackResponsibleIds": [],
"contactPersonISId": null
},
"participants": []
}
],
"total": 5
}
Описание
- Input: Search
- Output: Page[BusinessProcessesListDTO]
| Команда | Путь |
|---|---|
| sed_listBusinessProcessOwners | HTTP POST "/v1/business-process/list-owner" |
ListBusinessProcessParticipants
На входе
{
"query": "businessProcessOwner.data.id",
"context": {
"businessProcessOwner.data.id": "947c5617-7fda-4c40-b2b0-95cde22b55bb"
}
}
На выходе
{
"items": [
{
"id": "f2c8ad92-f6c0-4adb-866a-65d615a09446",
"entityType": "BusinessProcessParticipant",
"source": "sed",
"created": 1668426248813,
"modified": 1668426248813,
"version": 1,
"originalId": null,
"readOnly": false,
"businessProcessExtId": null,
"organizationId": "00404b2f-7287-453e-a6fa-f95409914e0d",
"simpleDuplicationLocal": null,
"managerId": null,
"standardGroupRUSLocalId": "00404b2f-7287-453e-a6fa-f95409914e0d",
"methConfirmLocalId": null,
"methApproveLocalIds": [],
"functionRepresentativeLocalIds": [],
"businessProcessOwner": "947c5617-7fda-4c40-b2b0-95cde22b55bb",
"feedbackResponsibleIds": [],
"contactPersonISId": null
}
],
"total": 1
}
Описание
- Input: Search
- Output: Page[BusinessProcessParticipant]
| Команда | Путь |
|---|---|
| sed_listBusinessProcessParticipants | HTTP POST "/v1/business-process/list-participants" |
UpdateBusinessProcessOwner
На входе
{
"id": "554e379e-2b73-4e26-83a9-e5b13522740d",
"version": 1,
"data": {
"readOnly": false
}
}
На выходе
true
Описание
- Input: UpdateDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| sed_updateBusinessProcessOwner | Kafka Topic "sed_commands" |
UpdateBusinessProcessParticipant
На входе
{
"id": "1fdebb63-7786-4b03-ae0a-265ffbe07148",
"version": 1,
"data": {
"readOnly": false
}
}
На выходе
true
Описание
- Input: UpdateDTO
- Output: Boolean
| Команда | Путь |
|---|---|
| sed_updateBusinessProcessParticipant | Kafka Topic "sed_commands" |
DeleteBusinessProcessOwner
На входе список id БП владельцев
[
"554e379e-2b73-4e26-83a9-e5b13522740d"
]
На выходе
true
Описание
- Input: список uuid БП владельцев
- Output: Boolean
| Команда | Путь |
|---|---|
| sed_deleteBusinessProcessOwner | Kafka Topic "sed_commands" |
DeleteBusinessProcessParticipant
На входе список id БП участников
[
"1fdebb63-7786-4b03-ae0a-265ffbe07148"
]
На выходе
true
Описание
- Input: список uuid БП участников
- Output: Boolean
| Команда | Путь |
|---|---|
| sed_deleteBusinessProcessParticipant | Kafka Topic "sed_commands" |
ListCodesAndTitlesBusinessProcesses
На входе
{
"query": "organizationId",
"context": {
"organizationId": "03ae21dc-65ca-4f40-be46-15e712f10447"
},
"paging": {
"page": 1,
"count": 1
}
}
На выходе
{
"items": [
{
"id": "554e379e-2b73-4e26-83a9-e5b13522740d",
"code": "01.01.01.01.01.01",
"title": "Процесс кодовый и тайтловый"
}
],
"total": 100000
}
В команде работают все теже фильтры, что и в команде ListBusinessProcessOwners
- Input: Search
- Output: Page[IdWithCodeAndTitle]
| Команда | Путь |
|---|---|
| sed_listBusinessProcessCodesAndTitles | HTTP POST "/v1/business-process/list-codes-and-titles" |
ChangeBusinessProcessToGroup
На входе
"554e379e-2b73-4e26-83a9-e5b13522740d"
На выходе
true
Описание
- Input: uuid
- Output: Boolean
| Команда | Путь |
|---|---|
| sed_сhangeBusinessProcessToGroup | Kafka Topic "sed_commands" |
ChangeGroupToBusinessProcess
На входе
"554e379e-2b73-4e26-83a9-e5b13522740d"
На выходе
true
Описание
- Input: uuid
- Output: Boolean
| Команда | Путь |
|---|---|
| sed_сhangeGroupToBusinessProcess | Kafka Topic "sed_commands" |
GetBusinessProcessPublishLegacy
На входе ID Бизнес процесса к публикации
"dddf6bac-aeed-44f7-a776-4727a74389ec"
На выходе Legacy-представление атрибутов Плановой Записи
{
"ISSCID": "30743A15A8C2407CA7D0FE1762377CDF",
"Name": "BusinessProcessOwnerPublish 435d9ac9-03cc-4de3-8889-bab0589ff35e",
"Key": "14",
"ParentKey": "",
"Type": "common",
"IsTemplate": "",
"ProcessType": "Основной",
"BProcessLevel": "do",
"Status": "утвержден",
"PersonName": "Кравченко Кирилл Альбертович",
"PersonPos": "Заместитель Генерального директора по организационным вопросам",
"ManagerName": "",
"ManagerPos": "",
"CompanyName": "АО \"Газпромнефть-Аэро\"",
"CompanyKey": "Аэро",
"CompanyNameLocal": "ООО \"Автоматика-Сервис\"",
"CompanyKeyLocal": "Автоматика Сервис",
"Modified": "2023-02-27T11:38:45Z",
"URLDocument": null,
"SimpleDuplication": null,
"ShortDescription_Plain": "Owner, Аэро",
"MethConfirmPersons": [],
"MethConfirmPersonsPos": [],
"StandardGroup": [],
"StandardGroupRUS": [
"Бобрикова Юлия Васильевна"
],
"StandardGroupLocal": [],
"StandardGroupRUSLocal": [],
"CKPersons": [
"Ситникова Надежда Владимировна"
],
"Target": "",
"Metrics": "",
"Risks": "",
"ProcessIn": "",
"ProcessOut": "",
"BorderLine": "",
"ProcessMembers": "",
"Stages": "",
"BProcessAroundID": [],
"BProcessAroundOwner": [],
"BProcessAroundOwnerID": [],
"BProcessAroundCompany": [],
"BProcessAroundCompanyID": [],
"BProcessAround2ID": [],
"BProcessAround2Owner": [],
"BProcessAround2OwnerID": [],
"BProcessAround2Company": [],
"BProcessAround2CompanyID": [],
"StatusSVK": "",
"Automation": "",
"ParentProcessId": null,
"STAGESCREENSETNAMEDP": "Category",
"VisaLaw": "yes",
"KBE": "",
"OtvISAP": "Кабанов Дмитрий Сергеевич",
"ParentREF": null
}
Получение Бизнес процесса к публикации (Legacy-представление) по идентификатору.
- Input: ID Бизнес процесса к публикации
- Output: LegacyBusinessProcess
ListBusinessProcessPublishLegacy
На входе ничего
На выходе полный список Бизнес процессов к публикации (Legacy-представление)
[
{
"@unid": "A2519D0A29FD488082A7500F4D320094",
"LastModifiedDate": "2022-11-13T11:11:54Z"
}
]
Получение полного списка Бизнес процессов к публикации с датой последнего изменения.
- Input: -
- Output: List[LegacyDocumentListItem]
CreateAdditionalDocument
Входят такие команды как:
| Команда | Описание |
|---|---|
| sed_createExplanatoryNote | Создание пояснительной записки |
| sed_createAccompanyingFile | Создание сопроводительный файл |
| sed_createImplementationPlan | Создание плана мероприятий по внедрению НМД |
На входе ID Запроса Согласование НМД
{
"requestId": "680681ff-8033-43f2-8636-66e88836c0f9"
}
На выходе ID Доп. Документа
"196a455f-7ae0-4d42-81fd-444d69f03fc6"
Создание нового доп. документа с автоматическим заполнением обязательных атрибутов.
- Input: AdditionalDocumentCreateDTO
- Output: UUID Запроса Согласование НМД
| Команда | Путь |
|---|---|
| sed_createExplanatoryNote | Kafka Topic "sed_commands" |
| sed_createAccompanyingFile | Kafka Topic "sed_commands" |
| sed_createImplementationPlan | Kafka Topic "sed_commands" |
GetAdditionalDocument
Входят такие команды как:
| Команда | Описание |
|---|---|
| sed_getExplanatoryNote | Получение пояснительной записки |
| sed_getAccompanyingFile | Получение сопроводительный файл |
| sed_getImplementationPlan | Получение плана мероприятий по внедрению НМД |
На входе ID Доп. документа
"196a455f-7ae0-4d42-81fd-444d69f03fc6"
На выходе атрибуты Доп. документа
{
"id": "196a455f-7ae0-4d42-81fd-444d69f03fc6",
"entityType": "ExplanatoryNote",
"title": "title",
"source": "sed",
"created": 1664196229075,
"modified": 1664196229075,
"version": 1,
"authorId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"authorEmployeeId": "5d73b201-15ed-5664-af48-d15f8edcc975",
"requestId": "680681ff-8033-43f2-8636-66e88836c0f9"
}
Получение Доп. документа по идентификатору.
- Input: UUID Доп. документа
- Output: AdditionalDocument
| Команда | Путь |
|---|---|
| sed_getExplanatoryNote | HTTP POST "/v1/implementation-plan/get" |
| sed_getAccompanyingFile | HTTP POST "/v1/explanatory-note/get" |
| sed_getImplementationPlan | HTTP POST "/v1/accompanying-file/get" |
ListAdditionalDocuments
Входят такие команды как:
| Команда | Описание |
|---|---|
| sed_listExplanatoryNotes | Получение списка пояснительных записок |
| sed_listAccompanyingFiles | Получение списка сопроводительных файлов |
| sed_listImplementationPlans | Получение списка планов мероприятий по внедрению НМД |
| sed_listAdditionalDocuments | Получение списка всех AdditionalDocuments |
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
{
"query": "request.id",
"context": {
"request.id": "6de0cbe8-bf96-4879-adaa-e9eb2d21599e"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список атрибутов каждого Доп. документа
{
"items": [
{
"id": "196a455f-7ae0-4d42-81fd-444d69f03fc6",
"entityType": "ExplanatoryNote",
"title": "title",
"source": "sed",
"created": 1664196229075,
"modified": 1664196229075,
"version": 1,
"authorId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
"authorEmployeeId": "5d73b201-15ed-5664-af48-d15f8edcc975",
"requestId": "6de0cbe8-bf96-4879-adaa-e9eb2d21599e"
}
],
"total": 1
}
Получение списка Доп. документов с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[AdditionalDocument]
| Команда | Путь |
|---|---|
| sed_listExplanatoryNotes | HTTP POST "/v1/implementation-plan/list" |
| sed_listAccompanyingFiles | HTTP POST "/v1/explanatory-note/list" |
| sed_listImplementationPlans | HTTP POST "/v1/accompanying-file/list" |
| sed_listAdditionalDocuments | HTTP POST "/v1/additional-document/list" |
UpdateAdditionalDocument
Входят такие команды как:
| Команда | Описание |
|---|---|
| sed_updateExplanatoryNote | Обновление пояснительной записки |
| sed_updateAccompanyingFile | Обновление сопроводительного файла |
| sed_updateImplementationPlan | Обновление плана мероприятий по внедрению НМД |
На входе необходимые для обновления атрибуты Доп. документа, а также ID и версия
{
"id": "196a455f-7ae0-4d42-81fd-444d69f03fc6",
"version": 1,
"data": {
"title": "updatedTitle"
}
}
На выходе признак успешности
true
Обновление Доп. документа
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updateExplanatoryNote | Kafka Topic "sed_commands" |
| sed_updateAccompanyingFile | Kafka Topic "sed_commands" |
| sed_updateImplementationPlan | Kafka Topic "sed_commands" |
DeleteAdditionalDocument
Входят такие команды как:
| Команда | Описание |
|---|---|
| sed_deleteExplanatoryNote | Удаление пояснительной записки |
| sed_deleteAccompanyingFile | Удаление сопроводительного файла |
| sed_deleteImplementationPlan | Удаление плана мероприятий по внедрению НМД |
На входе список ID Доп. документа (для каждого вида доп. документа отдельный запрос)
[
"196a455f-7ae0-4d42-81fd-444d69f03fc6"
]
На выходе результат удаления
true
Удаление Доп. документа по ID
- На входе: список UUID Доп. документа
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deleteExplanatoryNote | Kafka Topic "sed_commands" |
| sed_deleteAccompanyingFile | Kafka Topic "sed_commands" |
| sed_deleteImplementationPlan | Kafka Topic "sed_commands" |
StartRoute
Тип запроса и payload для его создания
{
"requestType": "InternalApprovalRequest",
"data": {
"entityType": "BusinessProcessRequest",
"requestId": "03ae21dc-65ca-4f40-be46-15e712f10447"
}
}
На выходе id запроса
"9154eb65-6c14-4b83-b35d-7162bdb92e0d"
Запускает маршрут по запросу
- На входе: StartRouteDTO
- На выходе: UUID
| Команда | Путь |
|---|---|
| sed_startRoute | Kafka Topic "sed_commands" |
MoveNmdToPlanRequest
Тип запроса и payload для его создания
{
"nmdRequestId": "9154eb65-6c14-4b83-b35d-7162bdb92e0d"
}
На выходе id запроса
"a154eb65-6c14-4b83-b35d-7162bdb92e0a"
Запускает маршрут КТ-202 по запросу из маршрута НМД с плановыми записями из запроса. Архивирует маршрут НМД.
- На входе: MoveNmdToPlanRequestDTO
- На выходе: UUID
| Команда | Путь |
|---|---|
| sed_moveNmdToPlanRequest | Kafka Topic "sed_commands" |
StartRouteCustom
Тип запроса и payload для его создания, data пустой или поля запроса
{
"entityType": "RequestCustom",
"route": "RequestCustomRoute",
"data": {}
}
На выходе id запроса
"9154eb65-6c14-4b83-b35d-7162bdb92e0d"
Запускает маршрут по запросу
- На входе: StartRouteCustomDTO
- На выходе: UUID
| Команда | Путь |
|---|---|
| sed_startRouteCustom | Kafka Topic "sed_commands" |
CheckDocumentCodeAndTitle
На входе CheckDoc
{
"title": "Организация взаимодействия с ФОГВ и общественными организациями",
"code": "99",
"excludeDocId": "7f3d0cf4-7a51-4507-8d6c-2580d63bdede",
"currentDocId": "218d64cb-dd33-4925-9ee1-8e1890fa0183"
}
На выходе true, если совпадений не найдено, либо ошибка при обнаружении совпадений со списком документов
[
{
"error": "PlanSameTitleError",
"documents": [
{
"id": "218d64cb-dd33-4925-9ee1-8e1890fa0183",
"code": "М-12.02.06-09",
"title": "Требования ИБ к процессу ведения разработок в ИС Oracle Hyperion",
"entityType": "Nmd",
"system": "cnmd"
},
{
"id": "57ee4394-c571-4a69-b0b4-0021463a7a50",
"code": "М-12.02.06-08",
"title": "Требования ИБ к процессу ведения разработок в ИС Oracle Hyperion",
"entityType": "Plan",
"system": "sed",
"requestId": "196a455f-7ae0-4d42-81fd-444d69f03fc6"
}
]
}
]
Возвращает совпавшие документы
- Input: CheckDoc
- Output: Boolean при отсутствии совпадения, либо ErrorResponse с data - List[SameDocuments]
Существуют следующие ошибки:
- PlanSameTitleError - Найдена плановая запись с таким же наименованием
- PlanSameCodeError - Найдена плановая запись с таким же обозначением
- PlanSameTitleAndCodeError - Найдена плановая запись с таким же обозначением и наименованием
- NmdSameTitleError - Найден документ с таким же наименованием
- NmdSameCodeError - Найден документ с таким же обозначением
- NmdSameTitleAndCodeError - Найден документ с таким же обозначением и наименованием
| Команда | Путь |
|---|---|
| sed_checkDocumentCodeAndTitle | HTTP POST "/v1/document/check-code-and-title" |
CheckBpParticipantsForCancel
На входе список Id БП-участников
[
"17a575f5-3da2-4b62-82a2-9c6a093255db",
"acfc97e3-22aa-410a-b458-3dfded0e1247"
]
На выходе несколько списков с найденными ошибками, и без ошибок CheckObpsForCancelResult
{
"orgBpInAnotherRequestError": [
{
"number": "000874",
"authorEmployeeId": "a4184bab-9c35-4190-932a-1731ca7cca0e",
"id": "7d113eff-ee70-4af8-928d-94f29501bafc",
"externalId": null,
"entityType": "BusinessProcessRequest",
"title": "BusinessProcessRequest 7d113eff-ee70-4af8-928d-94f29501bafc",
"created": 1679989028384,
"modified": 1680583754658
}
],
"bpsWithActiveDocsEmptyAction": [
{
"id": "9154eb65-6c14-4b83-b35d-7162bdb92e0d",
"orgId": "75b10fab-c9d3-48c4-8547-528c90260afa"
}
],
"bpsWithActiveDocsChangeAction": [
{
"id": "9154eb65-6c14-4b83-b35d-7162bdb92e0d",
"orgId": "75b10fab-c9d3-48c4-8547-528c90260afa"
}
],
"bpsWithoutErrorCreateAction": [
{
"id": "9154eb65-6c14-4b83-b35d-7162bdb92e0d",
"orgId": "75b10fab-c9d3-48c4-8547-528c90260afa"
}
],
"bpsWithoutErrorOtherActions": [
{
"id": "9154eb65-6c14-4b83-b35d-7162bdb92e0d",
"orgId": "75b10fab-c9d3-48c4-8547-528c90260afa"
}
]
}
Запускает маршрут по запросу
- На входе: StartRouteDTO
- На выходе: UUID
| Команда | Путь |
|---|---|
| sed_checkBpParticipantsForCancel | Kafka Topic "sed_commands" |
ListRecommendationGroups
На входе ListRecommendationGroupsDTO
{
"entityId": "a8e6bcc7-08f9-42ea-8ec9-ed6f612782b6",
"classCode": "classCode",
"routeStageId": "9f3a17e5-6698-4f0a-9d3d-75ee2e3746f0"
}
На выходе PageRecommendationGroupWithActionDTO
{
"items": [
{
"id": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"code": "code",
"classCode": "QuarterlyPlanRequest",
"entityId": "00000000-0000-0000-0000-000000000001",
"data": {},
"isFilled": false,
"action": "addToGroup",
"created": 1661866284080,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1661866284080,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1,
"recommendationCount": 5
}
],
"total": 1
}
Получает список списков предложений
- На входе: ListRecommendationGroupsDTO
- На выходе: PageRecommendationGroupWithActionDTO
| Команда | Путь |
|---|---|
| sed_listRecommendationGroups | HTTP POST "/v1/recommendation-group/list" |
GetRecommendationGroupToAdd
На входе ListRecommendationGroupsDTO
{
"entityId": "a8e6bcc7-08f9-42ea-8ec9-ed6f612782b6",
"classCode": "classCode",
"routeStageId": "9f3a17e5-6698-4f0a-9d3d-75ee2e3746f0"
}
На выходе OptionRecommendationGroupListDTO
{
"id": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"code": "code",
"classCode": "QuarterlyPlanRequest",
"entityId": "00000000-0000-0000-0000-000000000001",
"data": {},
"isFilled": false,
"created": 1661866284080,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1661866284080,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1,
"recommendationCount": 10
}
Получает список предложений, в который можно добавить предложения на текущей стадии
- На входе: ListRecommendationGroupsDTO
- На выходе: OptionRecommendationGroupListDTO
| Команда | Путь |
|---|---|
| sed_getRecommendationGroupToAdd | HTTP POST "/v1/recommendation-group/get" |
ListRecommendations
На входе ListRecommendationsDTO
{
"recommendationGroupId": "a69a9def-60db-40bb-8492-4122e65490dd",
"routeStageId": "2277b688-b479-40f1-adac-a26d203a5837",
"search": {
"query": "issuanceDate",
"context": {
"issuanceDate": "2014-10-01",
"documentQuery": "Ш023-34.10 Пример названия документа"
},
"paging": {
"page": 1,
"count": 5
}
}
}
На выходе PageRecommendationListDTO
{
"items": [
{
"id": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"classCode": "DocumentVersion",
"entityId": "24404bb3-fc1e-4388-ac4b-9c99beb89e91",
"recommendationType": "type",
"comment": "comment",
"answer": "answer",
"developmentReason": "reason",
"developmentDate": 1661866284080,
"planId": null,
"reviewCount": 3,
"created": 1661866284080,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1661866284080,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1
}
],
"total": 1
}
Получает предложения для списка предложений. В сущности Search, находящейся в соответствующем поле, кроме стандартного набора данных для фильтрации и сортировки, напрямую передаваемых в базу, также можно внутри объекта "context" в поле "documentQuery" указать поисковый запрос, содержащий код и/или наименование документа, к которому будут относиться запрашиваемые предложения.
- На входе: ListRecommendationsDTO
- На выходе: PageRecommendationListDTO
| Команда | Путь |
|---|---|
| sed_listRecommendations | HTTP POST "/v1/recommendation/list" |
CreateJobDescription
На входе CreateJobDescriptionDTO
На выходе ID Должностной инструкции
Создание нового доп. документа с автоматическим заполнением обязательных атрибутов.
- Input: CreateJobDescriptionDTO
- Output: UUID Запроса Согласование НМД
| Команда | Путь |
|---|---|
| sed_createJobDescription | Kafka Topic "sed_commands" |
GetJobDescription
На входе ID Должностной инструкции
На выходе атрибуты Должностной инструкции
Получение Должностной инструкции по идентификатору.
- Input: UUID Должностной инструкции
- Output: JobDescription
| Команда | Путь |
|---|---|
| sed_getJobDescription | HTTP POST "/v1/job-description/get" |
InternalGetJobDescription
На входе ID Должностной инструкции
На выходе атрибуты Должностной инструкции
Получение Должностной инструкции по идентификатору. Внутренняя команда.
- Input: UUID Должностной инструкции
- Output: JobDescription
| Команда | Путь |
|---|---|
| sed_internalGetJobDescription | HTTP POST "/v1/job-description/internal-get" |
GetJobDescriptionWithConfirmEmployeeInfo
На входе ID Должностной инструкции
На выходе атрибуты Должностной инструкции
{
"jobDescription": {
атрибуты
карточки
ДИ
},
"confirmEmployeePosition": "Заместитель Генерального директора по организационным вопросам",
"confirmEmployeeSubdivision": "Блок организационных вопросов",
"confirmEmployeeFullName": "Кравченко Кирилл Альбертович"
}
Получение Должностной инструкции по идентификатору с дополнительными данными по утверждающему Внутренняя команда.
- Input: UUID Должностной инструкции
- Output: JobDescriptionWithEmployeeInfo
| Команда | Путь |
|---|---|
| sed_getJobDescriptionWithEmployeeInfo | HTTP POST "/v1/job-description/get-job-description-with-confirm-employee-info" |
ListJobDescriptions
На входе пустое тело, либо параметры фильтрации, сортировки и пагинации
На выходе список атрибутов каждого Доп. документа
Получение списка Доп. документов с фильтрацией, сортировкой и пагинацией.
- Input: Search
- Output: Page[JobDescription]
| Команда | Путь |
|---|---|
| sed_listJobDescriptions | HTTP POST "/v1/job-description/list" |
UpdateJobDescription
На входе необходимые для обновления атрибуты Должностной инструкции, а также ID и версия
На выходе признак успешности
Обновление Должностной инструкции
Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно
явно передать null.
- На входе: UpdateDTO
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_updateJobDescription | Kafka Topic "sed_commands" |
DeleteJobDescription
На входе ID Должностной инструкции
На выходе результат удаления
Удаление Доп. документа по ID
- На входе: UUID Должностной инструкции
- На выходе: Boolean
| Команда | Путь |
|---|---|
| sed_deleteJobDescription | Kafka Topic "sed_commands" |
RequestAuthorForcedChange
Данные запроса и id сотрудника для смены автора
{
"request": {
"entityType": "InternalApprovalRequest",
"objectId": "9154eb65-6c14-4b83-b35d-7162bdb92e0d"
},
"authorEmployeeId": "03ae21dc-65ca-4f40-be46-15e712f10447"
}
На выходе пустое тело запроса
Смена автора запроса
- На входе: RequestAuthorForcedChangeDTO
- На выходе: -
| Команда | Путь |
|---|---|
| sed_requestAuthorForcedChange | Kafka Topic "sed_commands" |
StageParticipantsChange
На входе тип запроса, ID запроса, список ID(EmployeeId из цнмд) удаляемых участников, список ID(EmployeeId из цнмд) новых участников
{
"requestType": "NmdRequest",
"requestId": "405106a6-a749-444c-828f-19b90b34f3b9",
"deletedParticipantsIds": [
"6afde98c-3522-4572-b351-de7d4e1b4e0b"
],
"newParticipantsIds": [
"6afde98c-3522-4572-b351-de7d4e1b4e0b"
]
}
На выходе пустое тело запроса
Редактирование списка участников стадий запросов
- На входе: StageParticipantsChangeDTO
- На выходе: -
| Команда | Путь |
|---|---|
| sed_stageParticipantsChange | Kafka Topic "sed_commands" |
CreateArisDocument
На входе UUID документа Nmd из Datamodel и UUID выбранной модели
{
"nmdId": "6afde98c-3522-4572-b351-de7d4e1b4e0b",
"modelId": "405106a6-4532-5564-c453-2dfgce212f"
}
На выходе пустое тело запроса
Создание файла НМД из файла модели (схемы) и полей сущности НМД и связанных с ней.
Пример json, который будет отправлен в сервис печатных форм Erika:
{
"nmd": {
"id": "fa4c6f20-e535-4e61-b5db-d2ff2febcd51",
"title": "ТИРАЖ - ПЗ - ДА",
"noOwnerOrganizationApproval": false,
"legalFunctionAgreement": false,
"nmdKind": "NMDKind_05",
"documentCode": "Тираж-01",
"documentIndex": null,
"number": "1.0",
"developmentType": "DevelopmentType_4",
"planningApprovalDate": "980c6612-1057-4ee4-8532-0ce4b0f5c22",
"developmentReason": "",
"developmentReasonManual": "",
"developmentPriority": null,
"developmentPriorityCatalog": null,
"action": "Create",
"localNmd": null,
"orgBusinessProcess": {
"id": "8c7622b9-edc3-4203-97d9-3b2eac74609e",
"code": "08",
"title": "Управление документацией и информацией",
"groups": [
],
"category": {
"id": "8c7622b9-edc3-4203-97d9-3b2eac74609e",
"code": "08",
"title": "Управление документацией и информацией"
}
},
"nmdOwnerOrganization": {
"id": "0095e467-4e9d-4dce-ac0b-c18ec8e4739f",
"shortTitle": "Энергосервис",
"title": "ООО «Газпромнефть-Энергосервис»"
},
"author": {
"id": "496e6020-9fbe-4582-992f-c6c38ab83152",
"firstName": "Кирилл",
"middleName": "Альбертович",
"lastName": "Кравченко",
"email": "ZGD_ORG@gazprom-neft.loc",
"post": "Заместитель Генерального директора по организационным вопросам",
"organization": {
"id": "05602058-9877-42c2-8e62-731458829978",
"shortTitle": "ПГПН",
"title": "ПАО Газпром нефть"
},
"subdivision": {
"id": "f55b0d5f-5ced-4b8e-a222-beed052f4e09",
"title": "Блок организационных вопросов"
}
},
"coauthors": [
],
"owner": {
"id": "db465a37-b5e6-4504-830a-516a7ce10cab",
"firstName": "Светлана",
"middleName": "Валерьевна",
"lastName": "Дроганова",
"email": "Droganova.SV@gazprom-neft.loc",
"post": "Начальник управления",
"organization": {
"id": "05602058-9877-42c2-8e62-731458829978",
"shortTitle": "ПГПН",
"title": "ПАО Газпром нефть"
},
"subdivision": {
"id": "83d9a83c-bd49-4de1-bec5-320915eef08b",
"title": "Управление административной поддержки бизнеса"
}
},
"manager": {
"id": "9a399bf6-ef30-41ba-b7d8-dab0370ff6c6",
"firstName": "Вероника",
"middleName": "Михайловна",
"lastName": "Мелентьева",
"email": "melenteva.vm@gazprom-neft.loc",
"post": "Референт",
"organization": {
"id": "05602058-9877-42c2-8e62-731458829978",
"shortTitle": "ПГПН",
"title": "ПАО Газпром нефть"
},
"subdivision": {
"id": "2f3aacc4-4cb7-40e6-8dd5-0df223a1b049",
"title": "Дирекция по добыче"
}
}
}
}
- На входе: UUID документа Nmd из Datamodel и UUID выбранной модели
- На выходе: -
| Команда | Путь |
|---|---|
| sed_createArisDocument | Kafka Topic "sed_commands" |
CheckStageForSolution
На входе тип запроса, ID запроса и ID стадии
{
"requestType": "BusinessProcessRequest",
"requestId": "8c08fcd9-0539-49da-90f7-b90112581f0f",
"stageTo": "00000001-0006-0000-0000-000000000000"
}
На выходе либо пустой объект, либо ErrorResponse со списком незаполненных обязательных полей в data
{
"emptyFields": [
{
"entityType": "BusinessProcessRequest",
"objectId": "54d60b3f-988f-4d0c-8107-78147e9ed671",
"field": "confirmEmployeeIds",
"fieldTitle": "Утверждающие"
},
{
"entityType": "BusinessProcessOwner",
"objectId": "e5125c24-841b-4b30-82de-35b15f5e7c67",
"field": "cnmdDzoList",
"fieldTitle": "Участники бизнес процесса в ЦНМД"
}
]
}
Проверка заполненности обязательных полей перед переходом на стадию
- Input: CheckStageSolutionDTO
- Output: Пустой объект при отсутствии ошибок, либо ErrorResponse с data - List[EmptyField]
| Команда | Путь |
|---|---|
| sed_checkStageForSolution | Kafka Topic "sed_commands" |
CheckNmdModelConditions
На входе UUID документа Nmd из Datamodel
"6afde98c-3522-4572-b351-de7d4e1b4e0b"
На выходе пустое тело запроса
Команда для проверки модели Nmd в айрис, в случае успеха 200 ОК, иначе ошибка.
- На входе: UUID выбранной модели
- На выходе: -
| Команда | Путь |
|---|---|
| sed_checkNmdModelConditions | HTTP POST "/v1/nmd-check/nmd-check-aris-model" |
CheckNmdRequestModelConditions
На входе UUID документа NmdRequest из Datamodel
"6afde98c-3522-4572-b351-de7d4e1b4e0b"
На выходе пустое тело запроса
Команда для проверки модели NmdRequest в айрис, в случае успеха 200 ОК, иначе список ошибок по каждому нмд.
- На входе: UUID выбранной модели
- На выходе: -
| Команда | Путь |
|---|---|
| sed_checkNmdRequestModelConditions | HTTP POST "/v1/nmd-request-check/nmd-request-check-aris-model" |
TakeFGJob
На входе
{
"fgId": "869dac66-f400-46a4-a1d2-bccae7709c76",
"userId": "03ae21dc-65ca-4f40-be46-15e712f10447",
"entityObject": {
"entityType": "NmdRequest",
"objectId": "062eada3-8bda-4bb3-83b7-10f04d057136"
}
}
На выходе пустое тело запроса
Описание
- Input: TakeJobFGDTO
- Output: -
| Команда | Путь |
|---|---|
| sed_takeFGJob | HTTP POST "v1/functional-group/take-job" |
ListFilteredRouteStageLink
На входе тип запроса, ID запроса и search для поиск routeStageLinks проксирует метод sedroute_listRouteStageLink и фильтрует переходы
{
"requestId": "1c0a4295-52b2-4161-b2ac-3804d84326e1",
"requestType": "JobDescriptionRequest",
"search": {
"query": "stageFrom && hidden",
"context": {
"stageFrom": "000000d1-0002-0000-0000-000000000000",
"hidden": "false"
}
}
}
На выходе список отфильтрованных переходов
{
"status": "Completed",
"timestamp": 1732831297651,
"value": {
"items": [
{
"id": "000000d1-0002-0005-0000-000000000000",
"title": "Перейти на следующую стадию",
"stageFrom": {
"id": "000000d1-0002-0000-0000-000000000000",
"title": "Проверка ДИ администратором",
"data": {
"type": "Edit",
"number": {
"components": [
2
],
"displayNumber": "2",
"sortingNumber": 70368744177664,
"stageNumberType": "Intermediate"
},
"addTask": {
"details": {
"title": "Проверка ДИ администратором",
"taskType": "RequestCheck",
"description": ""
},
"responsible": [
{
"employeeAttributes": [
"authorEmployeeId"
]
}
]
},
"notifyChange": true,
"commentSettings": {
"commentingAbility": false
},
"previousCycleCheck": false,
"stageLinksConditions": [
"authorNotInBPHR",
"skipLineManagerCheck"
],
"requiredSolutionFields": [
"date",
"status",
"jobTitle",
"jobSubdivision",
"jobCategory",
"lineManagerEmployeeId",
"approvalEmployeeIds",
"confirmEmployeeId"
],
"internalApprovalAbility": false,
"responsibleChoiceAbility": false,
"previousCycleReassignTaskCheck": false
},
"stageTypeId": "Intermediate"
},
"stageTo": {
"id": "000000d1-0005-0000-0000-000000000000",
"title": "Согласование ДИ",
"data": {
"type": "Review",
"number": {
"components": [
5
],
"displayNumber": "5",
"sortingNumber": 175921860444160,
"stageNumberType": "Intermediate"
},
"addTask": {
"details": {
"title": "Согласование ДИ",
"taskType": "RequestApproval",
"description": ""
},
"responsible": [
{
"employeeAttributes": [
"approvalEmployeeIds",
"additionalEmployeeIds"
],
"functionalGroupAttributes": [
"approvalFGIds",
"additionalFGIds"
],
"functionalGroupDelegatedAttributes": [
"approvalDelegatedFGIds",
"additionalDelegatedFGIds"
]
}
]
},
"notifyChange": true,
"commentSettings": {
"commentingAbility": false
},
"previousCycleCheck": false,
"requiredSolutionFields": [
"date",
"status",
"jobTitle",
"jobSubdivision",
"jobCategory",
"lineManagerEmployeeId",
"approvalEmployeeIds",
"confirmEmployeeId"
],
"internalApprovalAbility": true,
"responsibleChoiceAbility": false,
"previousCycleReassignTaskCheck": false
},
"stageTypeId": "Intermediate"
},
"conditions": {
"rules": [
{
"atLeast": {
"count": 1,
"priority": 1
}
}
],
"visible": {
"authorNotInBPHR": false,
"skipLineManagerCheck": false
},
"linkType": "positive"
},
"created": 1732716345197,
"createdBy": "00000000-0000-0000-0000-000000000001",
"modified": 1732716345197,
"modifiedBy": "00000000-0000-0000-0000-000000000001",
"removed": false,
"hidden": false,
"version": 1
}
],
"total": 1
}
}
Фильтрует переходы команды sedroute_listRouteStageLink по условиям
- Input: ListFilteredRouteStageLinkDTO
- Output: [Page[RouteStageLink]] из сервиса sed-route
| Команда | Путь |
|---|---|
| sed_listFilteredRouteStageLink | HTTP POST "v1/route/list-filtered-route-stage-link" |
ImportJobCalendar
Для импротра первоначально необходимо загрузить файл в хранилище S3 при помощи команды upload сервиса api-gateway На входе id файла в хранилище S3 (результат команды upload) Обработанный календарь будет сохранен, либо обновлен в сервисе tech-constants, с кодом jobCalendar
"1c689788-9617-4c93-bcee-6eae8909a0ba"
На выходе результат обработки файла
Импорт производственного календаря
- Input: Id файла из вызова upload в сервисе api-gateway
- Output: -
| Команда | Путь |
|---|---|
| sed_importJobCalendar | HTTP POST "/v1/job-calendar/import" |
ListFilteredRouteStageLink
На входе тип запроса, ID запроса и search для поиск routeStageLinks проксирует метод sedroute_listRouteStageLink и фильтрует переходы
{
"requestId": "1c0a4295-52b2-4161-b2ac-3804d84326e1",
"requestType": "JobDescriptionRequest",
"search": {
"query": "stageFrom && hidden",
"context": {
"stageFrom": "000000d1-0002-0000-0000-000000000000",
"hidden": "false"
}
}
}
На выходе список отфильтрованных переходов
{
"status": "Completed",
"timestamp": 1732831297651,
"value": {
"items": [
{
"id": "000000d1-0002-0005-0000-000000000000",
"title": "Перейти на следующую стадию",
"stageFrom": {
"id": "000000d1-0002-0000-0000-000000000000",
"title": "Проверка ДИ администратором",
"data": {
"type": "Edit",
"number": {
"components": [
2
],
"displayNumber": "2",
"sortingNumber": 70368744177664,
"stageNumberType": "Intermediate"
},
"addTask": {
"details": {
"title": "Проверка ДИ администратором",
"taskType": "RequestCheck",
"description": ""
},
"responsible": [
{
"employeeAttributes": [
"authorEmployeeId"
]
}
]
},
"notifyChange": true,
"commentSettings": {
"commentingAbility": false
},
"previousCycleCheck": false,
"stageLinksConditions": [
"authorNotInBPHR",
"skipLineManagerCheck"
],
"requiredSolutionFields": [
"date",
"status",
"jobTitle",
"jobSubdivision",
"jobCategory",
"lineManagerEmployeeId",
"approvalEmployeeIds",
"confirmEmployeeId"
],
"internalApprovalAbility": false,
"responsibleChoiceAbility": false,
"previousCycleReassignTaskCheck": false
},
"stageTypeId": "Intermediate"
},
"stageTo": {
"id": "000000d1-0005-0000-0000-000000000000",
"title": "Согласование ДИ",
"data": {
"type": "Review",
"number": {
"components": [
5
],
"displayNumber": "5",
"sortingNumber": 175921860444160,
"stageNumberType": "Intermediate"
},
"addTask": {
"details": {
"title": "Согласование ДИ",
"taskType": "RequestApproval",
"description": ""
},
"responsible": [
{
"employeeAttributes": [
"approvalEmployeeIds",
"additionalEmployeeIds"
],
"functionalGroupAttributes": [
"approvalFGIds",
"additionalFGIds"
],
"functionalGroupDelegatedAttributes": [
"approvalDelegatedFGIds",
"additionalDelegatedFGIds"
]
}
]
},
"notifyChange": true,
"commentSettings": {
"commentingAbility": false
},
"previousCycleCheck": false,
"requiredSolutionFields": [
"date",
"status",
"jobTitle",
"jobSubdivision",
"jobCategory",
"lineManagerEmployeeId",
"approvalEmployeeIds",
"confirmEmployeeId"
],
"internalApprovalAbility": true,
"responsibleChoiceAbility": false,
"previousCycleReassignTaskCheck": false
},
"stageTypeId": "Intermediate"
},
"conditions": {
"rules": [
{
"atLeast": {
"count": 1,
"priority": 1
}
}
],
"visible": {
"authorNotInBPHR": false,
"skipLineManagerCheck": false
},
"linkType": "positive"
},
"created": 1732716345197,
"createdBy": "00000000-0000-0000-0000-000000000001",
"modified": 1732716345197,
"modifiedBy": "00000000-0000-0000-0000-000000000001",
"removed": false,
"hidden": false,
"version": 1
}
],
"total": 1
}
}
Фильтрует переходы команды sedroute_listRouteStageLink по условиям
- Input: ListFilteredRouteStageLinkDTO
- Output: [Page[RouteStageLink]] из сервиса sed-route
| Команда | Путь |
|---|---|
| sed_listFilteredRouteStageLink | HTTP POST "v1/route/list-filtered-route-stage-link" |
ListFilteredRoute
На входе search для поиска маршрутов проксирует метод sedroute_listRoute и фильтрует маршруты
{
"query": "",
"context": {},
"sorting": {
"fieldName": "classCode",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
}
На выходе список отфильтрованных маршрутов и их общее количество
{
"items": [
{
"id": "route",
"title": "title",
"description": "description",
"data": {
},
"created": 1661866284080,
"createdBy": "00000000-0000-0000-0000-000000000000",
"modified": 1661866284080,
"modifiedBy": "00000000-0000-0000-0000-000000000000",
"removed": false,
"version": 1
}
],
"total": 1
}
Фильтрует маршруты команды sedroute_listRoute по условиям и дозаполняет поле data метаданными из каталога RouteEntityRelation
- Input: Search
- Output: [Page[Route]] из сервиса sed-route
| Команда | Путь |
|---|---|
| sed_listFilteredRoute | HTTP POST "v1/route/list-filtered-route" |
ValidateActiveFGs
На входе данные для обновления сущности
{
"id": "0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140",
"version": 1,
"data": {
"number": "000001",
"authorId": "23942f1e-9312-45bd-93d8-b6db3bd72d1b",
"authorEmployeeId": "0e749520-2ea8-4ead-b13b-9da6003477fd"
}
}
На выходе пустое тело запроса
Команда для проверки того, что добавляемые в сущность ФГ активны. При попытке добавить архивную ФГ вернёт ошибку с businessError = FGNotActive и данными архивной ФГ в data.
- На входе: UpdateEntityObjectFields
- На выходе: -
| Команда | Путь |
|---|---|
| sed_validateActiveFGs | HTTP POST "/v1/functional-group/validate" |
ListTaskTypes
На входе ID маршрута
"0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140"
На выходе данные о возможных типах задач на этом маршруте
[
{
"taskType": "Task1",
"taskTitle": "Тип 1"
},
{
"taskType": "Task2",
"taskTitle": "Тип 2"
}
]
Команда для получения списка типов задач на маршруте
- На входе: UUID
- На выходе: TaskTypeDTO[]
| Команда | Путь |
|---|---|
| sed_validateActiveFGs | HTTP POST "/v1/functional-group/validate" |
UpdateObject
Входные и выходные данные аналогичны команде UpdateObjectFields
Прокси-команда для обновления полей в объекте сущности.
Проверяет экшн SED_UpdateObject.
Дополнительно реализует функционал валидации перед обновлением.
Валидация выполняется при помощи команды, указанной в настройках сущности в поле fieldValidationSettings.validateUpdateFieldsCommand Эта команда должна принимать на вход UpdateObjectFields и возвращать ошибку валидации, либо не возвращать ничего, если валидация прошла успешно.
| Команда | Путь |
|---|---|
| sed_updateObject | Kafka Topic "sed_commands" |
SaveObject
Входные и выходные данные аналогичны команде SaveObject
Прокси-команда для сохранения объекта в модели данных.
Дополнительно реализует функционал присвоения номера.
| Команда | Путь |
|---|---|
| sed_saveObject | Kafka Topic "sed_commands" |
SoftDeleteObject
Входные и выходные данные аналогичны команде SoftDeleteObject
Прокси-команда для удаления объекта в модели данных.
Дополнительно реализует функционал освобождения номера.
| Команда | Путь |
|---|---|
| sed_softDeleteObject | Kafka Topic "sed_commands" |
GetPartialFilledObject
На входе данные о внешнем объекте, на котором будет основана сущность
{
"resourceId": "0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140",
"entityType": "SomeType"
}
На выходе поля и значения для создания предзаполненной сущности
{
"field1": "value",
"field2": "value",
"field3": "value"
}
Получение предзаполненной сущности
- На входе: GetPartialFilledObjectDTO
- На выходе: JsonObject
| Команда | Путь |
|---|---|
| sed_getPartialFilledObject | HTTP POST "/v1/partial-filling/get-partial-filled-object" |
ListResourcesByObject
На входе данные для поиска ресурсов
{
"search": {
"query": "listResourcesQuery && number",
"context": {
"listResourcesQuery": "Виды п",
"number": 3
},
"sorting": {
"fieldName": "number",
"order": "desc"
},
"paging": {
"page": 1,
"count": 5
}
},
"entityType": "SomeType"
}
На выходе данные о внешних ресурсах
{
"items": [
{
"id": "0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140",
"title": "Тип 1"
},
{
"id": "0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140",
"title": "Тип 2"
}
],
"total": 2
}
Получение списка ресурсов для предзаполнения
- На входе: ListResourcesByObjectDTO
- На выходе: Page[ResourceDTO]
| Команда | Путь |
|---|---|
| sed_listResourcesByObject | HTTP POST "/v1/partial-filling/list-resources-by-object" |
ListResourcesByObject
На входе данные о сущности
{
"entityType": "KT003Creation",
"attributes": {
"standartizationSubdivisionId": "eeb6f8a8-fe91-4be9-b30e-9ffadb4ec8d1"
}
}
На выходе все переданные атрибуты + дозаполненные
{
"standartizationSubdivisionId": "eeb6f8a8-fe91-4be9-b30e-9ffadb4ec8d1",
"standartizationSubdivisionLocation": "VOLKOV.EK@gazprom-neft.loc",
"standardizerName": "Волков Евгений Константинович"
}
Aвтозаполнение связанных атрибутов
- На входе: RecalculateDependentFieldsDTO
- На выходе: JsonObject
| Команда | Путь |
|---|---|
| sed_recalculateDependentFields | HTTP POST "/v1/partial-filling/recalculate-dependent-fields" |
ValidateConditions
Прокси команда для jsch_validateConditions из сервиса нагрузки
Дополнительные проверки перед отправкой в сервис нагрузки
- На входе: ValidateConditionsDTO
- На выходе: true
| Команда | Путь |
|---|---|
| sed_validateConditions | Kafka Topic "sed_commands" |
Объекты сервиса sed
StartRouteDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| requestType | string | да | Тип запроса |
| data | object | нет | Данные из запроса создания реквеста |
MoveNmdToPlanRequestDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| nmdRequestId | uuid | да | ID запроса нмд |
StartRouteCustomDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| entityType | string | да | Тип запроса |
| route | string | да | ID маршрута для запуска |
| data | object | нет | Данные из запроса создания реквеста |
AuthorizeDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| resourceId | uuid | нет | Идентификатор объекта |
| resourceType | string | нет | Типа объекта |
| actions | string[] | да | Список идентификаторов действий |
| attributes | [string, string[]] | нет | Список аттрибутов объекта |
Search
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| query | string | да | Запрос |
| context | [string, string] | да | Контекст запроса |
| sorting | Sorting | нет | Сортировка |
| paging | Paging | нет | Пагинация |
Sorting
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| fieldName | string | да | Поле сортировки |
| Order | "asc"/"desc" | да | Направление сортировки |
Paging
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| page | int | да | Номер страницы |
| count | int | да | Кол-во записей на странице |
UpdateDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID объекта в модели данных |
| version | int | да | Версия в модели данных для оптимистичной блокировки |
| data | jsonObject | да | Атрибуты для обновления |
NmdCreate
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| documentId | uuid | да | ID документа из ЦНМД |
| requestId | uuid | да | ID Запроса Согласование НМД |
| action | string | да | Действия над бизнес-объектами |
NmdCreateFromPlan
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| planId | uuid | да | ID ПЗ из СЭД |
| requestId | uuid | да | ID Запроса Согласование НМД |
| action | string | да | Действия над бизнес-объектами |
Nmd
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | ID НМД в модели данных | |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных (Наименование документа) | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| originalId | uuid | нет | dataModel | Оригинал |
| orgBusinessProcessExtId | uuid | да | cnmd-api-adapter | ID бизнес-процесса ЦНМД |
| ownerOrganizationApproval | boolean | да | Подлежит утверждению в организации-владельце БП | |
| simpleDuplication | boolean | нет | Тиражирование через Приказ о применении НМД | |
| legalFunctionAgreement | boolean | да | НМД требует согласование с правовой функцией | |
| nmdOwnerOrganizationId | uuid | да | cnmd-api-adapter | ID Организации-владельца НМД |
| nmdKind | string | да | NMDKind | Вид НМД |
| documentCode | string | да | Обозначение документа | |
| documentIndex | string | нет | Индекс документа в ДО | |
| catalogOwnerEmployeeId | uuid | да | cnmd-api-adapter | ID Владельца каталога |
| informationOwnerEmployeeId | uuid | да | cnmd-api-adapter | ID Владельца информации |
| authorEmployeeId | uuid | да | cnmd-api-adapter | ID Автора |
| coauthorEmployeeIds | uuid[] | нет | cnmd-api-adapter | ID Соавторов |
| number | string | да | Версия | |
| developmentType | string | да | DevelopmentType | Тип разработки |
| planningApprovalDate | uuid | нет | ID плановой даты запуска документа на экспертизу/согласование | |
| developmentReason | string | нет | DevelopmentReason | Обоснование необходимости разработки |
| developmentReasonManual | string | да | Обоснование необходимости разработки ручное заполненение | |
| developmentPriority | int | нет | Приоритет разработки | |
| developmentPriorityCatalog | string | нет | Приоритет разработки | |
| proposerEmployeeId | uuid | нет | cnmd-api-adapter | ID Автора предложения по КТ-202 |
| requestId | uuid | нет | ID Проекта согласования в СЭД НМД | |
| planExtId | uuid | нет | ID Плановой записи КТ-202 (основание разработки) ЦНМД | |
| files | object[] | нет | Список объектов вложенных документов | |
| nmdParticipantOrganizationIds | uuid[] | нет | cnmd-api-adapter | Список ID Организаций-участников НМД |
| organizationsWithoutConfirmIds | uuid[] | нет | cnmd-api-adapter | Список ID Организаций, применяющие НМД без утверждения |
| action | string | нет | ObjectAction | Действия над бизнес-объектами |
| nmdParticipant | uuid[] | нет | datamodel | Участники НМД |
| localNmd | boolean | нет | Признак того, что НМД является локальным НМД ПАО ГПН | |
| arisModelId | uuid | нет | ID модели в ARIS, на основании которой был сгенерирован привязанный файл | |
| arisModelModified | timestamp | нет | Последне время модификации модели по которой создавался привязанный файл | |
| isArisGeneratedFile | boolean | нет | Признак того, что привязанный файл сгенерирован системой |
NmdRequest
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | ID Запроса Согласование НМД в модели данных | |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| originalId | uuid | нет | dataModel | Оригинал |
| number | string | да | Номер запроса | |
| authorId | uuid | да | ID пользователя автора запроса | |
| authorEmployeeId | uuid | да | ID сотрудника автора запроса | |
| authorContacts | string | нет | Контакты автора НМД | |
| initiatorEmployeeId | string | нет | ID сотрудника - Инициатор изменений | |
| initiatorPhone | string | нет | Телефон инициатора | |
| orgBusinessProcessExtId | uuid | нет | cnmd-api-adapter | ID бизнес-процесса в ЦНМД |
| confirmDate | timestamp | да | Дата утверждения | |
| issuanceDate | timestamp | да | Дата ввода в действие | |
| changesDescription | string | нет | Описание изменений (при актуализации НМД, действующих менее двух лет) | |
| minor | boolean | нет | Минор | |
| functionalExpertiseDays | int | нет | Срок функциональной экспертизы, дней | |
| functionalOwnerEmployeeIds | string[] | нет | Список ID сотрудников - Представители функции (организация Владельца процесса) только для стадии Функциональная экспертиза | |
| functionalOwnerDelegatedFGIds | string[] | нет | Список ID функциональных групп с делегированием - Представители функции (организация Владельца процесса) только для стадии Функциональная экспертиза | |
| functionalOwnerFGIds | string[] | нет | Список ID функциональных групп - Представители функции (организация Владельца процесса) только для стадии Функциональная экспертиза | |
| functionalMemberEmployeeIds | string[] | нет | Список ID сотрудников - Представители функции (организации-участники процесса) только для стадии Функциональная экспертиза | |
| functionalMemberDelegatedFGIds | string[] | нет | Список ID функциональных групп с делегированием - Представители функции (организации-участники процесса) только для стадии Функциональная экспертиза | |
| functionalMemberFGIds | string[] | нет | Список ID функциональных групп - Представители функции (организации-участники процесса) только для стадии Функциональная экспертиза | |
| methodologistEmployeeIds | string[] | да | Список ID сотрудников - Согласующие методологи (Автозаполняемое) | |
| methodologistEmployeeIdsManual | string[] | да | Список ID сотрудников - Согласующие методологи (Заполняемое вручную) | |
| methodologistDelegatedFGIdsManual | string[] | да | Список ID функциональных групп с делегированием - Согласующие методологи (Заполняемое вручную) | |
| methodologistFGIdsManual | string[] | да | Список ID функциональных групп - Согласующие методологи (Заполняемое вручную) | |
| additionalEmployeeIds | string[] | нет | Список ID сотрудников - Дополнительные обязательные согласующие | |
| additionalDelegatedFGIds | string[] | нет | Список ID функциональных групп с делегированием - Дополнительные обязательные согласующие | |
| additionalFGIds | string[] | нет | Список ID функциональных групп - Дополнительные обязательные согласующие | |
| informedOrganizationIds | string[] | нет | Список ID сотрудников - Организации, информируемые об НМД (в том числе владельцы вышестоящих процессов) | |
| nmdIds | uuid[] | нет | Список ID НМД | |
| implementationPlanId | uuid | нет | ID Плана мероприятий | |
| files | object[] | нет | Список объектов Сопроводительных файлов | |
| explanatoryNoteId | uuid | нет | ID Пояснительной записки | |
| accompanyingFileIds | uuid[] | нет | ID Сопроводительных Файлов | |
| status | string | да | RequestStatus | Статус запроса |
| targetDate | timestamp | нет | Нормативный срок | |
| standardId | uuid[] | да | ID стандартизатора | |
| coordinatingEmployeeIds | uuid[] | да | cnmd-api-adapter | ID стандартизатора(ЦНМД) |
| standartFgId | uuid | нет | ID функциональной группы ПСТД, назначенной на проверку запроса |
PlanRequest
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | ID Запроса на изменение КТ-202 в модели данных | |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| originalId | uuid | нет | dataModel | Оригинал |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| number | string | да | Номер запроса | |
| developmentReason | string | да | Обоснование разработки | |
| authorId | uuid | да | ID автора запроса в СЭД | |
| authorEmployeeId | uuid | да | ID сотрудника - автора запроса | |
| authorContacts | string | нет | Контакты автора запроса | |
| initiatorEmployeeId | uuid | нет | ID сотрудника - инициатора изменений | |
| initiatorPhone | string | нет | Телефон инициатора | |
| orgBusinessProcessExtIds | uuid[] | нет | cnmd-api-adapter | ID бизнес-процессов (из ЦНМД) |
| additionalEmployeeIds | uuid[] | нет | ID сотрудников - дополнительных согласующих | |
| additionalDelegatedFGIds | uuid[] | нет | ID функциональных групп с делегированием - дополнительных согласующих c делегированием | |
| additionalFGIds | uuid[] | нет | ID функциональных групп - дополнительных согласующих | |
| planIds | uuid[] | да | ID объектов плановых записей | |
| status | string | да | RequestStatus | Статус запроса |
| isQuarterlyPlanRequest | boolean | да | Признак того, что данный запрос является запросом планирования КТ-202 | |
| commonProcessOwnerCCIds | uuid[] | нет | cnmd-api-adapter | Владельцы сквозных процессов КЦ |
| localProcessOwnerCCIds | uuid[] | нет | cnmd-api-adapter | Владельцы локальных процессов КЦ |
| commonProcessOwnerSOIds | uuid[] | нет | cnmd-api-adapter | Владельцы сквозных процессов ДО |
| localProcessOwnerSOIds | uuid[] | нет | cnmd-api-adapter | Владельцы локальных процессов ДО |
| targetDate | timestamp | нет | Нормативный срок | |
| coordinatingEmployeeIds | uuid[] | да | ID сотрудников - согласующих (Автозаполняемое) | |
| standardId | uuid[] | да | ID стандартизатора | |
| coordinatingEmployeeIds | uuid[] | да | cnmd-api-adapter | ID стандартизатора(ЦНМД) |
| standartFgId | uuid | нет | ID функциональной группы ПСТД, назначенной на проверку запроса |
BusinessProcessRequest
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | ID Запроса на изменение КТ-202 в модели данных | |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| originalId | uuid | нет | dataModel | Оригинал |
| number | string | да | Номер запроса | |
| changeReason | string | да | Обоснование разработки | |
| authorId | uuid | да | ID автора запроса в СЭД | |
| authorEmployeeId | uuid | нет | ID сотрудника автора запроса | |
| initiatorEmployeeId | uuid | нет | ID сотрудника - инициатора изменений | |
| initiatorPhone | string | нет | Телефон инициатора | |
| orgBusinessProcessExtIds | uuid[] | нет | cnmd-api-adapter | ID бизнес-процессов (из ЦНМД) |
| additionalEmployeeIds | uuid[] | нет | ID сотрудников - дополнительных согласующих | |
| additionalDelegatedFGIds | uuid[] | нет | ID функциональных групп с делегированием - дополнительных согласующих | |
| additionalFGIds | uuid[] | нет | ID функциональных групп - дополнительных согласующих | |
| informedEmployeeIds | uuid[] | нет | ID сотрудников ДО для уведомления | |
| businessProcessIds | uuid[] | нет | ID объектов бизнес процессов | |
| status | string | да | RequestStatus | Статус запроса |
| targetDate | timestamp | нет | Нормативный срок | |
| cKPersonsIds | uuid[] | да | ID сотрудников - Центр компетенций по стандартизации (Автозаполняемое) | |
| approvalEmployeeIds | uuid[] | да | ID сотрудников - Согласующие (Автозаполняемое) | |
| bProcessOwnerIds | uuid[] | да | ID сотрудников - Владельцы смежных процессов (Автозаполняемое) | |
| confirmEmployeeIds | uuid[] | да | ID сотрудников - Утверждающие (Автозаполняемое) | |
| standardId | uuid[] | да | ID стандартизатора | |
| coordinatingEmployeeIds | uuid[] | да | cnmd-api-adapter | ID стандартизатора(ЦНМД) |
| standartFgId | uuid | нет | ID функциональной группы ПСТД, назначенной на проверку запроса |
InternalApprovalRequest
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | ID Запроса на изменение КТ-202 в модели данных | |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| originalId | uuid | нет | dataModel | Оригинал |
| authorId | uuid | да | ID автора запроса в СЭД | |
| authorEmployeeId | uuid | нет | ID сотрудника автора запроса | |
| targetDate | timestamp | нет | Нормативный срок | |
| internalTargetDate | timestamp | нет | Дата завершения внутреннего согласования | |
| approveEmployeeIds | uuid[] | да | ID сотрудников - Согласующие | |
| status | string | да | RequestStatus | Статус запроса |
| requestType | string | да | EntityType | Тип запроса для согласования |
| requestId | uuid | да | dataModel | ID запроса для согласования |
| stageHistoryId | uuid | да | ID stageHistory запроса для согласования |
JobDescriptionRequest
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | ID Запроса на управление ДИ в модели данных | |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| originalId | uuid | нет | dataModel | Оригинал |
| number | string | да | Номер запроса | |
| authorId | uuid | да | ID автора запроса в СЭД | |
| authorEmployeeId | uuid | нет | ID сотрудника автора запроса | |
| additionalEmployeeIds | uuid[] | нет | Дополнительные согласующие сотрудники | |
| additionalDelegatedFGIds | uuid[] | нет | Дополнительные согласующие функциональные группы с делегированием | |
| additionalFGIds | uuid[] | нет | Дополнительные согласующие функциональные группы | |
| status | string | да | RequestStatus | Статус запроса |
| date | timestamp | да | Дата | |
| jobStatus | string | да | JobStatus | Статус должности |
| jobTitle | string | да | JobTitle | Наименование должности |
| jobIds | string[] | нет | JobId | ID должности |
| jobIdsManual | string[] | нет | JobId | ID должности введенные вручную |
| jobSubdivision | string | да | Подразделение | |
| jobSubdivisionsManual | string | нет | Подразделения введены | |
| jobCategory | string | да | JobCategory | Категория должности |
| lineManagerEmployeeId | uuid | да | Линейный руководитель | |
| functionalManagerEmployeeId | uuid | нет | Функциональный руководитель | |
| jobEmployeeIds | uuid[] | нет | Работники на должности | |
| changesReasonFile | object[] | нет | Основание изменения ДИ файл | |
| changesReasonText | string | нет | Основание изменения ДИ текст | |
| changesReasonLink | string | нет | Основание изменения ДИ ссылка | |
| roles | string[] | нет | BusinessRole | Роль |
| jobTargetDate | timestamp | нет | Нормативный срок действия ДИ | |
| approvalEmployeeIds | uuid[] | да | Обязательные согласующие сотрудники | |
| approvalDelegatedFGIds | uuid[] | да | Обязательные согласующие функциональные группы с делегированием | |
| approvalFGIds | uuid[] | да | Обязательные согласующие функциональные группы | |
| confirmEmployeeId | uuid | да | Утверждающее лицо | |
| confirmDelegatedFGId | uuid | да | Утверждающее лицо (функциональная группа) |
RequestIdWithType
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| entityType | string | да | EntityType | Тип запроса для согласования |
| requestId | uuid | да | dataModel | ID запроса для согласования |
InternalApprovalRequestGetDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| internalApproval | InternalApprovalRequest | да | Атрибуты запроса на внутреннее согласование |
| request | NmdRequest / PlanRequest / BusinessProcessRequest | да | Атрибуты запроса для согласования |
Plan
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | ID Запроса на изменение КТ-202 в модели данных | |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| requestId | uuid | да | ID запроса на изменение КТ-202 | |
| originalId | uuid | нет | dataModel | Оригинал |
| orgBusinessProcessExtId | uuid | да | cnmd-api-adapter | ID бизнес-процесса (из ЦНМД) |
| ownerOrganizationApproval | boolean | да | Подлежит утверждению в организации-владельце БП | |
| simpleDuplication | boolean | нет | Тиражирование через Приказ о применении НМД | |
| legalFunctionAgreement | boolean | да | НМД требует согласование с правовой функцией | |
| nmdOwnerOrganizationId | uuid | да | cnmd-api-adapter | Организация-владелец НМД |
| nmdKind | string | да | NMDKind | Вид НМД |
| documentCode | string | да | Обозначение документа | |
| documentIndex | string | нет | Индекс документа в ДО | |
| catalogOwnerEmployeeId | uuid | да | cnmd-api-adapter | ID сотрудника - владельца каталога |
| informationOwnerEmployeeId | uuid | да | cnmd-api-adapter | ID сотрудника - владельца информации |
| authorEmployeeId | uuid | да | cnmd-api-adapter | ID сотрудника - автора документа |
| coauthorEmployeeIds | uuid[] | нет | cnmd-api-adapter | ID сотрудников - соавторов документа |
| number | string | да | Версия | |
| developmentType | string | да | DevelopmentType | Тип разработки |
| planningApprovalDate | timestamp | uuid | job-scheduler | ID плановой даты запуска документа на экспертизу/согласование |
| developmentReason | string | нет | DevelopmentReason | Обоснование необходимости разработки |
| developmentReasonManual | string | да | Обоснование необходимости разработки ручное заполненение | |
| developmentPriority | int | нет | Приоритет разработки | |
| developmentPriorityCatalog | string | нет | Приоритет разработки | |
| proposerEmployeeId | uuid | нет | cnmd-api-adapter | ID сотрудника - автор предложения по КТ-202 |
| nmdParticipantOrganizationIds | uuid[] | нет | cnmd-api-adapter | Организации-участники НМД |
| organizationsWithoutConfirmIds | uuid[] | нет | cnmd-api-adapter | Организации, применяющие НМД без утверждения |
| action | string | нет | ObjectAction | Действия над бизнес-объектами |
| planParticipant | uuid[] | нет | datamodel | Участники Плановой записи |
| localNmd | boolean | нет | Признак того, что НМД является локальным НМД ПАО ГПН |
PlanCreateNewDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| requestId | uuid | да | ID запроса на изменение КТ-202 |
| orgBusinessProcessExtId | uuid | нет | ID бизнес-процесса, к которому относится документ |
PlanCreateExistDTO
| Поле | Тип | Обязательное | Справочник | Описание |
|---|---|---|---|---|
| requestId | uuid | да | ID запроса на изменение КТ-202 | |
| documentId | uuid | да | ID документа в ЦНМД | |
| developmentType | string | да | DevelopmentType | Тип разработки |
CopyPlanDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| requestId | uuid | да | ID запроса на изменение КТ-202 |
| documentId | uuid | да | ID документа в ЦНМД |
| action | string | да | Действия над бизнес-объектами |
StageSolutionCreate
| Поле | Тип | Обязательное | Сервис | Описание |
|---|---|---|---|---|
| requestId | uuid | да | ID запроса, к которому относится решение | |
| routeEntityId | uuid | да | sedTaskManager | ID маршрута сущности |
| routeStageId | uuid | да | sedTaskManager | ID стадии маршрута |
| routeStageLinkId | uuid | да | sedTaskManager | ID перехода между стадиями маршрута |
| comment | string | нет | Комментарий | |
| standardId | uuid | нет | Mon | ID пользователя ПСТД КЦ |
StageSolution
| Поле | Тип | Обязательное | Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | dataModel | ID Решения участника стадии в модели данных |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| authorId | uuid | да | mon | ID пользователя - автора решения |
| authorEmployeeId | uuid | да | cnmd-api-adapter | ID сотрудника - автора решения |
| taskId | uuid | нет | sedTaskManager | ID Задачи (Task): entityId = routeEntityId, responsible = userId; |
| и есть Вложение (TaskAttach): entityId = routeStageId, taskId = taskId | ||||
| fgId | uuid | нет | sedFG | ID функциональной группы, за которую принято решение |
| headFgEmployeeId | uuid | нет | sedFG | ID руководителя функциональной группы, за которую принято решение |
| routeEntityId | uuid | да | sedTaskManager | ID маршрута сущности |
| routeStageId | uuid | да | sedTaskManager | ID стадии маршрута |
| routeStageLinkId | uuid | да | sedTaskManager | ID перехода между стадиями маршрута |
| comment | string | нет | Комментарий | |
| stageHistoryId | uuid | нет | ID истории стадии запроса, к которой относится данное решение |
StageHistory
| Поле | Тип | Обязательное | Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | ID Решения участника стадии в модели данных | |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| requestEntityType | string | да | Тип сущности запроса, к которому относится данная история | |
| requestId | uuid | да | ID запроса, к которому относится данная история | |
| requestVersionId | uuid | да | Версия запроса, к которой относится данная история | |
| routeStageId | uuid | да | sedRoute | Стадия, к которой относится данная история |
| cycleNumber | uuid | да | Номер цикла стадии | |
| targetDate | string | да | Нормативный срок стадии |
GetVoteAbilityDTO
| Поле | Тип | Обязательное | Сервис | Описание |
|---|---|---|---|---|
| routeEntityId | uuid | да | sedTaskManager | ID маршрута сущности |
| routeStageId | uuid | да | sedTaskManager | ID стадии маршрута |
AdditionalDocument
Входят такие сущности как: AccompanyingFile, ImplementationPlan
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | dataModel | ID Доп. документа в модели данных |
| entityType | string | да | AdditionalDocument | Тип сущности в модели данных |
| title | string | да | Наименование в модели данных | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| authorId | uuid | да | ID пользователя автора доп. документа | |
| authorEmployeeId | uuid | да | cnmd-api-adapter | ID сотрудника автора доп. документа |
| requestId | uuid | да | NMDRequest | ID Проекта согласования в СЭД НМД |
| files | object[] | нет | Список объектов вложенных документов |
ExplanatoryNote
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | dataModel | ID Доп. документа в модели данных |
| entityType | string | да | AdditionalDocument | Тип сущности в модели данных |
| title | string | да | Наименование в модели данных | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| authorId | uuid | да | ID пользователя автора доп. документа | |
| authorEmployeeId | uuid | да | cnmd-api-adapter | ID сотрудника автора доп. документа |
| customerEmployeeId | uuid | нет | cnmd-api-adapter | ID сотрудника, по поручению которого разработан проект НМД |
| inOrder | string | да | В целях | |
| mainChanges | string | да | Основные изменения в документе | |
| requestId | uuid | да | NMDRequest | ID Проекта согласования в СЭД НМД |
| files | object[] | нет | Список объектов вложенных документов |
AdditionalDocumentCreateDTO
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| requestId | uuid | да | NMDRequest | ID Проекта согласования в СЭД НМД |
AdditionalDocumentDTO
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| authorId | uuid | да | ID пользователя автора доп. документа | |
| authorEmployeeId | uuid | да | cnmd-api-adapter | ID сотрудника автора доп. документа |
| requestId | uuid | да | NMDRequest | ID Проекта согласования в СЭД НМД |
| files | object[] | нет | Список объектов вложенных документов |
StageHistoryInfo
| Поле | Тип | Обязательное | Сервис | Описание |
|---|---|---|---|---|
| stageHistory | Stagehistory | да | sed | История Стадии |
| overdue | boolean | да | sed | Флаг просрочки |
StageInfo
| Поле | Тип | Обязательное | Сервис | Описание |
|---|---|---|---|---|
| stageDetails | RouteStage | да | sedRoute | Атрибуты сущности RouteStage |
| stageHistory | StageHistoryInfo[] | да | sed | Список циклов данной стадии |
| stageStatus | string | да | sed | Статус стадии |
RequestStageDTO
| Поле | Тип | Обязательное | Сервис | Описание |
|---|---|---|---|---|
| requestType | string | да | dataModel | Тип запроса |
| requestId | uuid | да | dataModel | ID запроса |
| routeStageId | uuid | да | sedRoute | ID стадии |
EmployeeCNMD
| Поле | Тип | Обязательное | Сервис | Описание |
|---|---|---|---|---|
| id | UUID | да | cnmd-api-adapter | ID сотрудника в цнмд |
| firstName | string | да | Имя | |
| middleName | string | нет | Отчество | |
| lastName | string | да | Фамилия | |
| string | нет | Электронная почта | ||
| post | string | нет | Должность | |
| organization | OrganizationCNMD | да | sed | Организация |
| subdivision | SubdivisionMinimalCNMD | да | sed | Подразделение |
PageWithCommentsCount
| Поле | Тип | Обязательное | Сервис | Описание |
|---|---|---|---|---|
| items | BaseEntityWithCommentsCount[] | да | Список сущностей | |
| commentsCount | integer | да | gpn-comment | Число комментариев |
| requestId | string | нет | ID запроса |
BaseEntityWithCommentsCount
| Поле | Тип | Обязательное | Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | dataModel | ID сущности |
| title | string | да | dataModel | Наименование в модели данных |
| code | string | нет | dataModel | Код бизнес-объекта |
| entityType | string | да | dataModel | Тип сущности в модели данных |
| files | object[] | нет | dataModel | Список объектов файлов сущности |
| orgBusinessProcessExtId | string | нет | dataModel | Бизнес-процесс |
| participants | BaseEntityWithCommentsCount[] | нет | Список участников | |
| commentsCount | integer | да | gpn-comment | Число комментариев |
BusinessProcessOwner
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | dataModel | ID бизнес-процесса владельца в модели данных |
| entityType | string | да | dataModel | Тип сущности в модели данных |
| title | string | да | dataModel | Наименование в модели данных |
| source | string | да | dataModel | Источник в модели данных |
| created | timestamp | да | dataModel | Дата и время создания в модели данных |
| modified | timestamp | да | dataModel | Дата и время модификации в модели данных |
| version | int | да | dataModel | Версия в модели данных для оптимистичной блокировки |
| requestId | uuid | нет | dataModel | Запрос на изменение КТ-001 |
| originalId | uuid | нет | dataModel | Оригинал |
| readOnly | boolean | да | Доступность редактирования | |
| hierarchyType | string | нет | BusinessProcessHierarchyType | Уровень иерархии |
| organizationId | uuid | нет | Компания | |
| businessProcessExtId | uuid | нет | cnmd-api-adapter | Бизнес-процесс в цнмд |
| ancestorProcessesIds | uuid[] | да | Иерархия вышестоящих процессов | |
| code | string | да | Код процесса | |
| simpleDuplication | boolean | нет | Тиражирование через приказ о применении НМД | |
| visaLaw | boolean | нет | Требуется согласование НМД с правовой функцией | |
| setOperationTypicalRequirements | boolean | нет | Устанавливает типовые требования к операции (-ям) другого процесса | |
| processType | string | нет | BusinessProcessType | Тип процесса |
| organizationOwnerId | uuid | нет | Организация-владелец | |
| ownerId | uuid | нет | Владелец процесса | |
| methConfirmId | uuid | нет | Утверждающий методологии | |
| standardGroupRUSId | uuid | да | Подразделение по стандартизации | |
| cKPersonsIds | uuid[] | да | Центр компетенций по стандартизации | |
| otvISAPId | uuid | нет | Ответственный за согласование изменений в информационных системах, автоматизирующих процесс | |
| shortDescription_Plain | string | да | Краткое описание бизнес-процесса | |
| target | string | да | Цель процесса | |
| metrics | string | да | Метрики процесса | |
| risks | string | да | Процессные риски | |
| processIn | string | да | Вход процесса | |
| processOut | string | да | Выход процесса | |
| borderLine | string | да | Разграничение ответственности | |
| processMembers | string | да | Участники процесса | |
| stages | string | да | Основные этапы процесса | |
| bProcessAroundID | uuid[] | да | Смежные процессы (поставщики ресурсов) | |
| bProcessAround2ID | uuid[] | да | Смежные процессы (потребители результата) | |
| statusSVK | string | да | Статус СВК по процессу | |
| automation | string | да | Автоматизация | |
| methApproveIds | string | да | Согласующие методологи сотрудники | |
| methApproveDelegatedFGIds | string | да | Согласующие методологи функциональные группы с делегированием | |
| methApproveFGIds | string | да | Согласующие методологи функциональные группы | |
| functionRepresentativeIds | uuid[] | да | Представители функции (организация Владельца процесса) сотрудники | |
| functionRepresentativeDelegatedFGIds | uuid[] | да | Представители функции (организация Владельца процесса) функциональные группы с делегированием | |
| functionRepresentativeFGIds | uuid[] | да | Представители функции (организация Владельца процесса) функциональные группы | |
| businessProcessParticipant | uuid[] | нет | dataModel | Список бизнес процессов участников |
| action | string | нет | ObjectAction | Действия над бизнес-объектами |
| selfRegulatingProcess | boolean | нет | Саморегулируемый бизнес-процесс | |
| feedbackResponsibleIds | uuid[] | да | Ответственные за обратную связь по бизнес-процессу | |
| contactPersonISId | uuid | да | Контактное лицо по ИС из ЕСИС |
BusinessProcessParticipant
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | dataModel | ID бизнес-процесса владельца в модели данных |
| entityType | string | да | dataModel | Тип сущности в модели данных |
| title | string | да | dataModel | Наименование в модели данных |
| source | string | да | dataModel | Источник в модели данных |
| created | timestamp | да | dataModel | Дата и время создания в модели данных |
| modified | timestamp | да | dataModel | Дата и время модификации в модели данных |
| version | int | да | dataModel | Версия в модели данных для оптимистичной блокировки |
| originalId | uuid | нет | dataModel | Оригинал |
| readOnly | boolean | да | Доступность редактирования | |
| organizationId | uuid | нет | Компания | |
| businessProcessExtId | uuid | нет | cnmd-api-adapter | Бизнес-процесс в цнмд |
| simpleDuplicationLocal | boolean | нет | Тиражирование через приказ о применении НМД | |
| managerId | uuid | нет | Менеджер процесса | |
| standardGroupRUSLocalId | uuid | да | Подразделение по стандартизации тиражного ДО | |
| methConfirmLocalId | uuid | нет | Утверждающий методологии ДО | |
| methApproveLocalIds | uuid[] | да | Согласующие методологи сотрудники | |
| methApproveLocalDelegatedFGIds | uuid[] | да | Согласующие методологи функциональные группы с делегированием | |
| methApproveLocalFGIds | uuid[] | да | Согласующие методологи функциональные группы | |
| functionRepresentativeLocalIds | uuid[] | да | Представители функции (организации-участник процесса) сотрудники | |
| functionRepresentativeLocalDelegatedFGIds | uuid[] | да | Представители функции (организации-участник процесса) функциональные группы с делегированием | |
| functionRepresentativeLocalFGIds | uuid[] | да | Представители функции (организации-участник процесса) функциональные группы | |
| businessProcessOwner | uuid | нет | datamodel | Бизнес-процесс в ЦНМД |
| action | string | нет | ObjectAction | Действия над бизнес-объектами |
| feedbackResponsibleLocalIds | uuid[] | да | Ответственные за обратную связь по бизнес-процессу | |
| contactPersonISLocalId | uuid | да | Контактное лицо по ИС из ЕСИС | |
| shortDescription_PlainLocal | string | да | Краткое описание бизнес-процесса |
BusinessProcessOwnerCreateDTO
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| hierarchyType | string | да | BusinessProcessHierarchyType | Уровень иерархии |
| businessProcessId | uuid | нет | cnmd-api-adapter | ID бизнес процесса родителя в цнмд |
| requestId | uuid | да | dataModel | ID запроса на изменение КТ-001 |
BusinessProcessParticipantCreateDTO
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| organizationId | uuid | да | cnmd-api-adapter | ID организации в цнмд |
| businessProcessId | uuid | да | datamodel | ID бизнес процесса владельца в модели данных |
BusinessProcessOwnerCopyDTO
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| requestId | uuid | да | datamodel | ID запроса на изменение КТ-001 |
| businessProcessId | uuid | да | cnmd-api-adapter | ID бизнес процесса в цнмд |
| action | string | да | ObjectAction | Действия над бизнес-объектами |
BusinessProcessParticipantCopyDTO
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| requestId | uuid | да | datamodel | ID запроса на изменение КТ-001 |
| businessProcessId | uuid | да | cnmd-api-adapter | ID бизнес процесса в цнмд |
| action | string | да | ObjectAction | Действия над бизнес-объектами |
BusinessProcessesListDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| businessProcessOwner | BusinessProcessOwner | да | Бизнес процесс владелец |
| participants | BusinessProcessParticipant[] | да | Бизнес-процессы участники |
LegacyDocumentListItem
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| @unid | uuid капсом, без - | да | ID документа |
| LastModifiedDate | Дата в формате 1970-01-01T00:00:00Z | да | Дата последнего изменения документа |
LegacyDocument
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| ParentProcess | string | да | Информация о коде и названии бизнес-процесса |
| PersonName | string | да | ФИО владельца документа |
| PersonPos | string | да | Должность владельца документа |
| ProcessType | string | да | Вид бизнес-процесса |
| CompanyName | string | да | Организация-владелец |
| NMDLabel | string | да | Код документа |
| OwnerCatalogRUS | string | да | ФИО владельца каталога |
| OwnerCatalogPos | string | да | Должность владельца каталога |
| AuthorNameRUS | string | да | ФИО автора документов |
| AuthorPositionRUS | string | да | Должность автора документов |
| CoAuthorNameRUS | string | да | ФИО соавтора документов |
| CoAuthorPositionRUS | string | да | Должность соавтора документов |
| Version | string | да | Версия документа |
| RazrAdapt | string | да | Тип разработки |
| DATEREG | string | да | Дата регистрации |
| DATESTART | string | да | Дата ввода в действие (а также дата изменения бизнес-процесса) (Дата в формате 01.01.1970) |
| RDATERD | string | да | Дата распорядительного документа (Дата в формате 01.01.1970) |
| DateEnd | string | да | Введен в действие до (Дата в формате 01.01.1970) |
| DATECANCEL | string | да | Дата отмены (Дата в формате 01.01.1970) |
| Priority | string | да | Приоритет (Число в формате строки) |
| Status | string | да | Статус ("утвержден"/"отменен"/"") |
| ISSCID | string | да | Идентификатор документа в ИССК (uuid капсом, без -) |
| CompanyNameLocal | string | да | Компания-участник |
| NMDType | string | да | Тип НМД |
| Type | string | да | Тип карточки ("common"/"local"/"") |
| IsTemplate | string | да | Признак шаблона ("yes"/"no"/"") |
| AddDocTitle | string | да | Название документа |
| IsPlan | string | да | Признак плановой записи ("да"/"нет"/"") |
| DateExec | string | да | Плановая дата (Дата в формате 01.01.1970) |
| AUTHORNAME | string | да | ФИО автора документа |
| AuthorPos | string | да | Должность автора документа |
| SimpleDuplication | string | да | Признак тиражирования через приказ о применении ("yes"/"no"/"") |
| OwnerCatalogCompany | string | да | Компания владельца каталога |
| MethConfirmPersons | string[] | да | ФИО утверждающего методологии |
| MethConfirmPersonsPos | string[] | да | Должность утверждающего методологии |
| ApprovalDocumentLink | string | да | Ссылка на приказ о применении |
| @modified | string | да | Дата и время модификации документа (Дата в формате 1970-01-01T00:00:00Z) |
| ParentProcessID | string | да | ID бизнес-процесса (uuid капсом, без -) |
| BProcessLevel | string | да | Признак уровня БП ("do"/"") |
| DateConfirm | string | да | Дата утверждения (Дата в формате 01.01.1970) |
| ApplicationOrderLink | string | да | Ссылка на документ в Notes |
| STAGESCREENSETNAMEDP | string | да | Тип бизнес процесса |
| OwnerInformationRUS | string | да | ФИО владельца информации |
| OwnerInformationPos | string | да | Должность владельца информации |
| OwnerInformationCompany | string | да | Компания владельца информации |
| Quarantine | string | да | Признак “В карантине” ("yes"/"no") |
| ParentREF | string | да | ID бизнес-процесса (uuid капсом, без -) |
LegacyBusinessProcess
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| ISSCID | string | да | SedCode (uuid капсом, без -) |
| Name | string | да | Наименование процесса |
| Key | string | да | Код процесса |
| ParentKey | string | да | Код родительского процесса |
| Type | string | да | Тип карточки ("common"/"local"/"") |
| IsTemplate | string | да | Признак шаблона ("yes"/"no"/"") |
| ProcessType | string | да | Тип процесса |
| BProcessLevel | string | да | Признак уровня БП ("do"/"") |
| Status | string | да | Статус ("утвержден"/"отменен"/"") |
| PersonName | string | да | ФИО владельца процесса |
| PersonPos | string | да | Должность владельца процесса |
| ManagerName | string | да | ФИО менеджера процесса |
| ManagerPos | string | да | Должность менеджера процесса |
| CompanyName | string | да | Организация-владелец |
| CompanyKey | string | да | Организация-владелец (краткое наименование) |
| CompanyNameLocal | string | да | Организация участник |
| CompanyKeyLocal | string | да | Организация участник (краткое наименование) |
| Modified | string | да | Дата последнего изменения (Дата в формате 1970-01-01T00:00:00Z) |
| URLDocument | string | да | хрень какая-то |
| SimpleDuplication | string | да | Признак тиражирования через приказ о применении ("yes"/"no"/"") |
| ShortDescription_Plain | string | да | Краткое описание без тегов |
| MethConfirmPersons | string[] | да | ФИО утверждающих методологии |
| MethConfirmPersonsPos | string[] | да | Должности утверждающих методологии |
| StandardGroup | string[] | да | Код подразделения по стандартизации |
| StandardGroupRUS | string[] | да | ФИО подразделения по стандартизации |
| StandardGroupLocal | string[] | да | Код подразделения по стандартизации тиражного ДО |
| StandardGroupRUSLocal | string[] | да | ФИО тиражного подразделения по стандартизации |
| CKPersons | string[] | да | ФИО центра компетенций по стандартизации |
| Target | string | да | Цель процесса |
| Metrics | string | да | Метрики процесса |
| Risks | string | да | Процессные риски |
| ProcessIn | string | да | Вход процесса |
| ProcessOut | string | да | Выход процесса |
| BorderLine | string | да | Разграничение ответственности |
| ProcessMembers | string | да | Участники процесса |
| Stages | string | да | Основные этапы процесса |
| BProcessAroundID | string[] | да | Идентификаторы смежных процессов (поставщики ресурсов) |
| BProcessAroundOwner | string[] | да | Владельцы смежных процессов (поставщики ресурсов) |
| BProcessAroundOwnerID | string[] | да | Идентификаторы владельцев смежных процессов (поставщики ресурсов) |
| BProcessAroundCompany | string[] | да | Компании смежных процессов (поставщики ресурсов) |
| BProcessAroundCompanyID | string[] | да | Идентификаторы компаний смежных процессов (поставщики ресурсов) |
| BProcessAround2ID | string[] | да | Идентификаторы смежных процессов (потребители результата) |
| BProcessAround2Owner | string[] | да | Владельцы смежных процессов (потребители результата) |
| BProcessAround2OwnerID | string[] | да | Идентификаторы владельцев смежных процессов (потребители результата) |
| BProcessAround2Company | string[] | да | Компании смежных процессов (потребители результата) |
| BProcessAround2CompanyID | string[] | да | Идентификаторы компаний смежных процессов (потребители результата) |
| StatusSVK | string | да | Статус СВК по процессу |
| Automation | string | да | Автоматизация |
| ParentProcessId | string | да | Идентификатор родительского процесса |
| STAGESCREENSETNAMEDP | string | да | Тип бизнес процесса ("BProcess"/"Group"/"Category") |
| VisaLaw | string | да | Требуется согласование НМД с правовой функцией ("yes"/"no"/"") |
| KBE | string | да | Консолидирующая бизнес-единица |
| OtvISAP | string | да | ФИО ответственного за согласование изменений в информационных системах, автоматизирующих процесс |
| ParentREF | string | да | Связь с родительским бизнес-процессом по линии ПАО |
NmdParticipant
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | ID НМД в модели данных | |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных (Наименование документа) | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| originalId | uuid | нет | dataModel | Оригинал |
| readOnly | boolean | да | Признак доступности редактирования | |
| orgBusinessProcessExtId | uuid | да | cnmd-api-adapter | ID бизнес-процесса, к которому относится документ |
| simpleDuplication | boolean | нет | Тиражирование через Приказ о применении НМД | |
| documentIndex | uuid | нет | Индекс документа в ДО | |
| action | uuid | нет | ObjectAction | Действие над бизнес объектом |
| nmdId | uuid | нет | dataModel | Нмд владельца |
NmdParticipantCreate
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| nmdId | uuid | да | datamodel | Нмд владельца |
| orgBusinessProcessExtId | uuid | да | cnmd-api-adapter | ID бизнес-процесса, к которому относится документ |
PlanParticipant
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| id | uuid | да | ID НМД в модели данных | |
| entityType | string | да | Тип сущности в модели данных | |
| title | string | да | Наименование в модели данных (Наименование документа) | |
| source | string | да | Источник в модели данных | |
| created | timestamp | да | Дата и время создания в модели данных | |
| modified | timestamp | да | Дата и время модификации в модели данных | |
| version | int | да | Версия в модели данных для оптимистичной блокировки | |
| originalId | uuid | нет | dataModel | Оригинал |
| readOnly | boolean | да | Признак доступности редактирования | |
| orgBusinessProcessExtId | uuid | да | cnmd-api-adapter | ID бизнес-процесса, к которому относится документ |
| simpleDuplication | boolean | нет | Тиражирование через Приказ о применении НМД | |
| documentIndex | uuid | нет | Индекс документа в ДО | |
| action | uuid | нет | ObjectAction | Действие над бизнес объектом |
| planId | uuid | нет | dataModel | Плановая запись владельца |
PlanParticipantCreate
| Поле | Тип | Обязательное | Справочник/Сервис | Описание |
|---|---|---|---|---|
| planId | uuid | да | datamodel | Плановая запись владельца |
| orgBusinessProcessExtId | uuid | да | cnmd-api-adapter | ID бизнес-процесса, к которому относится документ |
DocumentWithCodeAndTitle
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | Id документа |
| entityId | string | да | Тип документа |
| system | string | да | Сервис документа |
| title | string | да | Наименование |
| code | string | да | Обозначение |
| requestId | uuid | нет | Id запроса в СЭД |
SameDocuments
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| error | string | да | Текст ошибки |
| documents | DocumentWithCodeAndTitle[] | да | Список документов |
CheckDoc
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| title | string | да | Название документа |
| code | string | да | Код документа |
| excludeDocId | uuid | нет | ID документа, на основе которого создан текущий документ |
| currentDocID | uuid | нет | ID текущего документа, чтобы он не ссылался сам на себя |
CheckObpsForCancelResult
BpParticipantWithOrgId
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID БП |
| orgId | UUID | да | ID организации БП |
IdWithCodeAndTitle
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID БП |
| code | String | да | Код БП |
| title | String | да | Название БП |
ListRecommendationGroupsDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| entityId | String | да | ID сущности |
| classCode | String | да | Код сущности |
| routeStageId | UUID | да | ID стадии |
RecommendationGroupWithActionDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID списка предложений |
| code | CatalogItemCode | да | Код группы |
| entityId | String | да | ID сущности |
| classCode | String | да | Код сущности |
| data | Json | да | Дополнительные данные |
| isFilled | Boolean | да | Признак сформированности списка |
| action | CatalogItemCode | да | Доступное действие |
| created | Timestamp | да | Дата и время создания |
| createdBy | UUID | да | ID пользователя создавшего запись |
| modified | Timestamp | да | Дата и время изменения |
| modifiedBy | UUID | да | ID пользователя последним изменившего запись |
| removed | Boolean | да | Признак удаления записи |
| version | Int | да | Версия для оптимистичной блокировки |
| recommendationCount | Int | да | Число предложений в группе |
RecommendationGroupListDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | UUID | да | ID списка предложений |
| code | CatalogItemCode | да | Код группы |
| entityId | String | да | ID сущности |
| classCode | String | да | Код сущности |
| data | Json | да | Дополнительные данные |
| isFilled | Boolean | да | Признак сформированности списка |
| created | Timestamp | да | Дата и время создания |
| createdBy | UUID | да | ID пользователя создавшего запись |
| modified | Timestamp | да | Дата и время изменения |
| modifiedBy | UUID | да | ID пользователя последним изменившего запись |
| removed | Boolean | да | Признак удаления записи |
| version | Int | да | Версия для оптимистичной блокировки |
| recommendationCount | Int | да | Число предложений в группе |
ListRecommendationsDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| recommendationGroupId | UUID | да | ID группы предложений |
| routeStageId | UUID | да | ID стадии |
| search | Search | нет | Параметры фильтрации, сортировки и пагинации |
RecommendationListDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID предложения |
| classCode | string | да | Код сущности к которому привязана рекомендация |
| entityId | string | да | ID сущности к которому привязана рекомендация |
| recommendationGroupId | uuid | да | ID списка предложений |
| recommendationType | string | да | Тип предложения |
| comment | string | да | Комментарий к предложению |
| resolution | string | нет | Резолюция |
| resolutionComment | string | нет | Комментарий к резолюции |
| planId | uuid | нет | ID плановой записи |
| reviewCount | int | да | Количество обращений по предложению |
| created | timestamp | да | Дата и время создания |
| createdBy | uuid | да | ID пользователя создавшего запись |
| modified | timestamp | да | Дата и время изменения |
| modifiedBy | uuid | да | ID пользователя последним изменившего запись |
| removed | boolean | да | Признак удаления записи |
| version | int | да | Версия для оптимистичной блокировки |
JobDescription
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | ID должностной иструкции |
| title | String | да | Название должностной иструкции |
| organizationTitle | String | нет | Название организации должностной иструкции |
| organizationShortTitle | String | нет | Краткое название организации должностной иструкции |
| subdivisionTitle | String | нет | Название подразделения должностной иструкции |
| fileId | file[] | нет | Информация о прикрепленном файле |
| action | string | да | Тип действия |
| blocks | BlockDTO[] | да | Дерево сущностей (см. документацию к sedJdConstructor) |
| created | timestamp | да | Время создания |
| modified | timestamp | да | Время модификации |
| version | int | да | Версия исправлений |
CreateJobDescriptionDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| requestId | uuid | да | ID должностной иструкции |
| action | String | да | Действие с должностной инструкцией |
| cnmdJobDescription | uuid | нет | Должностная инструкция из цнмд |
RequestAuthorForcedChangeDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| request | EntityObjectIdentity | да | Тип и Id запроса |
| authorEmployeeId | uuid | нет | Id сотрудника нового автора запроса из цнмд |
StageParticipantsChangeDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| requestType | string | да | Тип запроса |
| requestId | uuid | да | Id запроса |
| deletedParticipantsIds | uuid[] | да | Список Id сотрудников из цнмд удаляемых из запроса |
| newParticipantsIds | uuid[] | да | Список Id сотрудников из цнмд новых участников стадии запроса |
CheckStageSolutionDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| requestType | string | да | Тип запроса |
| requestId | uuid | да | Id запроса |
| stageTo | uuid | да | ID стадии маршрута |
StageCheck
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| emptyFields | [EmptyField] | да | Список пустых полей |
EmptyField
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| entityType | string | да | Тип сущности |
| objectId | uuid | да | Id сущности |
| field | string | да | Наименование незаполненного поля сущности |
| fieldTitle | string | да | Title поля из datamodel |
FunctionalGroupInfoDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | uuid | да | Id функциональной группы |
| name | string | да | Наименование функциональной группы |
| headEmployeeId | uuid | нет | Руководитель функциональной группы |
| string | нет | Почта | |
| systemModule | string | да | Системный модуль |
| description | string | да | Описание ФГ |
| responsible | uuid | нет | Текущий отвественный, по данной ФГ |
ListStageParticipantsDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| employees | [EmployeeCNMD] | да | Cj |
| functionalGroupInfoDTO | [FunctionalGroupInfoDTO] | да | Id запроса |
TakeFGJobDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| fgId | uuid | да | Id функциональной группы |
| userId | uuid | да | Id пользователя(mon) |
| entityObject | EntityObjectIdentity | да | Тип и Id запроса |
ListFilteredRouteStageLinkDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| requestType | string | да | Тип сущности |
| requestId | uuid | да | Id сущности |
| search | Search | да | Параметры поиска переходов команды sedroute_listRouteStageLink |
TaskTypeDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| taskType | string | да | Код типа задачи в сервисе каталогов |
| taskTitle | string | да | Название типа задачи |
ResourceDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| id | string | да | ID объекта во внешнем сервисе |
| title | string | да | Заголовок объекта |
GetPartialFilledObjectDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| resourceId | string | нет | ID объекта во внешнем сервисе, на основании которого будет создана новая предзаполненная сущность |
| entityType | string | да | Тип предзаполняемой сущности |
ListResourcesByObjectDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| entityType | string | да | Тип предзаполняемой сущности |
| search | Search | да | Поисковый запрос в формате Search, содержащий в query и context под ключом listResourcesQuery пользовательский ввод |
RecalculateDependentFieldsDTO
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| entityType | string | да | Тип предзаполняемой сущности |
| objectId | string | нет | ID предзаполняемой сущности |
| requestId | string | нет | ID запроса, только для карточки сущности |
| attributes | JsobObject | да | Заполненные атрибуты |