NAV
json scala

СЭД ЦНМД

Описание команд всех сервисов, которые входят в состав СЭД ЦНМД.

cnmd-api-adapter

Api-адаптер для ЦНМД

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

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

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

Локальный запуск сервиса cnmd-api-adapter

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

Запуск из консоли с помощью 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_KAFKA_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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.

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
}

Возвращает категории бизнес процессов.

Команда Путь
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 родителя.

Команда Путь
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 родителя.

Команда Путь
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": "Коломейцев"
    }
  }
]

Возвращает список документов орг. бизнес процесса по его id.

Команда Путь
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.

Команда Путь
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": "ООО \"Газпромнефть НТЦ\""
    }
  }
]

Возвращает информацию об орг. бизнес процессах.

Команда Путь
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,
    "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"
    ]
  }
]

Возвращает информацию о документах.

Команда Путь
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 орг. бизнес процесса участника.

Команда Путь
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 орг. бизнес-процесса владельца.

Команда Путь
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": "Коломейцев"
    }
  }
]

Возвращает совпавшие документы

Команда Путь
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
}

Возвращает список кодов и названий бизнес процессов

Команда Путь
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 владельцев, разделенные по группам

Команда Путь
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 владельцев по коду и названию

Команда Путь
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
  }
]

Возвращает список документов

Команда Путь
cnmd_documentsForRecommendation HTTP POST "/v1/business-tree/documents-for-recommendation"

DocumentDzoListOrganizations

На входе Id версии документа владельца в ЦНМД json "acec06f2-1ea2-48b2-9cbe-bbdaf8999d20"

На выходе список OrganizationDto[]

[
  {
    "id": "0c67e814-c66b-4201-83b1-b46d4b8dedb9",
    "shortTitle": "Хантос",
    "title": "ООО \"Газпромнефть-Хантос\""
  }
]

Возвращает список организаций документов участников dzoList

Команда Путь
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
}

Возвращает список организаций

Команда Путь
cnmd_organizations HTTP POST "/v1/org-structure/organizations"

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 организаций. Кастомная сортировка не предусмотренна. С помощью пейджинга может указать максимальное кол-во подразделений. Но вернется скорее всего больше, потому что должны уместиться все сматченные дети, попавших под пейджинг подразделений.

Команда Путь
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
}

Возвращает список сотрудников.

Команда Путь
cnmd_employees HTTP POST "/v1/org-structure/employees"

EmployeeMatch

На входе email сотрудника

"Bogdanov.YuG@hantos.gazprom-neft.loc"

На выходе uuid сотрудника

"f7eca5b6-5598-4b06-8517-eb8e86573440"

Возвращает UUID сотрудника из оргструктуры по его email.

Команда Путь
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.

Команда Путь
cnmd_employeeMatchDetailed HTTP POST "/v1/org-structure/employee-match-detailed"

EmployeesPositions

На входе ListFilter c опциональными полями "CodeQuery"

{
  "items": [
    {
      "key": "codeQuery",
      "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": "",
      "isSubdivisionHead": "",
      "isFunctionLead": "",
      "function": "",
      "functionDirection": ""
    }
  ],
  "total": 1
}

Возвращает список должностей.

Команда Путь
cnmd_employeesPositions HTTP POST "/v1/org-structure/employees-positions"

EmployeeSubdivisionsHierarchy

На входе Id сотрудника в ЦНМД

"8b1f872d-99fc-41d7-aead-0fa2ef3cf54e"

На выходе String[] - список подразделений от нижнего уровня к верхнему

[
    "АЗС 12",
    "Сибирский филиал",
    "Отдел розничных продаж"
]

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

Команда Путь
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"
  }
]

Возвращает список идентификаторов подразделений и организаций от нижнего уровня к верхнему.

Команда Путь
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": "Служба предупреждения и ликвидации разливов нефти"
  }
]

Возвращает список вложенных подразделений. В том числе потомки потомков.

Команда Путь
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": "ОсОО \"Газпромнефть-Аэро Кыргызстан\""
}

Возвращает организацию подразделения.

Команда Путь
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": "АО \"Газпромнефть-Аэро\""
    }
  ]
}

Возвращает главную организацию и подключенные к СЭД ДО.

Команда Путь
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"
  }
]

Возвращает места возникновения затрат

Команда Путь
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"
  }
]

Возвращает блоки дочерних организаций

Команда Путь
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"
  }
]

Возвращает управленческие сегменты

Команда Путь
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": "Евгеньевич"
    }
  }
]

Возвращает список штатных должностей.

Команда Путь
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
}

Возвращает дерево должностей

Команда Путь
cnmd_positionTree HTTP POST "/v1/corporate-data-store/positionTree"

RequestCnmdDocExport

Запускает экспорт документов в ЦНМД

Команда Путь
cnmd_requestCnmdDocExport HTTP POST "/v1/export/importDocSource"

RequestCnmdReviewExport

Запускает экспорт обратных связей в ЦНМД

Команда Путь
cnmd_requestCnmdReviewExport HTTP POST "/v1/export/importReviewSource"

RequestCnmdJDExport

Запускает экспорт должностных инструкций в ЦНМД

Команда Путь
cnmd_requestCnmdJDExport HTTP POST "/v1/export/importJobDescriptionSource"

RequestCnmdBPExport

Запускает экспорт бизнес процессов в ЦНМД

Команда Путь
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

Запускает экспорт документов в ЦНМД

Команда Путь
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
  }
]

Возвращает информацию об обращениях

Команда Путь
cnmd_reviews HTTP POST "/v1/review/reviews"

AddEmployeeAccessSubdivisions

На входе данные для создания записей

{
   "employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
   "employeeGroup": "user",
   "subdivisionIds": ["4d89c624-751a-4c1e-98ef-4e122f24a8b6"]
}

На выходе кол-во добавленных или обновленных подразделений

1

Описание:

Команда Путь
cnmd_addEmployeeAccessSubdivisions Kafka Topic "cnmd_api_adapter_commands"

AddEmployeeAccessOrgsSubdivisions

На входе данные для создания записей

{
   "employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
   "employeeGroup": "user",
   "organizationIds": ["4d89c624-751a-4c1e-98ef-4e122f24a8b6"]
}

На выходе кол-во добавленных или обновленных подразделений

68

Описание:

Команда Путь
cnmd_addEmployeeAccessOrgsSubdivisions Kafka Topic "cnmd_api_adapter_commands"

DeleteEmployeeAccessSubdivisions

На входе данные для удаления

{
   "employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
   "employeeGroup": "user",
   "subdivisionIds": ["4d89c624-751a-4c1e-98ef-4e122f24a8b6"]
}

На выходе кол-во удаленных записей

1

Описание:

Команда Путь
cnmd_deleteEmployeeAccessSubdivisions Kafka Topic "cnmd_api_adapter_commands"

DeleteEmployeeAccessOrgsSubdivisions

На входе данные для удаления

{
   "employeeId": "9743c658-611c-48ab-8889-4453f0ba3c2a",
   "employeeGroup": "user",
   "organizationIds": ["4d89c624-751a-4c1e-98ef-4e122f24a8b6"]
}

На выходе кол-во удаленных записей

68

Описание:

Команда Путь
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"
    ]
  }
]

Описание:

Команда Путь
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

Описание:

Команда Путь
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"
        ]
      }
    ]
  }
]

Описание:

Команда Путь
cnmd_listEmployeeAccessSubdivisions HTTP POST "/v1/employee-access-subdivision/list-group-org-subdivisions"

Объекты сервиса 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 Нет Тиражирование через Приказ о применении НМД
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 участников документов

DocumentMinimalDto

Поле Тип Обязательное Описание
id String Да Id
code String Нет Код
title String Нет Название
issuanceDate Long Нет Дата введения в действие
version String Нет Версия
kind String Нет Тип
status String да Статус документа
author EmployeeMinimalDto Нет Автор

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 Да Название

SedConnectedOrganizationsDto

