Метод «Создать задачу на обработку описи дел»

Endpoint: POST {hostname}/ldm-long-term-archive-service/api/v1/inventory-task

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

Сценарий выполнения:

  1. Верификация входящего сообщения. В теле входящего сообщения передается идентификатор описи дел структурного подразделения.
  2. Определяется список томов дела, включенного в опись дел структурного подразделения. Осуществляется получение связи описи и томов дела с помощью атрибутивного поиска сервиса dh-relations-service, где передается параметр «className», равный «da_relation_inventory_files_sections» и параметр «source.id», равный идентификатору описи дел структурного подразделения.
  3. Для каждого тома дела, полученного на этапе 2 («target.id»), определяется список документов, включенных в том дела. Для этого используется метод GET /api/v1/collections/{collectionId}/content сервиса dh-collections-service, где в качестве «collectionId» передается идентификатор тома дела.
  4. Для каждого документа, полученного на этапе 3, определяется список связанных с ним файлов:

    a. Осуществляется получение описания документа с помощью метода GET /api/v1/documents/{id} сервиса dh-documents-service, где передавается идентификатор документа.

    b. Осуществляется получение вложенных документов с помощью метода GET /api/v1/documents/{id}/versions/{versionId}/include, где {id} и {versionId} – идентификатор документа и версии документа соответственно из этапа 4a. Идентификатор файла для каждого документа берется из параметра «fileId».

  5. Создается задача в таблице «inventory_task» с параметрами, указанными в таблице (таблица Параметры задачи в таблице «inventory_task»).

  6. Для каждого документа, найденного на этапе 3, создается подзадача в таблице «document_subtask» с параметрами, указанными в таблице (таблица Параметры подзадачи в таблице «document_subtask»). Если для какого-либо документа на этапе 4b не найдено ни одного вложенного документа (или для всех найденных вложенных документов значение «fileId» равно «null»), то задача создается в статусе «WAITING».
  7. Для каждого файла, найденного на этапе 4b, создается подзадача в таблице «file_subtask» с параметрами, указанными в таблице (таблица Параметры задачи в таблице «file_subtask»).
  8. Сервис возвращает в ответе <201 Created> и LdmInventoryTaskDto с созданной задачей.
  9. Формируется доменное событие .
  10. Выполняется активация монитора состояний задач.

Параметры задачи в таблице «inventory_task»

Поле таблицы Принцип заполнения
id Автогенерация
inventory_id Id описи из тела сообщения
task_status PROCESSING
storage_type Значение определяется из атрибута «da_inventory_storage_type» (осуществляется получение для значения его системного кода «fr_system_code»)

Параметры подзадачи в таблице «document_subtask»

Поле таблицы Принцип заполнения
id Автогенерация
document_id Идентификатор документа, для которого создается задача
file_section_id Идентификатор тома, в котором был найден документ на этапе 3
inventory_task_id Идентификатор задачи, созданной на этапе 5
document_subtask_status CREATED
document_subtask_stage CREATE_TASK
retry_number 0
error_text -
archive_doc_id -
file_id Идентификатор дела, в которое включен документ

Параметры задачи в таблице «file_subtask»

Поле таблицы Принцип заполнения
id Автогенерация
file_id Идентификатор файла, для которого создается задача
document_subtask_id Идентификатор подзадачи для документа, с которым связан данный файл
file_subtask_status WAITING
file_subtask_stage CREATE_TASK
retry_number 0
error_text -
file_type MAIN – если файл связан с вложенным документов класса «da_main_document» ADDITIONAL – если файл связан с вложенным документом класса «da_additional_document»

Маппинг параметров запроса метода «Создать новое дело»

Входящие параметры Тип данных Способ передачи параметров Требования к заполнению
inventoryId string($uuid) Body Идентификатор описи дел структурного подразделения

Пример запроса:

curl -X 'POST' \
  'https://editor-next.swagger.io/api//v1/inventory-task' \
  -H 'accept: text/plain' \
  -H 'Content-Type: application/json' \
  -d '{
{
  "inventoryId": "3fa85f64-5717-4562-b3fc-2c963f66afa6" 
}
}'