Формулировка проблемы: для реализации метода создания документа по реестру необходим перечень полей РКК по типу документа данного реестра.
Решение: для этого необходимо реализовать следующие API методы:
Метод для получения списка типов документов
URL метода: rest/api/docflow/doctypes
Тип запроса: GET
Метод принимает следующие входные параметры:
registerID - идентификатор журнала (необяз.).
При вводе данного параметра возвращаются те типы документов,
которые относятся к данному журналу;
description - параметр (необяз., по умолчанию
short), который принимает следующие значения:
full - возвращается полное описание типа
документа
short - возвращается только
идентификатор, код и название типа документа
recordsCount - количество результатов,
которые необходимо вернуть (по умолчанию 30). Максимальное
значение параметра 100;
page - номер страницы (по умолчанию 0);
locale (не обяз.) - код локали (при
отсутствии параметра используется
язык
системы по умолчанию).
Данный метод возвращает список всех типов документов либо при указании идентификатора журнала список типов документов данного журнала с полным либо кратким описанием. Список типов документов возвращается с учетом прав пользователя, который вызывает API метод, на данные типы документов. Если у пользователя нет доступа к какому-либо типу документа, то данный тип не возвращается в списке.
Метод при условии description=short
возвращает массив JSON, состоящий из следующих полей:
typeID - идентификатор типа документа
code - код типа документа
name - название типа документа
Метод при условии description=full
возвращает массив JSON, состоящий из следующих полей:
typeID - идентификатор типа документа
code - код типа документа
name - название типа документа
calc_method_term - способ расчета срока, один
из следующих вариантов:
WORKING_DAYS - в рабочих днях
CALENDAR_DAYS - в календарных днях
duration - длительность по умолчанию (в днях)
input_method_term - способ ввода срока, один
из следующих вариантов:
DURATION - длительность
FINISH_DATE - дата завершения
registerID - идентификатор журнала
baseRegisterID - идентификатор базового
журнала
formID - идентификатор формы
form_type - тип реализации формы, один из
следующих вариантов:
0 - форма на основе xform
1 - новая реализация форм
routes - массив, который содержит названия
шаблонов маршрутов
checkDocCard - валидация ркк перед отправкой,
один из следующих вариантов:
true - проводится валидация РКК перед
отправкой документа
false - валидация не проводится
demand_resuser - требовать ввода исполнителя,
один из следующих вариантов:
true - требуется ввод исполнителя перед
отправкой документа
false - ввод исполнителя не требуется
demand_docfile - требовать указания дела,
один из следующих вариантов:
true - требуется указание дела перед
отправкой документа
false - указание дела не требуется
demand_regcomment - требовать ввода
комментария при регистрации. Один из следующих вариантов:
true - требуется ввод комментария при
регистрации
false - ввод комментария не требуется
reg_condition - массив, который содержит
условия регистрации. В данном массиве возвращаются только те
условия, которые отмечены для проверки на наличие. Если ни одно
из условий не отмечено, то массив возвращается пустой. Условия
регистрации следующие:
- `demand_signature` - наличие подписи - `demand_approval` - наличие утверждения - `demand_resolution` - наличие резолюции
fields - массив объектов со следующими
полями:
name - название поля РКК, один из
следующих вариантов:
subject - краткое содержание
doc_type - тип документа
number - номер
reg_date - дата регистрации
duration - длительность/завершение
correspondent_org - корреспондент
(орг)
correspondent - корреспондент
author - автор
reg_user - зарегистрировал
control - является контрольным
base_number - номер исх.
base_date - дата исх.
doc_file - дело
base - основание
user - исполнитель
number - порядковый номер поля,
отсутствует только для поля user.
В данном массиве объектов возвращаются только те поля, которые отмечены для отображения в карточке документа. Поля, которые не отображаются в карточке документа, в данном массиве объектов не возвращаются.
Примеры запроса:
/rest/api/docflow/doctypes?description=full
/rest/api/docflow/doctypes?registerID=8f85e270-ebf1-11e5-835c-525400bb7fc6&recordsCount=10
Пример возвращаемого массива при условии
description=full:
[
{
"typeID" : "f30f6b31-4cbe-12e31f70-8030-0012a4ee",
"code" : "internal",
"name" : "Внутренние документы",
"calc_method_term" : "WORKING_DAYS",
"duration" : 5,
"input_method_term" : "DURATION",
"registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6",
"baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6",
"formID" : "52sf2270-4cc0-11e6-8030-001ef892a4ee",
"form_type" : 0,
"routes" :
[
"Шаблон приказов",
"Шаблон заявлений"
],
"checkDocCard" : false,
"demand_resuser" : false,
"demand_docfile" : false,
"demand_regcomment" : false,
"reg_condition" :
[
"demand_signature",
"demand_approval"
],
"fields" :
[
{ "name" : "subject", "number" : 1 },
{ "name" : "doc_type", "number" : 2 },
{ "name" : "number", "number" : 3 },
{ "name" : "reg_date", "number" : 4 },
{ "name" : "correspondent_org", "number" : 5 },
{ "name" : "correspondent", "number" : 6 },
{ "name" : "author", "number" : 7 },
{ "name" : "reg_user", "number" : 9 },
{ "name" : "control", "number" : 10 },
{ "name" : "doc_file", "number" : 13 },
{ "name" : "base", "number" : 14 }
]
},
{
"typeID" : "0db3a170-4e38-11e6-8030-001ef892a4ee",
"code" : "incoming",
"name" : "Входящие документы",
"calc_method_term" : "WORKING_DAYS",
"duration" : 5,
"input_method_term" : "DURATION",
"registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6",
"baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6",
"formID" : "22s12270-4cc0-11e6-8030-001ef892a4ee",
"form_type" : 0,
"routes" :
[
"Шаблон входящих писем",
"Шаблон писем"
],
"checkDocCard" : false,
"demand_resuser" : false,
"demand_docfile" : false,
"demand_regcomment" : false,
"reg_condition" :
[
"demand_signature",
"demand_approval"
],
"fields" :
[
{ "name" : "subject", "number" : 1 },
{ "name" : "doc_type", "number" : 2 },
{ "name" : "number", "number" : 3 },
{ "name" : "reg_date", "number" : 4 },
{ "name" : "correspondent_org", "number" : 5 },
{ "name" : "correspondent", "number" : 6 },
{ "name" : "author", "number" : 7 },
{ "name" : "reg_user", "number" : 9 },
{ "name" : "control", "number" : 10 },
{ "name" : "doc_file", "number" : 13 },
{ "name" : "base", "number" : 14 }
]
},
{
"typeID" : "fd96dff0-4e37-11e6-8030-001ef892a4ee",
"code" : "outgoing",
"name" : "Исходящие документы",
"calc_method_term" : "WORKING_DAYS",
"duration" : 5,
"input_method_term" : "DURATION",
"registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6",
"baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6",
"formID" : "21df270-4cc0-11e6-8030-001ef892a4ee",
"form_type" : 0,
"routes" :
[
"Шаблон заявок",
"Шаблон заявок на закуп"
],
"checkDocCard" : false,
"demand_resuser" : false,
"demand_docfile" : false,
"demand_regcomment" : false,
"reg_condition" :
[
"demand_signature",
"demand_approval"
],
"fields" :
[
{ "name" : "subject", "number" : 1 },
{ "name" : "doc_type", "number" : 2 },
{ "name" : "number", "number" : 3 },
{ "name" : "reg_date", "number" : 4 },
{ "name" : "correspondent_org", "number" : 5 },
{ "name" : "correspondent", "number" : 6 },
{ "name" : "author", "number" : 7 },
{ "name" : "reg_user", "number" : 9 },
{ "name" : "control", "number" : 10 },
{ "name" : "doc_file", "number" : 13 },
{ "name" : "base", "number" : 14 }
]
}
]
Метод для получения описания типа документа
URL метода:
rest/api/docflow/doctypes/{docTypeCode}
Тип запроса: GET
Метод принимает следующие входные параметры:
code - код типа документа (необяз.);
locale - идентификатор локали (необяз., по
умолчанию идентификатор локали с кодом ru).
Метод возвращает полное описание типа документа по его коду, в том числе и перечень отображаемых в карточке документа полей с учетом прав пользователя, который вызывает API метод, на данный тип документа.
Метод возвращает объект JSON, состоящий из следующих полей:
typeID - идентификатор типа документа
code - код типа должности
name - название типа документа
calc_method_term - способ расчета срока, один
из следующих вариантов:
WORKING_DAYS - в рабочих днях
CALENDAR_DAYS - в календарных днях
duration - длительность по умолчанию (в днях)
input_method_term - способ ввода срока, один
из следующих вариантов:
DURATION - длительность
FINISH_DATE - дата завершения
registerID - идентификатор журнала
baseRegisterID - идентификатор базового
журнала
formID - идентификатор формы
form_type - тип реализации формы, один из
следующих вариантов:
0 - форма на основе xform
1 - новая реализация форм
routes - массив, который содержит названия
шаблонов маршрутов
checkDocCard - валидация ркк перед отправкой,
один из следующих вариантов:
true - проводится валидация РКК перед
отправкой документа
false - валидация не проводится
demand_resuser - требовать ввода исполнителя,
один из следующих вариантов:
true - требуется ввод исполнителя перед
отправкой документа
false - ввод исполнителя не требуется
demand_docfile - требовать указания дела,
один из следующих вариантов:
true - требуется указание дела перед
отправкой документа
false - ввод исполнителя не требуется
demand_regcomment - требовать ввода
комментария при регистрации. Один из следующих вариантов:
true - требуется ввод комментария при
регистрации
false - ввод комментария не требуется
reg_condition - массив, который содержит
условия регистрации. В данном массиве возвращаются только те
условия, которые отмечены для проверки на наличие. Если ни одно
из условий не отмечено, то массив возвращается пустой. Условия
регистрации следующие:
- `demand_signature` - наличие подписи - `demand_approval` - наличие утверждения - `demand_resolution` - наличие резолюции
fields - массив объектов со следующими
полями:
name - название поля РКК, один из
следующих вариантов:
subject - краткое содержание
doc_type - тип документа
number - номер
reg_date - дата регистрации
duration - длительность/завершение
correspondent_org - корреспондент
(орг)
correspondent - корреспондент
author - автор
reg_user - зарегистрировал
control - является контрольным
base_number - номер исх.
base_date - дата исх.
doc_file - дело
base - основание
user - исполнитель
number - порядковый номер поля,
отсутствует только для поля user.
В данном массиве объектов возвращаются только те поля, которые отмечены для отображения в карточке документа. Поля, которые не отображаются в карточке документа, в данном массиве объектов не возвращаются.
Примеры запроса:
/rest/api/docflow/doctypes/outgoing
Пример возвращаемого объекта JSON при указании кода типа документа:
{
"typeID" : "fd96dff0-4e37-11e6-8030-001ef892a4ee",
"code" : "outgoing",
"name" : "Исходящие документы",
"calc_method_term" : "WORKING_DAYS",
"duration" : 5,
"input_method_term" : "DURATION",
"registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6",
"baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6",
"formID" : "66df2270-4cc0-11e6-8030-001ef892a4ee",
"form_type" : 0,
"routes" :
[
"Шаблон заявок",
"Шаблон заявок на закуп"
],
"checkDocCard" : false,
"demand_resuser" : false,
"demand_docfile" : false,
"demand_regcomment" : false,
"reg_condition" :
[
"demand_signature",
"demand_approval"
],
"fields" :
[
{ "name" : "subject", "number" : 1 },
{ "name" : "doc_type", "number" : 2 },
{ "name" : "number", "number" : 3 },
{ "name" : "reg_date", "number" : 4 },
{ "name" : "correspondent_org", "number" : 5 },
{ "name" : "correspondent", "number" : 6 },
{ "name" : "author", "number" : 7 },
{ "name" : "reg_user", "number" : 9 },
{ "name" : "control", "number" : 10 },
{ "name" : "doc_file", "number" : 13 },
{ "name" : "base", "number" : 14 }
]
}
Альтернативные потоки событий
Метод для получения списка типов документов
Альтернативный поток №1. Передан некорректный
(несуществующий) параметр registerID.
Сервер возвращает ошибку HTTP 400 с текстом:
{
"errorCode" : 3,
"errorMessage" : "Передан некорректный параметр registerID"
}
действие не выполняется.
Метод для получения описания типа документа
Альтернативный поток №1. Передан некорректный
(несуществующий) параметр code. Сервер
возвращает ошибку HTTP 400 с текстом:
{
"errorCode" : 3,
"errorMessage" : "Передан некорректный параметр code"
}
действие не выполняется.
Альтернативный поток №2. У пользователя нет прав на данный тип документа. Сервер возвращает ошибку HTTP 403 с сообщением:
{
"errorCode" : 2,
"errorMessage" : "У вас отсутствуют права на данный тип документа"
}
действие не выполняется.