Поле Тип Обязательное Описание
mainOrganization [OrganizationDto] Да Главная организация (ПАО)
subsidiaryOrganizations Seq[OrganizationDto] Да ДО, подключенные к СЭД

IdName

Поле Тип Обязательное Описание
id String Да Ключ
name String Да Значение

KhdPosition

Поле Тип Обязательное Описание
id UUID Да ID позиции
subdivisionId UUID Да ID организации
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 Да Должность
email String Нет Почта

EmployeeMinimalDto

Поле Тип Обязательное Описание
id String Да Id
firstName String Да Имя
middleName String Нет Отчество
lastName String Да Фамилия
post String Нет Должность
email 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 организации подразделения

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 сотрудника
email 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 UUID да Id подразделения
isSubdivisionHead Option[Boolean] нет Является руководителем подразделения
isFunctionLead Option[Boolean] нет Является лидером функции
function Option[Boolean] нет Функция/Проф.кластер
functionDirection Option[Boolean] нет Семейство спец.функц. направление/ проф.направление/рабоч. специальность

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_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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

Импорт списка правил для создания номеров.

Команда Путь
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
Команда Путь
gpnCounter_createNumber HTTP POST "/v1/number/create"

AcquireNumber

На входе данные для занятия номера

{
  "code": "ПК-01.02",
  "ruleId": "NMDKind_07",
  "entityId": "00000000-0000-0000-0000-000000000001"
}

На выходе признак успешности занятия номера

true

Занять свободный номер. Если entityId не передан, занять можно только номер с пустым entityId.

Команда Путь
gpnCounter_acquireNumber HTTP POST "/v1/number/acquire"

ReleaseNumber

На входе данные для освобождения номера

{
  "code": "ПК-01.02",
  "entityId": "00000000-0000-0000-0000-000000000001"
}

На выходе признак успешности освобождения номера

true

Освободить занятый номер. Передавать ruleId не обязательно (не обрабатывается). Если entityId не передан, освободить можно только номер с пустым entityId.

Команда Путь
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"

Объекты сервиса 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 нет Форматированное число из счетчика

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_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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.

Команда Путь
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 которых отсутствуют к массивах, будут удалены безвозвратно.

Команда Путь
gpnNews_updateNews Kafka Topic "gpn_news_commands"

DeleteNews

На входе ID новости

"ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5"

На выходе признак успешности удаления

true

Удаление новости.

Команда Путь
gpnNews_deleteNews Kafka Topic "gpn_news_commands"

RestoreNews

На входе ID новости

"ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5"

На выходе признак успешности восстановления

true

Восстановление новости.

Команда Путь
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
}

Получение новости.

Команда Путь
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
}

Получение списка новостей с поиском, сортировкой и пагинацией.

Команда Путь
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 проектов:

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

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

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

Запуск из консоли с помощью 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_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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.

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

CreateRecommendationGroup

На выходе атрибуты для создания нового списка предложений

{
  "title": "title",
  "classCode": "QuarterlyPlanRequest",
  "entityId": "00000000-0000-0000-0000-000000000001",
  "data": {},
  "isFilled": false
}

На выходе атрибуты ID списка предложений

"24404bb3-fc1e-4388-ac4b-9c99beb89e91"

Добавление нового списка предложений.

Команда Путь
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" для оптимистичной блокировки.

Команда Путь
gpnRecommendation_updateRecommendationGroup Kafka Topic "gpnRecommendation_commands"

DeleteRecommendationGroup

На входе ID списка предложений

"24404bb3-fc1e-4388-ac4b-9c99beb89e91"

На выходе признак успешности удаления

true

Удаление списка предложений.

Команда Путь
gpnRecommendation_deleteRecommendationGroup Kafka Topic "gpnRecommendation_commands"

RestoreRecommendationGroup

На входе ID списка предложений

"24404bb3-fc1e-4388-ac4b-9c99beb89e91"

На выходе признак успешности восстановления

true

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

Команда Путь
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
}

Получение списка предложений.

Команда Путь
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
}

Получение списка списков предложений с поиском, сортировкой и пагинацией.

Команда Путь
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"

Добавление нового предложения.

Команда Путь
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" для оптимистичной блокировки.

Команда Путь
gpnRecommendation_updateRecommendation Kafka Topic "gpnRecommendation_commands"

SetRecommendationAnswer

На входе атрибуты для оставления ответа

{
  "id": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
  "answer": "answer",
  "version": 1
}

На выходе признак успешности обновления

true

Оставление ответа. Принимает "version" для оптимистичной блокировки.

Команда Путь
gpnRecommendation_setRecommendationAnswer Kafka Topic "gpnRecommendation_commands"

DeleteRecommendation

На входе id предложения

"24404bb3-fc1e-4388-ac4b-9c99beb89e91"

На выходе признак успешности удаления

true

Удаление предложения.

Команда Путь
gpnRecommendation_deleteRecommendation Kafka Topic "gpnRecommendation_commands"

RestoreRecommendation

На входе id предложения

"24404bb3-fc1e-4388-ac4b-9c99beb89e91"

На выходе признак успешности восстановления

true

Восстановление предложения.

Команда Путь
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
}

Получение предложения.

Команда Путь
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
}

Получение списка маршрутов с поиском, сортировкой и пагинацией.

Команда Путь
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"

Добавление нового обращения.

Команда Путь
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" для оптимистичной блокировки.

Команда Путь
gpnRecommendation_updateReview Kafka Topic "gpnRecommendation_commands"

SetReviewAnswer

На входе атрибуты для оставления ответа

{
  "id": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
  "answer": "answer",
  "version": 1
}

На выходе признак успешности обновления

true

Оставление ответа. Принимает "version" для оптимистичной блокировки.

Команда Путь
gpnRecommendation_setReviewAnswer Kafka Topic "gpnRecommendation_commands"

DeleteReview

На входе id обращения

"24404bb3-fc1e-4388-ac4b-9c99beb89e91"

На выходе признак успешности удаления

true

Удаление обращения.

Команда Путь
gpnRecommendation_deleteReview Kafka Topic "gpnRecommendation_commands"

RestoreReview

На входе id обращения

"24404bb3-fc1e-4388-ac4b-9c99beb89e91"

На выходе признак успешности восстановления

true

Восстановление обращения.

Команда Путь
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
}

Получение обращения.

Команда Путь
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
}

Получение списка обращений с поиском, сортировкой и пагинацией.

Команда Путь
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

Добавление предложения в список.

Команда Путь
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

Добавление предложений в список.

Команда Путь
gpnRecommendation_addRecommendationsToGroup Kafka Topic "gpnRecommendation_commands"

DeleteRecommendationFromGroup

На входе атрибуты для удаления предложения из списка предложений и очистки данных предложения

{
  "recommendationId": "ba4aff6c-8041-44d6-a8b0-5c22c66aa3c5",
  "recommendationGroupId": "f8679f00-dc8a-4f69-baa0-24b1fad382d8"
}

На выходе признак успешности удаления из списка

true

Удаление предложения из списка.

Команда Путь
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"
}

На выходе ничего, либо бизнес ошибки

Проверка того, что для предложений были созданы плановые записи и оставлены ответы.

Команда Путь
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 проектов:

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

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

При запуске сервиса ожидается, что уже развернута необходимая инфраструктура: - 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_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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
   }
]

Получение аналитики по документам.

Команда Путь
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. В ключевой функционал сервиса входит:

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

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

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

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

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

Запуск из консоли с помощью 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_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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, то желательно поменять следующие переменные:

В файле src/main/resources/logback.xml можно поменять class path для основного класса приложения (переменная projectMainClassPath), если это необходимо.

Список команд сервиса Sed Aris

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

GetArisModel

Получение метаданных модели по ID файла

Команда Тип
sedAris_getArisModel HTTP

ListArisModelsByFolder

Получение списка моделей в папке

Команда Тип
sedAris_listArisModelsByFolder HTTP

