Формулировка проблемы: для реализации нового модуля «Документы» в мобильном клиенте требуется реализовать API для получения списка документов.
Решение: необходимо реализовать новый метод API, который должен позволять получать список документов.
URL метода:
rest/api/docflow/doc/documents. Типа запроса:
GET.
Метод принимает следующие параметры:
filterType (не обяз.):
REGISTER_FILTER - документы журнала
(отображаются только пользователям с ролью «Сотрудник
канцелярии» с соответствующими правами);
DOCFILE_FILTER - документы дел
(отображаются пользователям с ролью «Сотрудник канцелярии»,
а также пользователям с настроенным отображением
определенного дела для каждого из настроенных типов
документов);
ALL_USER_DOCUMENTS - все документы к
которым пользователь имеет доступ;
USER_OWN_DOCUMENTS - все собственные
документы пользователя;
USER_RECEIVED_DOCUMENTS - все полученные
пользователем документы;
USER_SENT_DOCUMENTS - все отправленные
пользователем документы;
filterID - UUID фильтра (не обяз.);
objectID - UUID объекта фильтра (не обяз.);
pageNumber - номер страницы (не обяз., по
умолчанию, 0);
countInPart - количество отображаемых
документов (не обяз., по умолчанию, 30);
locale - локаль пользователя,
ru/en/kz (не обяз., по умолчанию
ru).
Альтернативные потоки событий:
при отсутствии введенных параметров метод возвращает список документов первого фильтра в списке доступных пользователю («Мои», «Дела», либо «Журналы»);
если пользователь не имеет прав на просмотр документов определенного узла, система отображает пустой массив;
при вводе невалидного параметра filterType
система выдает ошибку «Неправильный
filterType», список не возвращается;
при вводе невалидного параметра filterID,
либо objectID система выдает ошибку
«Неправильный filterID/objectID», список не
возвращается.
Метод возвращает json со следующими полями:
name - краткое содержание документа;
content - значащее содержимое документа;
documentID - UUID документа;
number - номер документа;
author - Фамилия И.О.
автора документа;
user - Фамилия И.О.
пользователя, которому отписан документ;
regUser - Фамилия И.О.
пользователя, зарегистрировавшего документ;
resUsers - Фамилия И.О.
пользователей, у которых документ находится на исполнении;
to - Фамилия И.О.
адресатов;
from - Фамилия И.О.
адресантов;
type - тип документа
(DOCUMENT - документ,
EMAIL - письмо);
correspondent - корреспондент;
correspondentOrg - корреспондент (орг);
createDate - время и дата создания документа
в формате DD.MM.YY hh:mm;
regDate - время и дата регистрации документа
в формате DD.MM.YY hh:mm;
statusID - статус документа
(NOT_STARTED - на регистрации,
IN_PROGRESS - на исполнении,
FINISHED - завершен, DRAFT
- черновик, REJECTED - отклонен);
inProgress - находится ли документ в процессе
(true - да, false - нет);
hasChildren - имеет ли документ дочерние
документы (true - да,
false - нет);
isNew - есть ли изменения в документе,
непросмотренные пользователем (true - да,
false - нет);
hasResolution - наложена ли резолюция на
данный документ (true - да,
false - нет);
hidden - скрыт ли документ
(true - да, false - нет);
registered - зарегистрирован ли документ
(true - да, false - нет);
finished - завершен ли документ
(true - да, false - нет);
controlled - является ли документ контрольным
(true - да, false - нет);
hasAttachments - имеет ли документ вложения
(true - да, false - нет);
defective - бракованный ли документ
(true - да, false - нет);
isExpired - хотя бы одна работа по маршруту
документа просрочена (true - да,
false - нет);
isSoonExpired - хотя бы у одной работы по
маршруту документа истекает срок (true - да,
false - нет).
Примечание: поля «От» и «Кому» заполняются по количеству произведенных соответствующих действий, в обратном порядке; если один и тот же пользователь выполнял действие несколько раз подряд, то оставляется только одна запись.
Пример возвращаемого массива
[
{
"name": "for api testing 123456, метод: /rest/api/docflow/doc/save_resolution",
"content": "",
"documentID": "f40b665c-f1f4-40b3-bdc5-291911def539",
"number": "{№ Вн.документа}-30-Apr-13",
"author": "Бобров С.Е.",
"user": "Абдрешен Л.С.",
"regUser": "",
"resUsers": "",
"to": "",
"from": "",
"correspondent": "",
"correspondentOrg": "",
"type": "DOCUMENT",
"createDate": "2014-10-20 11:09:00",
"regDate": "",
"statusID": "NOT_STARTED",
"isExpired": "true",
"isSoonExpired": "true",
"hasChildren": "true",
"hasResolution": "false",
"isNew": "false",
"hidden": "false",
"registered": "false",
"finished": "false",
"inProgress": "false",
"controlled": "false",
"hasAttachments": "true",
"defective": "false"
}
]