Метод «Создать задачу на обработку описи дел»¶
Endpoint: POST {hostname}/ldm-long-term-archive-service/api/v1/inventory-task
Метод позволяет создать в Системе новую задачу на обработку описи дел структурного подразделения и подчиненные задачи на каждый документ и файл.
Сценарий выполнения:
- Верификация входящего сообщения. В теле входящего сообщения передается идентификатор описи дел структурного подразделения.
- Определяется список томов дела, включенного в опись дел структурного подразделения. Осуществляется получение связи описи и томов дела с помощью атрибутивного поиска сервиса dh-relations-service, где передается параметр «className», равный «da_relation_inventory_files_sections» и параметр «source.id», равный идентификатору описи дел структурного подразделения.
- Для каждого тома дела, полученного на этапе 2 («target.id»), определяется список документов, включенных в том дела. Для этого используется метод GET /api/v1/collections/{collectionId}/content сервиса dh-collections-service, где в качестве «collectionId» передается идентификатор тома дела.
-
Для каждого документа, полученного на этапе 3, определяется список связанных с ним файлов:
a. Осуществляется получение описания документа с помощью метода GET /api/v1/documents/{id} сервиса dh-documents-service, где передавается идентификатор документа.
b. Осуществляется получение вложенных документов с помощью метода GET /api/v1/documents/{id}/versions/{versionId}/include, где {id} и {versionId} – идентификатор документа и версии документа соответственно из этапа 4a. Идентификатор файла для каждого документа берется из параметра «fileId».
-
Создается задача в таблице «inventory_task» с параметрами, указанными в таблице (таблица Параметры задачи в таблице «inventory_task»).
- Для каждого документа, найденного на этапе 3, создается подзадача в таблице «document_subtask» с параметрами, указанными в таблице (таблица Параметры подзадачи в таблице «document_subtask»). Если для какого-либо документа на этапе 4b не найдено ни одного вложенного документа (или для всех найденных вложенных документов значение «fileId» равно «null»), то задача создается в статусе «WAITING».
- Для каждого файла, найденного на этапе 4b, создается подзадача в таблице «file_subtask» с параметрами, указанными в таблице (таблица Параметры задачи в таблице «file_subtask»).
- Сервис возвращает в ответе <201 Created> и LdmInventoryTaskDto с созданной задачей.
- Формируется доменное событие
. - Выполняется активация монитора состояний задач.
Параметры задачи в таблице «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"
}
}'