ListArisModelsByIds

Получение метаданных моделей по списку ID файлов

Команда Тип
sedAris_listArisModelsByIds HTTP

ListFoldersByParentFolder

Получение списка дочерних папок по id папки.

Можно указать id=null, тогда будут получены все корневые папки.

Команда Тип
sedAris_listFoldersByParentFolder HTTP

FillTemplate

Создание файла НМД из шаблона

Команда Тип
sedAris_fillTemplate Kafka

MergeDocuments

Создание файла НМД из шаблона

Команда Тип
sedAris_mergeDocuments Kafka

GetTree

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

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

Команда Тип
sedAris_getTree HTTP

SyncArisModels

Синхронизация моделей в сервис иерархий.

Команду нужно применить, если из-за ошибки модели в постгресе не соответствуют моделям в сервисе иерархий.

Команда Тип
sedAris_syncArisModels Kafka

ImportFolders

Передача полной иерархической структуры папок из папки ARIS.

Команда Тип
sedAris_ImportFolders HTTP

CreateFolder

Создание новой папки в СЭД ЦНМД при создании пользователем новой папки в ARIS.

Команда Тип
sedAris_CreateFolder HTTP

DeleteFolder

Удаление папки в СЭД ЦНМД при удалении пользователем папки в ARIS.

Команда Тип
sedAris_DeleteFolder HTTP

UpdateFolder

Изменение имени папки или ее родителя в СЭД ЦНМД при свершении такого события в ARIS.

Команда Тип
sedAris_UpdateFolder HTTP

ImportModel

Передача метаданных модели

Команда Тип
sedAris_createArisModel HTTP

ListNmdStatus

Список статусов нмд с моделями

Команда Тип
sedAris_listNmd HTTP

UpsertNmdStatusRecord

Добавление/обновление записи о статусе нмд. (Внутренняя команда)

Команда Тип
sedAris_upsertNmdStatusRecord kafka

Список сущностей сервиса Sed Aris

ArisModel

Поле Тип Обязательное Описание
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 сущности в сервисе иерархий
nodeType string да folder или arismodel
name string да Имя сущности
modified timestamp да Дата и время изменения сущности
children TreeNodeDTO[] нет Дочерние объекты

ImportFolderDTO

Поля те же, что и у CreateFolderDTO, но семантически эта структура предназначена для обработки произвольных изменений структуры директорий (как создания, так и удаления или изменения).

Поле Тип Обязательное Описание
folderId uuid да ID папки в ARIS
parentFolderId uuid нет ID родителя папки в ARIS
folderName string да Имя папки

FolderHierarchyDTO

Поле Тип Обязательное Описание
id uuid да ID папки в сервисе иерархий
parentId uuid нет ID родителя папки в сервисе иерархий
name string да Имя папки

ListFoldersByParentFolderInput

Поле Тип Обязательное Описание
parentFolderId uuid нет ID родительской папки в сервисе иерархий

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 файла модели (схемы) в файловом хранилище
name string да Имя модели
created string да Дата и время создания модели
modified string да Дата и время изменения модели
folderId uuid да ID папки в ARIS

NmdStatusDTO

Поле Тип Обязательное Описание
modelId uuid да ID файла модели (схемы) в файловом хранилище
nmdId uuid да Идентификатор НМД в СЭД ЦНМД
status string нет Статус НМД (возможные значения: cancel, accept)
modified timestamp да Дата и время последнего изменения статуса НМД

FillTemplateDTO

Поле Тип Обязательное Описание
modelId uuid да ID файла модели (схемы) в файловом хранилище
nmdId uuid да Идентификатор НМД в СЭД ЦНМД
nmdFields json да Поля НМД, необходимые для создания файла НМД

MergeDocumentsDTO

Поле Тип Обязательное Описание
nmdId uuid да Идентификатор НМД в СЭД ЦНМД
oldDocumentUrl string да Ссылка на файл с документом НМД
newDocumentUrl string да Ссылка на временный файл-шаблон

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_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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 формы

Создание новой формы

Команда Путь
sedJdConstructor_createForm Kafka Topic "sed_jd_constructor_commands"

GetForm

На входе ID формы

На выходе атрибуты формы

Получение формы по идентификатору.

Команда Путь
sedJdConstructor_getForm HTTP POST "/v1/form/get"

ListForms

На входе пустое тело, либо параметры фильтрации, сортировки и пагинации

На выходе список атрибутов каждой из форм

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

Команда Путь
sedJdConstructor_listForms HTTP POST "/v1/form/list"

UpdateForm

На входе атрибуты обновляемой формы, а также ID и версия

На выходе признак успешности

Обновление формы.

Команда Путь
sedJdConstructor_updateForm Kafka Topic "sed_jd_constructor_commands"

DeleteForm

На входе ID формы

На выходе результат удаления

Удаление формы

Команда Путь
sedJdConstructor_deleteForm Kafka Topic "sed_jd_constructor_commands"

RestoreForm

На входе ID формы

На выходе результат восстановления

Восстановления формы

Команда Путь
sedJdConstructor_restoreForm Kafka Topic "sed_jd_constructor_commands"

CreateBlock

На входе [BlockCreateDTO]

На выходе ID блока

Создание новой блока

Команда Путь
sedJdConstructor_createBlock Kafka Topic "sed_jd_constructor_commands"

GetBlock

На входе ID блока

На выходе атрибуты блока

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

Команда Путь
sedJdConstructor_getBlock HTTP POST "/v1/block/get"

ListBlocks

На входе пустое тело, либо параметры фильтрации, сортировки и пагинации

На выходе список атрибутов каждого из блоков

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

Команда Путь
sedJdConstructor_listBlocks HTTP POST "/v1/block/list"

UpdateBlock

На входе атрибуты обновляемой блока, а также ID и версия

На выходе признак успешности

Обновление блока.

Команда Путь
sedJdConstructor_updateBlock Kafka Topic "sed_jd_constructor_commands"

DeleteBlock

На входе ID блока

На выходе результат удаления

Удаление блока

Команда Путь
sedJdConstructor_deleteBlock Kafka Topic "sed_jd_constructor_commands"

CreateSection

На входе [SectionCreateDTO]

На выходе ID секции

Создание новой секции

Команда Путь
sedJdConstructor_createSection Kafka Topic "sed_jd_constructor_commands"

GetSection

На входе ID секции

На выходе атрибуты секции

Получение секции по идентификатору.

Команда Путь
sedJdConstructor_getSection HTTP POST "/v1/section/get"

ListSections

На входе пустое тело, либо параметры фильтрации, сортировки и пагинации

На выходе список атрибутов каждого из полей

Пилучение списка секций с фильтрацией, сортировкой и пагинацией. Список полей возвращается пустым.

Команда Путь
sedJdConstructor_listSections HTTP POST "/v1/section/list"

UpdateSection

На входе атрибуты обновляемой секции, а также ID и версия

На выходе признак успешности

Обновление секции.

Команда Путь
sedJdConstructor_updateSection Kafka Topic "sed_jd_constructor_commands"

DeleteSection

На входе ID секции

На выходе результат удаления

Удаление секции

Команда Путь
sedJdConstructor_deleteSection Kafka Topic "sed_jd_constructor_commands"

CreateField

На входе [FieldCreateDTO]

На выходе ID поля

Создание новой поля

Команда Путь
sedJdConstructor_createField Kafka Topic "sed_jd_constructor_commands"

GetField

На входе ID поля

На выходе атрибуты поля

Получение поля по идентификатору.

Команда Путь
sedJdConstructor_getField HTTP POST "/v1/field/get"

ListFields

На входе пустое тело, либо параметры фильтрации, сортировки и пагинации

На выходе список атрибутов каждого из полей

Пилучение списка полей с фильтрацией, сортировкой и пагинацией.

Команда Путь
sedJdConstructor_listFields HTTP POST "/v1/field/list"

UpdateField

На входе атрибуты обновляемой поля, а также ID и версия

На выходе признак успешности

Обновление поля.

Команда Путь
sedJdConstructor_updateField Kafka Topic "sed_jd_constructor_commands"

DeleteField

На входе ID поля

На выходе результат удаления

Удаление поля

Команда Путь
sedJdConstructor_deleteField Kafka Topic "sed_jd_constructor_commands"

CreateSelect

На входе [SelectCreateDTO]

На выходе ID списка для выбора

Создание новой списка для выбора

Команда Путь
sedJdConstructor_createSelect Kafka Topic "sed_jd_constructor_commands"

GetSelect

На входе ID списка для выбора

На выходе атрибуты списка для выбора

Получение списка для выбора по идентификатору.

Команда Путь
sedJdConstructor_getSelect HTTP POST "/v1/select/get"

UpdateSelect

На входе атрибуты обновляемой списка для выбора, а также ID и версия

На выходе признак успешности

Обновление списка для выбора.

Команда Путь
sedJdConstructor_updateSelect Kafka Topic "sed_jd_constructor_commands"

DeleteSelect

На входе ID списка для выбора

На выходе результат удаления

Удаление списка для выбора

Команда Путь
sedJdConstructor_deleteSelect Kafka Topic "sed_jd_constructor_commands"

RestoreSelect

На входе ID списка для выбора

На выходе результат восстановления

Восстановления списка для выбора

Команда Путь
sedJdConstructor_restoreSelect Kafka Topic "sed_jd_constructor_commands"

GetSchema

На входе SchemaGetDTO

На выходе дерево сущностей

Восстановления списка для выбора

Команда Путь
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, содержит зависимости и описание для сборки и запуска сервиса.

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

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

Запуск из консоли с помощью 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_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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 Должностной инструкции

На выходе признак успешности

Команда Путь
sedJdFileGenerator_createJdFile Kafka Topic "sed_jd_file_generator_commands"

Объекты сервиса sed-jd-file-generator

sed-report

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

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

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

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

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

Запуск из консоли с помощью 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_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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"

Выгрузка комментариев.

Команда Путь
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 проектов:

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

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

Запуск из консоли с помощью 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_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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
  }
}

Получение списка записей реестра запросов с поиском, сортировкой и пагинацией.

Команда Путь
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_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

ListPlanPublishLegacy

На выходе полный список Плановых Записей к публикации (Legacy-представление) из сервиса СЭД

[
  {
    "@unid": "A2519D0A29FD488082A7500F4D320094",
    "LastModifiedDate": "2022-11-13T11:11:54Z"
  }
]

Адаптация команды sed_listPlanPublishLegacy (Получение полного списка Плановых Записей к публикации с датой последнего изменения)

ListNMDPublishLegacy

На выходе полный список НМД к публикации (Legacy-представление) из сервиса СЭД

[
  {
    "@unid": "A2519D0A29FD488082A7500F4D320094",
    "LastModifiedDate": "2022-11-13T11:11:54Z"
  }
]

Адаптация команды sed_listNmdPublishLegacy (Получение полного списка НМД к публикации с датой последнего изменения)

ListBusinessProcessPublishLegacy

На выходе полный список Бизнесс процессов к публикации (Legacy-представление) из сервиса СЭД

[
  {
    "@unid": "A2519D0A29FD488082A7500F4D320094",
    "LastModifiedDate": "2022-11-13T11:11:54Z"
  }
]

Адаптация команды sed_listBusinessProcessPublishLegacy (Получение полного списка Бизнесс процессов к публикации с датой последнего изменения)

ListReviewPublishLegacy

На выходе полный список обратных связей к публикации (Legacy-представление) из сервиса СЭД

[
  {
    "@unid": "A2519D0A29FD488082A7500F4D320094",
    "LastModifiedDate": "2022-11-13T11:11:54Z"
  }
]

Адаптация команды sed_listReviewPublishLegacy (Получение полного списка обратных связей к публикации с датой последнего изменения)

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"
  }
]

Адаптация команды sed_listJobDescriptionPublishLegacy (Получение полного списка должностных инструкций к публикации с датой последнего изменения)

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"
}

Адаптация команд sed_getPlanPublishLegacy, sed_getNmdPublishLegacy и sed_getBusinessProcessPublishLegacy

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"
}

ListDzoLegacy

На входе Id объекта

"A2519D0A29FD488082A7611F4D320095"

На выходе список тиражей к публикации (Legacy-представление) из сервиса СЭД

[
  {
    "@unid": "A2519D0A29FD488082A7500F4D320094"
  }
]

Адаптация команд sed_listNMDPublishLegacyDzo, sed_listPlanPublishLegacyDzo и sed_listBusinessProcessPublishLegacyDzo

CreateNumber

На входе данные для создания номера NumberCreateDTO

Адаптация команд gpnCounter_createNumber

AcquireNumber

На входе данные для создания номера NumberAcquireDTO

Адаптация команды AcquireNumber

UpsertNmdStatusRecord

На входе данные для создания записи о нмд в сервисе Aris NmdStatusDTO

Адаптация команды sedAris_upsertNmdStatusRecord

Upload

На входе файл

Адаптация команды sedAris_upsertNmdStatusRecord

Модели сервиса

EDBResponse

Аттрибут Тип Описание
timestamp String Время ответа
success Boolean Признак успешности
error String Название ошибки
message String Описание ошибка
addComments String Дополнительная информация

sed

Сервис бизнес-логики проекта СЭД

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

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

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

Локальный запуск сервиса sed

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

Запуск из консоли с помощью 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_KAFKA_SERVERS string да "localhost:9092" Адрес Kafka
SED_KAFKA_TOPIC string нет "sed_commands" Название кафка-топика для получения команд. Сервис получает кафка-команды по нему, но и также сам публикует это название в CommandDiscovery.
SED_NOTIFICATION_PERSONAL_PAGE_TOPIC string нет "personal-page" Название кафка-топика уведомлений персональной страницы, для конфигурирования сервиса уведомлений миграцией
SED_KAFKA_CONSUMER_GROUP string нет "sed_consumer_group" Имя consumer-группы для чтения из кафка-топика команд. Не должна меняться и не должна быть пустой, иначе сервис перечитает свои команды при перезапуске.
SED_KAFKA_PARTITIONS int нет 10 Число читаемых партиций из кафка-топика команд.
SED_KAFKA_PARTITION_PARALLELISM int нет 1 Число параллельно обрабатываемых сообщений из одной партиции кафка-топика команд.
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_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

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

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

Authorize

На входе параметры ресурса и список действий

{
  "resourceId": "457d8058-4ff0-4823-9fba-2084eb516101",
  "resourceType": "NmdRequest",
  "actions": [
    "ViewNmdRequest",
    "EditNmdRequest"
  ]
}

На выходе список действий с результатами авторизации

{
  "ViewNmdRequest": true,
  "EditNmdRequest": false
}

Проверяет доступность действий для конкретного ресурса, указанных во входных параметрах. Проксирующая команда для oberto_Authorize. Обогащает запрос данными из СЭД, необходимыми для авторизации (кроме того, данные из DataModel могут извлекаться Oberto средствами AuthzForce).

Команда Путь
sed_authorize HTTP POST "/v1/user/authorize"

CreateNmdRequest

На выходе ID Запроса Согласование НМД

"75b76f93-5ba0-4141-b0bc-e81e36c7e946"

Создание нового Запроса Согласование НМД с автоматическим заполнением обязательных атрибутов.

Команда Путь
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
}

Получение Запроса Согласование НМД по идентификатору.

Команда Путь
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
    },
    {
      "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
    }
  ],
  "total": 2
}

Получение списка Запросов Согласование НМД с фильтрацией, сортировкой и пагинацией.

Фильтрация по связям с объектами (пока не работает из-за встроенной фильтрации по "originalId": "null"):

Команда Путь
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.

Команда Путь
sed_updateNmdRequest Kafka Topic "sed_commands"

DeleteNmdRequest

На входе ID Запроса Согласование НМД

"75b76f93-5ba0-4141-b0bc-e81e36c7e946"

На выходе результат удаления

true

Удаление Запроса Согласование НМД по ID

Команда Путь
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"

Создание нового НМД с автоматическим заполнением обязательных атрибутов и создание участников только на чтение.

Команда Путь
sed_createNmd Kafka Topic "sed_commands"

CreateNmdWithoutPlan

На входе ID Запроса Согласование НМД

"680681ff-8033-43f2-8636-66e88836c0f9"

На выходе ID НМД

"196a455f-7ae0-4d42-81fd-444d69f03fc6"

Создание нового НМД с автоматическим заполнением обязательных атрибутов.

Команда Путь
sed_createNmdWithoutPlan Kafka Topic "sed_commands"

CreateNmdParticipant

На входе

{
  "orgBusinessProcessExtId": "4b505c3c-a51f-4ade-bd74-366cb7aba416",
  "nmdId": "2de05ad3-d69d-4022-866e-3b639c38b061"
}

На выходе

"062e2a6c-3ce7-4757-81f6-077e7f5a84ae"

Описание

Команда Путь
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,
  "developmentHeadEmployeeId": "",
  "number": "1.0",
  "developmentType": "DevelopmentType_3",
  "planningApprovalDate": 1664196229009,
  "developmentReason": null,
  "developmentPriority": null,
  "includedInUPC": null,
  "developmentMethod": 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"
  ]
}

Получение НМД по идентификатору.

Команда Путь
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"
  ],
  "developmentHeadEmployeeId": "f7615a33-eee4-4b86-b38b-5c9b6c6934f1",
  "number": "1.0",
  "developmentType": "DevelopmentType_3",
  "planningApprovalDate": 0,
  "developmentReason": "",
  "developmentPriority": null,
  "includedInUPC": null,
  "developmentMethod": null,
  "proposerEmployeeId": null,
  "nmdParticipantOrganizationIds": [
    "05602058-9877-42c2-8e62-731458829978"
  ],
  "organizationsWithoutConfirmIds": null,
  "planExtId": "fae15b8f-57dc-4ee0-a0fd-a867119be916",
  "files": null
}

Описание

Команда Путь
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",
      "noOwnerOrganizationApproval": false,
      "simpleDuplication": null,
      "legalFunctionAgreement": false,
      "nmdOwnerOrganizationId": "",
      "nmdKind": "NMDKind_01",
      "documentCode": "КТ-303",
      "documentIndex": null,
      "catalogOwnerEmployeeId": "",
      "informationOwnerEmployeeId": "",
      "authorEmployeeId": "2d3019c0-ac6d-4c95-9d89-77f4472f9593",
      "coauthorEmployeeIds": null,
      "developmentHeadEmployeeId": "",
      "number": "1.0",
      "developmentType": "DevelopmentType_3",
      "planningApprovalDate": 1664196228676,
      "developmentReason": null,
      "developmentPriority": null,
      "includedInUPC": null,
      "developmentMethod": 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",
      "noOwnerOrganizationApproval": false,
      "simpleDuplication": null,
      "legalFunctionAgreement": false,
      "nmdOwnerOrganizationId": "",
      "nmdKind": "NMDKind_01",
      "documentCode": "КТ-303",
      "documentIndex": null,
      "catalogOwnerEmployeeId": "",
      "informationOwnerEmployeeId": "",
      "authorEmployeeId": "2d3019c0-ac6d-4c95-9d89-77f4472f9593",
      "coauthorEmployeeIds": null,
      "developmentHeadEmployeeId": "",
      "number": "1.0",
      "developmentType": "DevelopmentType_3",
      "planningApprovalDate": 1664196229009,
      "developmentReason": null,
      "developmentPriority": null,
      "includedInUPC": null,
      "developmentMethod": null,
      "proposerEmployeeId": null,
      "planExtId": "980c6612-1057-4ee4-8532-0ce4b0f5c225",
      "files": [],
      "nmdParticipantOrganizationIds": null,
      "organizationsWithoutConfirmIds": null,
      "action": "Create",
      "nmdParticipant": []
    }
  ],
  "total": 2
}

Получение списка НМД с фильтрацией, сортировкой и пагинацией.

Фильтрация по связям с объектами:

Команда Путь
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
}

Получение списка Плановых записей с фильтрацией, сортировкой и пагинацией.

Команда Путь
sed_listNmdParticipants HTTP POST "/v1/nmd-participant/list"

UpdateNmd

На входе необходимые для обновления атрибуты НМД, а также ID и версия

{
  "id": "196a455f-7ae0-4d42-81fd-444d69f03fc6",
  "version": 1,
  "data": {
    "noOwnerOrganizationApproval": true
  }
}

На выходе признак успешности

true

Обновление НМД. Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно явно передать null.

Команда Путь
sed_updateNmd Kafka Topic "sed_commands"

UpdateNmdParticipant

На входе необходимые для обновления атрибуты участника НМД, а также ID и версия

{
  "id": "5562ecab-f4f6-4dcf-8d85-0ab12dc323b3",
  "version": 1,
  "data": {
    "simpleDuplication": false
  }
}

На выходе признак успешности

true

Обновление участника НМД. Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно явно передать null.

Команда Путь
sed_updateNmdParticipant Kafka Topic "sed_commands"

DeleteNmd

На входе список ID НМД

[
  "196a455f-7ae0-4d42-81fd-444d69f03fc6"
]

На выходе результат удаления

true

Удаление НМД по ID

Команда Путь
sed_deleteNmd Kafka Topic "sed_commands"

DeleteNmdParticipant

На входе список ID участника НМД

[
  "d31af41f-e5a5-4cf7-9a5f-c1834e77bbab"
]

На выходе результат удаления

true

Удаление участника НМД

Команда Путь
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": "",
  "DeveloperNameRus": "Уханова Марина Николаевна",
  "DeveloperPos": "Главный специалист",
  "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-представление) по идентификатору.

ListNmdPublishLegacy

На входе ничего

На выходе полный список НМД к публикации (Legacy-представление)

[
  {
    "@unid": "80BFE3AE60D849AB86F427FDEEE8F735",
    "LastModifiedDate": "2022-11-14T11:11:54Z"
  },
  {
    "@unid": "7C6B9583CD5845D5ABD02AA57BBD41A0",
    "LastModifiedDate": "2022-11-14T11:11:54Z"
  }
]

Получение полного списка НМД к публикации с датой последнего изменения.

CreatePlanRequest

На выходе ID Запроса на изменение КТ-202

"7125517d-558d-43ae-b35c-e3c7ece5e78e"

Создание нового Запроса на изменение КТ-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"
  ]
}

Получение Запроса на изменение КТ-202 по идентификатору.

Команда Путь
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"
      ]
    }
  ],
  "total": 1
}

Получение списка Запросов на изменение КТ-202 с фильтрацией, сортировкой и пагинацией.

Фильтрация по связям с объектами (пока не работает из-за встроенной фильтрации по "originalId": "null"):

Команда Путь
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.

Команда Путь
sed_updatePlanRequest Kafka Topic "sed_commands"

DeletePlanRequest

На входе ID Запроса на изменение КТ-202

"42f4be24-1831-4bfb-bac8-4f2e9c4551c6"

На выходе результат удаления

true

Удаление Запроса на изменение КТ-202 по ID

Команда Путь
sed_deletePlanRequest Kafka Topic "sed_commands"

CreateBusinessProcessRequest

На выходе ID Запроса на изменение КТ-001

"0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140"

Создание нового Запроса на изменение КТ-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"
  ]
}

Получение Запроса на изменение КТ-001 по идентификатору.

Команда Путь
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"
      ]
    },
    {
      "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"
      ]
    }
  ],
  "total": 2
}

Получение списка Запросов на изменение КТ-001 с фильтрацией, сортировкой и пагинацией.

Фильтрация по связям с объектами (пока не работает из-за встроенной фильтрации по "originalId": "null"):

Команда Путь
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.

Команда Путь
sed_updateBusinessProcessRequest Kafka Topic "sed_commands"

DeleteBusinessProcessRequest

На входе ID Запроса на изменение КТ-001

"0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140"

На выходе результат удаления

true

Удаление Запроса на изменение КТ-001 по ID

Команда Путь
sed_deleteBusinessProcessRequest Kafka Topic "sed_commands"

CreateInternalApprovalRequest

На входе тип запроса для согласования и его ID

{
  "entityType": "BusinessProcessRequest",
  "requestId": "03ae21dc-65ca-4f40-be46-15e712f10447"
}

На выходе ID Запроса на согласование

"8c5b2019-ae97-47be-ba5e-5df381d67372"

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

Команда Путь
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": []
  }
}

Получение Запроса на внутреннее согласование по идентификатору.

Команда Путь
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
}

Получение списка Запросов на внутреннее согласование с фильтрацией, сортировкой и пагинацией.

Команда Путь
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.

Команда Путь
sed_updateInternalApprovalRequest Kafka Topic "sed_commands"

TransferResultInternalApprovalRequest

На входе Id запроса на внутреннее согласование

"42f4be24-1831-4bfb-bac8-4f2e9c4551c6"

На выходе признак успешности

true

Обновление атрибута transferResult на true

Команда Путь
sed_transferResultInternalApprovalRequest Kafka Topic "sed_commands"

DeleteResultInternalApprovalRequest

На входе Id запроса на внутреннее согласование

"42f4be24-1831-4bfb-bac8-4f2e9c4551c6"

На выходе признак успешности

true

Обновление атрибута transferResult на false

Команда Путь
sed_deleteResultInternalApprovalRequest Kafka Topic "sed_commands"

DeleteInternalApprovalRequest

На входе ID Запроса на внутреннее согласование

"8c5b2019-ae97-47be-ba5e-5df381d67372"

На выходе результат удаления

true

Удаление Запроса на внутреннее согласование по ID

Команда Путь
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": ""
}

Получение Запроса на управление ДИ по идентификатору.

Команда Путь
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": ""
    },
    {
      "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": ""
    }
  ],
  "total": 2
}

Получение списка Запросов на управление ДИ с фильтрацией, сортировкой и пагинацией.

Команда Путь
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.

Команда Путь
sed_updateJobDescriptionRequest Kafka Topic "sed_commands"

DeleteJobDescriptionRequest

На входе ID Запроса на управление ДИ

"0fce9b5d-a8fd-4685-93f6-a6bb1d2a6140"

На выходе результат удаления

true

Удаление Запроса на управление ДИ по ID

Команда Путь
sed_deleteJobDescriptionRequest Kafka Topic "sed_commands"

CreatePlanNew

На входе параметры создания

{
  "requestId": "7125517d-558d-43ae-b35c-e3c7ece5e78e"
}

На выходе ID Плановой записи

"8bb7c242-2239-45ff-ae9a-e1cccc248ef5"

Создание Плановой записи на разработку нового ЦНМД

Команда Путь
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"

Создание Плановой записи на действия с существующим НМД и создание участников только на чтение.

Команда Путь
sed_createPlanExist Kafka Topic "sed_commands"

CreatePlanParticipant

На входе

{
  "planId": "eb70a4fc-3709-42ee-8b74-32741b4126d2",
  "orgBusinessProcessExtId": "947c5617-7fda-4c40-b2b0-95cde22b55bb"
}

На выходе

"3bd4c5dc-6c67-4652-8061-43099afcd808"

Описание

Команда Путь
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"

Создание Плановой записи СЭД для изменения существующий в ЦНМД Плановой записи и создание участников только на чтение.

Команда Путь
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",
  "noOwnerOrganizationApproval": 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,
  "developmentHeadEmployeeId": "a7216c8b-1c1e-4c79-a9b1-9b1d23fb76cf",
  "number": "1.0",
  "developmentType": "DevelopmentType_3",
  "planningApprovalDate": null,
  "developmentReason": null,
  "developmentPriority": null,
  "includedInUPC": null,
  "developmentMethod": null,
  "proposerEmployeeId": null,
  "nmdParticipantOrganizationIds": null,
  "organizationsWithoutConfirmIds": null,
  "action": "Create",
  "planParticipant": [
    "c3c06cea-ce42-436d-b08e-67b0cb2c3781",
    "3bd4c5dc-6c67-4652-8061-43099afcd808"
  ]
}

Получение Плановой записи

Команда Путь
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,
  "developmentHeadEmployeeId": "",
  "number": "",
  "developmentType": "DevelopmentType_3",
  "planningApprovalDate": 0,
  "developmentReason": "",
  "developmentPriority": null,
  "includedInUPC": null,
  "developmentMethod": null,
  "proposerEmployeeId": null,
  "nmdParticipantOrganizationIds": null,
  "organizationsWithoutConfirmIds": null
}

Описание

Команда Путь
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",
      "noOwnerOrganizationApproval": 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,
      "developmentHeadEmployeeId": "a7216c8b-1c1e-4c79-a9b1-9b1d23fb76cf",
      "number": "1.0",
      "developmentType": "DevelopmentType_3",
      "planningApprovalDate": null,
      "developmentReason": null,
      "developmentPriority": null,
      "includedInUPC": null,
      "developmentMethod": null,
      "proposerEmployeeId": null,
      "nmdParticipantOrganizationIds": null,
      "organizationsWithoutConfirmIds": null,
      "action": "Create",
      "planParticipant": [
        "c3c06cea-ce42-436d-b08e-67b0cb2c3781",
        "3bd4c5dc-6c67-4652-8061-43099afcd808"
      ]
    }
  ],
  "total": 1
}

Получение списка Плановых записей с фильтрацией, сортировкой и пагинацией.

Фильтрация по связям с объектами:

Команда Путь
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
}

Получение списка Плановых записей с фильтрацией, сортировкой и пагинацией.

Команда Путь
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

Команда Путь
sed_updatePlan Kafka Topic "sed_commands"

UpdatePlanParticipant

На входе необходимые для обновления атрибуты участника плановой записи, а также ID и версия

{
  "id": "2b04abe8-aed1-496b-ad01-75dd5dce908e",
  "version": 1,
  "data": {
    "simpleDuplication": false
  }
}

На выходе признак успешности

true

Обновление участника плановой записи. Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно явно передать null.

Команда Путь
sed_updatePlanParticipant Kafka Topic "sed_commands"

DeletePlan

На входе список ID Плановой записи

[
  "42f4be24-1831-4bfb-bac8-4f2e9c4551c6"
]

На выходе результат удаления

true

Удаление Плановой записи

Команда Путь
sed_deletePlan Kafka Topic "sed_commands"

DeletePlanParticipant

На входе список ID участников Плановой записи

[
  "2b04abe8-aed1-496b-ad01-75dd5dce908e"
]

На выходе результат удаления

true

Удаление участника Плановой записи

Команда Путь
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": "",
  "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"
}

Получение Плановой Записи к публикации (Legacy-представление) по идентификатору.

ListPlanPublishLegacy

На входе ничего

На выходе полный список Плановых Записей к публикации (Legacy-представление)

[
  {
    "@unid": "A2519D0A29FD488082A7500F4D320094",
    "LastModifiedDate": "2022-11-13T11:11:54Z"
  }
]

Получение полного списка Плановых Записей к публикации с датой последнего изменения.

CheckCreatePlanExistCondition

На входе параметры создания и предзаполнения

{
  "requestId": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
  "developmentType": "DevelopmentType_3",
  "documentId": "a6c77fb0-7f93-4f2b-8065-29135641d059"
}

На выходе ничего, либо бизнес ошибки

Проверки перед созданием Плановой записи на действия с существующим НМД и создание участников только на чтение.

Команда Путь
sed_checkCreatePlanExistCondition Kafka Topic "sed_commands"

CheckCopyPlanCondition

На входе параметры создания и предзаполнения

{
  "requestId": "7125517d-558d-43ae-b35c-e3c7ece5e78e",
  "documentId": "a6c77fb0-7f93-4f2b-8065-29135641d059",
  "action": "Create"
}

На выходе ничего, либо бизнес ошибки

Проверки перед созданием Плановой записи СЭД для изменения существующий в ЦНМД Плановой записи и создание участников только на чтение.

Команда Путь
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"

Создание нового Решения участника стадии.

Команда Путь
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"

Создание нового Решения участника стадии.

Команда Путь
sed_stageForcedCompletion Kafka Topic "sed_commands"

RequestForcedCancellation

На входе ID и тип запроса

{
  "entityType": "NmdRequest",
  "objectId": "72602ae9-66ab-4065-8305-d374ff14a4bf"
}

На выходе ID Решения принудительного архивирования запроса. Все активные задачи переходят в статус annulled.

"8f730a01-65ed-4864-af48-415f8edcc985"

Создание нового Решения участника стадии.

Команда Путь
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"
}

Получение Решения участника стадии по идентификатору.

Команда Путь
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
}

Получение списка Решения участника стадии с фильтрацией, сортировкой и пагинацией.

Команда Путь
sed_listStageSolutions HTTP POST "/v1/stage-solution/list"

GetVoteAbility

На входе ID маршрута сущности и ID стадии маршрута

{
  "routeEntityId": "72602ae9-66ab-4065-8305-d374ff14a4bf",
  "routeStageId": "00000000-0003-0000-0000-000000000000"
}

На выходе признак возможности голосовать для текущего пользователя

true

Проверка возможности голосовать по стадии сущности.

Команда Путь
sed_voteAbility Kafka Topic "sed_commands"

UpdateStageSolution

На входе необходимые для обновления атрибуты Решения участника стадии, а также ID и версия

{
  "id": "8f730a01-65ed-4864-af48-415f8edcc985",
  "version": 1,
  "data": {
    "comment": "Новый комментарий"
  }
}

На выходе признак успешности

true

Обновление Решения участника стадии. Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно явно передать null.

Команда Путь
sed_updateStageSolution Kafka Topic "sed_commands"

DeleteStageSolution

На входе ID Решения участника стадии

"8f730a01-65ed-4864-af48-415f8edcc985"

На выходе результат удаления

true

Удаление Решения участника стадии по идентификатору.

Команда Путь
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
}

Получение Истории переходов

Команда Путь
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
}

Получение списка элементов Истории переходов с фильтрацией, сортировкой и пагинацией.

Команда Путь
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.

Команда Путь
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"
  }
]

Получение списка стадий с просрочками и версиями

Команда Путь
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"
}

На выходе список участников стадии

[
  {
    "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": "Подразделение по контролю"
    }
  }
]

Получение списка участников стадии

Команда Путь
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"
}

Получение списка привязанных к запросу объектов с числом комментариев

Команда Путь
sed_listEntitiesByRequest HTTP POST "/v1/entities-by-request/list"

SendDecisionNotification

На входе ID и тип запроса

{
  "entityType": "NmdRequest",
  "requestId": "8634e2f9-568c-45c7-9b91-3f6e864d8a7e"
}

Отправляет уведомления о необходимости принятия решения на стадии

true

Получение списка стадий с просрочками и версиями

Команда Путь
sed_sendDecisionNotification Kafka Topic "sed_commands"

CreateBusinessProcessOwner

На входе

{
  "hierarchyType": "Category",
  "requestId": "03ae21dc-65ca-4f40-be46-15e712f10447"
}

На выходе

"947c5617-7fda-4c40-b2b0-95cde22b55bb"

Описание

Команда Путь
sed_createBusinessProcessOwner Kafka Topic "sed_commands"

CreateBusinessProcessParticipant

На входе

{
  "organizationId": "00404b2f-7287-453e-a6fa-f95409914e0d",
  "businessProcessId": "947c5617-7fda-4c40-b2b0-95cde22b55bb"
}

На выходе

"f2c8ad92-f6c0-4adb-866a-65d615a09446"

Описание

Команда Путь
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"

Описание

Команда Путь
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"

Описание

Команда Путь
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",
  "processKind": null,
  "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
}

Описание

Команда Путь
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",
  "processKind": null,
  "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
}

Описание

Команда Путь
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": "",
        "processKind": null,
        "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
}

Описание

Команда Путь
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
}

Описание

Команда Путь
sed_listBusinessProcessParticipants HTTP POST "/v1/business-process/list-participants"

UpdateBusinessProcessOwner

На входе

{
  "id": "554e379e-2b73-4e26-83a9-e5b13522740d",
  "version": 1,
  "data": {
    "readOnly": false
  }
}

На выходе

true

Описание

Команда Путь
sed_updateBusinessProcessOwner Kafka Topic "sed_commands"

UpdateBusinessProcessParticipant

На входе

{
  "id": "1fdebb63-7786-4b03-ae0a-265ffbe07148",
  "version": 1,
  "data": {
    "readOnly": false
  }
}

На выходе

true

Описание

Команда Путь
sed_updateBusinessProcessParticipant Kafka Topic "sed_commands"

DeleteBusinessProcessOwner

На входе список id БП владельцев

[
  "554e379e-2b73-4e26-83a9-e5b13522740d"
]

На выходе

true

Описание

Команда Путь
sed_deleteBusinessProcessOwner Kafka Topic "sed_commands"

DeleteBusinessProcessParticipant

На входе список id БП участников

[
  "1fdebb63-7786-4b03-ae0a-265ffbe07148"
]

На выходе

true

Описание

Команда Путь
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

Команда Путь
sed_listBusinessProcessCodesAndTitles HTTP POST "/v1/business-process/list-codes-and-titles"

ChangeBusinessProcessToGroup

На входе

"554e379e-2b73-4e26-83a9-e5b13522740d"

На выходе

true

Описание

Команда Путь
sed_сhangeBusinessProcessToGroup Kafka Topic "sed_commands"

ChangeGroupToBusinessProcess

На входе

"554e379e-2b73-4e26-83a9-e5b13522740d"

На выходе

true

Описание

Команда Путь
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-представление) по идентификатору.

ListBusinessProcessPublishLegacy

На входе ничего

На выходе полный список Бизнес процессов к публикации (Legacy-представление)

[
  {
    "@unid": "A2519D0A29FD488082A7500F4D320094",
    "LastModifiedDate": "2022-11-13T11:11:54Z"
  }
]

Получение полного списка Бизнес процессов к публикации с датой последнего изменения.

CreateAdditionalDocument

Входят такие команды как:

Команда Описание
sed_createExplanatoryNote Создание пояснительной записки
sed_createAccompanyingFile Создание сопроводительный файл
sed_createImplementationPlan Создание плана мероприятий по внедрению НМД

На входе ID Запроса Согласование НМД

{
  "requestId": "680681ff-8033-43f2-8636-66e88836c0f9"
}

На выходе ID Доп. Документа

"196a455f-7ae0-4d42-81fd-444d69f03fc6"

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

Команда Путь
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"
}

Получение Доп. документа по идентификатору.

Команда Путь
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
}

Получение списка Доп. документов с фильтрацией, сортировкой и пагинацией.

Команда Путь
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.

Команда Путь
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

Команда Путь
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"

Запускает маршрут по запросу

Команда Путь
sed_startRoute 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"
      }
    ]
  }
]

Возвращает совпавшие документы

Существуют следующие ошибки:

Команда Путь
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"
    }
  ]
}

Запускает маршрут по запросу

Команда Путь
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
}

Получает список списков предложений

Команда Путь
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
}

Получает список предложений, в который можно добавить предложения на текущей стадии

Команда Путь
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" указать поисковый запрос, содержащий код и/или наименование документа, к которому будут относиться запрашиваемые предложения.

Команда Путь
sed_listRecommendations HTTP POST "/v1/recommendation/list"

CreateJobDescription

На входе CreateJobDescriptionDTO

На выходе ID Должностной инструкции

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

Команда Путь
sed_createJobDescription Kafka Topic "sed_commands"

GetJobDescription

На входе ID Должностной инструкции

На выходе атрибуты Должностной инструкции

Получение Должностной инструкции по идентификатору.

Команда Путь
sed_getJobDescription HTTP POST "/v1/job-description/get"

InternalGetJobDescription

На входе ID Должностной инструкции

На выходе атрибуты Должностной инструкции

Получение Должностной инструкции по идентификатору. Внутренняя команда.

Команда Путь
sed_internalGetJobDescription HTTP POST "/v1/job-description/internal-get"

ListJobDescriptions

На входе пустое тело, либо параметры фильтрации, сортировки и пагинации

На выходе список атрибутов каждого Доп. документа

Получение списка Доп. документов с фильтрацией, сортировкой и пагинацией.

Команда Путь
sed_listJobDescriptions HTTP POST "/v1/job-description/list"

UpdateJobDescription

На входе необходимые для обновления атрибуты Должностной инструкции, а также ID и версия

На выходе признак успешности

Обновление Должностной инструкции Поддерживается частичное изменение полей (если поле не указано, то оно не обновится). Чтобы занулить значение, нужно явно передать null.

Команда Путь
sed_updateJobDescription Kafka Topic "sed_commands"

DeleteJobDescription

На входе ID Должностной инструкции

На выходе результат удаления

Удаление Доп. документа по ID

Команда Путь
sed_deleteJobDescription Kafka Topic "sed_commands"

RequestAuthorForcedChange

Данные запроса и id сотрудника для смены автора

{
  "request":{
    "entityType": "InternalApprovalRequest",
    "objectId": "9154eb65-6c14-4b83-b35d-7162bdb92e0d"
  }, 
  "authorEmployeeId": "03ae21dc-65ca-4f40-be46-15e712f10447"
}

На выходе пустое тело запроса

Смена автора запроса

Команда Путь
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"]
}

На выходе пустое тело запроса

Редактирование списка участников стадий запросов

Команда Путь
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: json { "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": 0, "developmentReason": "", "developmentReasonManual": "", "developmentPriority": null, "includedInUPC": null, "developmentMethod": null, "action": "Create", "localNmd": false, "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": "Дирекция по добыче" } } } }

Команда Путь
sed_createArisDocument Kafka Topic "sed_commands"

CheckStageForSolution

На входе тип запроса, ID запроса и ID стадии

{
  "requestType": "BusinessProcessRequest",
  "requestId": "8c08fcd9-0539-49da-90f7-b90112581f0f",
  "stageTo": "00000001-0006-0000-0000-000000000000"
}

На выходе список незаполненных обязательных полей

{
    "emptyFields": [
        {
            "entityType": "BusinessProcessRequest",
            "objectId": "54d60b3f-988f-4d0c-8107-78147e9ed671",
            "field": "confirmEmployeeIds"
        },
        {
            "entityType": "BusinessProcessOwner",
            "objectId": "e5125c24-841b-4b30-82de-35b15f5e7c67",
            "field": "cnmdDzoList"
        }
    ]
}

Проверка заполненности обязательных полей перед переходом на стадию

Команда Путь
sed_checkStageForSolution Kafka Topic "sed_commands"

CheckNmdModelConditions

На входе UUID документа Nmd из Datamodel

"6afde98c-3522-4572-b351-de7d4e1b4e0b"

На выходе пустое тело запроса

Команда для проверки модели Nmd в айрис, в случае успеха 200 ОК, иначе ошибка.

Команда Путь
sed_checkNmdModelConditions HTTP POST "/v1/nmd-check/nmd-check-aris-model"

CheckNmdRequestModelConditions

На входе UUID документа NmdRequest из Datamodel

"6afde98c-3522-4572-b351-de7d4e1b4e0b"

На выходе пустое тело запроса

Команда для проверки модели NmdRequest в айрис, в случае успеха 200 ОК, иначе список ошибок по каждому нмд.

Команда Путь
sed_checkNmdRequestModelConditions HTTP POST "/v1/nmd-request-check/nmd-request-check-aris-model"

Объекты сервиса sed

StartRouteDTO

Поле Тип Обязательное Описание
requestType string да Тип запроса
data object нет Данные из запроса создания реквеста

AuthorizeDTO

Поле Тип Обязательное Описание
resourceId uuid нет Идентификатор объекта
resourceType string нет Типа объекта
actions string[] да Список идентификаторов действий
attributes [string, string[]] нет Список аттрибутов объекта
Поле Тип Обязательное Описание
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 да Действия над бизнес-объектами

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 бизнес-процесса ЦНМД
noOwnerOrganizationApproval 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 Соавторов
developmentHeadEmployeeId uuid да cnmd-api-adapter ID Руководителя разработки
number string да Версия
developmentType string да DevelopmentType Тип разработки
planningApprovalDate timestamp да Плановая дата запуска документа на экспертизу/согласование
developmentReason string нет DevelopmentReason Обоснование необходимости разработки
developmentReasonManual string да Обоснование необходимости разработки ручное заполненение
developmentPriority int нет Приоритет разработки
includedInUPC boolean нет Инициатива включена в УПЦ
developmentMethod string нет DevelopmentMethod Способ разработки НМД
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 нет ArisModelId привязанного файла
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 сотрудников - Представители функции (организация Владельца процесса) только для стадии Функциональная экспертиза
functionalMemberEmployeeIds string[] нет Список ID сотрудников - Представители функции (организации-участники процесса) только для стадии Функциональная экспертиза
methodologistEmployeeIds string[] да Список ID сотрудников - Согласующие методологи (Автозаполняемое)
methodologistEmployeeIdsManual string[] да Список ID сотрудников - Согласующие методологи (Заполняемое вручную)
additionalEmployeeIds 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 стандартизатора(ЦНМД)

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 сотрудников - дополнительных согласующих
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 стандартизатора(ЦНМД)

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 сотрудников - дополнительных согласующих
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 стандартизатора(ЦНМД)

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[] нет Дополнительные согласующие
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[] да Обязательные согласующие
confirmEmployeeId 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 бизнес-процесса (из ЦНМД)
noOwnerOrganizationApproval 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 сотрудников - соавторов документа
developmentHeadEmployeeId uuid да cnmd-api-adapter ID сотрудника - руководителя разработки
number string да Версия
developmentType string да DevelopmentType Тип разработки
planningApprovalDate timestamp да Плановая дата запуска документа на экспертизу/согласование
developmentReason string нет DevelopmentReason Обоснование необходимости разработки
developmentReasonManual string да Обоснование необходимости разработки ручное заполненение
developmentPriority int нет Приоритет разработки
includedInUPC boolean нет Инициатива включена в УПЦ
developmentMethod string нет DevelopmentMethod Способ разработки НМД
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

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
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 да Фамилия
email 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 да Код процесса
processKind string нет BusinessProcessKind Вид процесса
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 да Согласующие методологи
functionRepresentativeIds 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[] да Согласующие методологи
functionRepresentativeLocalIds 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)
DeveloperNameRUS string да ФИО руководителя разработки
DeveloperPos string да Должность руководителя разработки
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

Поле Тип Обязательное Описание
orgBpInAnotherRequestError [EntityObject][] да бизнес-процессы, которые редактируются в других запросах
bpsWithActiveDocsEmptyAction [BpParticipantWithOrgId] да найдены активные документы, action БП пустой
bpsWithActiveDocsChangeAction [BpParticipantWithOrgId] да найдены активные документы, action БП Change
bpsWithoutErrorCreateAction [BpParticipantWithOrgId] да не найдены активные документы, action БП Create
bpsWithoutErrorOtherActions [BpParticipantWithOrgId] да не найдены активные документы, action БП != Create

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 да Наименование незаполненного поля сущности