Формулировка проблемы: для реализации нового модуля «Документы» в мобильном клиенте требуется реализовать API для получения фильтров документов.
Решение: необходимо реализовать два новых метода API, которые должны позволять получать фильтры для документов, в т.ч. избранные.
Метод, возвращающий фильтры для документов
URL
метода:
rest/api/docflow/doc/documents_filters
. Типа
запроса: GET
.
Метод принимает следующие параметры:
filterType
:
REGISTER_FILTER
- документы журнала
(отображаются только пользователям с ролью «Сотрудник
канцелярии» с соответствующими правами);
DOCFILE_FILTER
- документы дел
(отображаются пользователям с ролью «Сотрудник канцелярии»,
а также пользователям с настроенным отображением
определенного дела для каждого из настроенных типов
документов);
ALL_USER_DOCUMENTS
- все документы к
которым пользователь имеет доступ;
USER_OWN_DOCUMENTS
- все собственные
документы пользователя;
USER_RECEIVED_DOCUMENTS
- все полученные
пользователем документы;
USER_SENT_DOCUMENTS
- все отправленные
пользователем документы;
objectID
- UUID объекта фильтра;
filterID
- UUID фильтра;
locale
- локаль пользователя,
ru/en/kz
(не обяз., по умолчанию
ru
).
Обязательность принимаемых параметров в зависимости от уровня фильтра и его происхождения:
корневые фильтры - ни один параметр;
фильтр второго уровня - filterType
;
фильтр третьего уровня - filterType
,
objectID
;
фильтр четвертого и последующих уровней -
filterType
, objectID
,
filterID
.
Примечания:
фильтры, созданные авторизованным пользователем не имеют
objectID
, но содержат
filterID
начиная со второго уровня;
фильтры «Мои», «Полученные» и «Отправленные» не имеют
objectID
и filterID
.
Альтернативные потоки событий:
при отсутствии введенных параметров, а также неправильно введенном названии самого параметра, метод возвращает корневые фильтры: «Журналы», «Дела» и «Все»;
система отображает пустой массив:
при внесении неполного списка параметров;
при вводе параметров фильтра, не имеющего дочерних;
если пользователь не имеет прав на просмотр документов определенного узла;
при вводе невалидного параметра filterType
система выдает ошибку «Неправильный
filterType
», фильтр не возвращается;
при вводе невалидного параметра filterID
,
либо objectID
система выдает ошибку
«Неправильный filterID/objectID
», фильтр не
возвращается.
Метод возвращает json
со следующими полями:
для корневых фильтров:
name
- название фильтра;
filterType
- тип фильтра (см. выше);
count
- количество документов внутри
фильтра;
hasChildren
- имеет ли данный фильтр
дочерние (true
- да,
false
- нет);
в зависимости от последующих уровней фильтров и происхождения:
objectID
- UUID объекта фильтра
(добавляется со второго уровня, но отсутствует у фильтров,
созданных авторизованным пользователем);
filterID
- UUID фильтра (добавляется с
третьего уровня, а также присутствует у всех фильтров,
созданных авторизованным пользователем).
Примечание: начиная с четвертого уровня новые параметры не добавляются.
Метод, возвращающий избранные фильтры для документов
URL
метода:
rest/api/docflow/doc/favorite_doc_filters
. Типа
запроса: GET
.
Метод не принимает никакие параметры.
Метод возвращает json
со следующими полями:
name
- название фильтра;
filterType
- тип фильтра;
objectID
- UUID объекта фильтра;
filterID
- UUID фильтра.
Примеры возвращаемых массивов
json
корневых фильтров:
[ { "name": "Журналы", "filterType": "REGISTER_FILTER", "count": "17", "hasChildren": "true" }, { "name": "Дела", "filterType": "DOCFILE_FILTER", "count": "0", "hasChildren": "true" }, { "name": "Все", "filterType": "ALL_USER_DOCUMENTS", "count": "328", "hasChildren": "true" } ]
json
фильтров второго уровня:
[ { "name": "Внутренние документы", "filterType": "REGISTER_FILTER", "objectID": "internal_docs", "count": "2", "hasChildren": "true" }, { "name": "Входящие документы", "filterType": "REGISTER_FILTER", "objectID": "in_docs", "count": "12", "hasChildren": "true" }, { "name": "Договоры", "filterType": "REGISTER_FILTER", "objectID": "2f74f563-7366-4d60-a86d-15843108f256", "count": "0", "hasChildren": "true" }, { "name": "Журнал с авторегистрацией", "filterType": "REGISTER_FILTER", "objectID": "337958a5-5dd2-496b-b18f-72f1d0d673d8", "count": "0", "hasChildren": "true" }, { "name": "Заявление", "filterType": "REGISTER_FILTER", "objectID": "19b6232d-5ed7-45d6-a113-f86d143e5274", "count": "0", "hasChildren": "true" }, { "name": "Исходящие документы", "filterType": "REGISTER_FILTER", "objectID": "out_docs", "count": "2", "hasChildren": "true" }, { "name": "тестЖурнал", "filterType": "REGISTER_FILTER", "objectID": "d4bdb344-2037-4aa7-8878-c6db2790d6cb", "count": "1", "hasChildren": "true" } ]
json
фильтров третьего уровня:
[ { "name": "On registration", "filterType": "REGISTER_FILTER", "filterID": "3e54a5c4-603a-418f-bb43-c34117b7f855", "objectID": "internal_docs", "count": "1", "hasChildren": "true" }, { "name": "In progress", "filterType": "REGISTER_FILTER", "filterID": "03f46a0c-bafb-4aa0-b4dd-708be03f5c35", "objectID": "internal_docs", "count": "0", "hasChildren": "true" }, { "name": "Expired", "filterType": "REGISTER_FILTER", "filterID": "8dfdd85d-3c55-47fc-8ab6-d76387e359a0", "objectID": "internal_docs", "count": "0", "hasChildren": "true" }, { "name": "Finished", "filterType": "REGISTER_FILTER", "filterID": "a3834317-0fd4-4887-8143-e9e6ac72acbe", "objectID": "internal_docs", "count": "1", "hasChildren": "true" }, { "name": "On control", "filterType": "REGISTER_FILTER", "filterID": "83fa806b-ce56-486f-95fe-59e03e3b99ca", "objectID": "internal_docs", "count": "0", "hasChildren": "true" } ]
json
фильтров четвертого уровня:
[ { "name": "Фильтр четвертого уровня 1", "filterType": "REGISTER_FILTER", "filterID": "8e0b82ff-7832-4e7b-adbe-6b495fe8f617", "objectID": "internal_docs", "count": "1", "hasChildren": "false" }, { "name": "Фильтр четвертого уровня 2", "filterType": "REGISTER_FILTER", "filterID": "e5c62d5e-df03-43cc-8899-c1a91855f432", "objectID": "internal_docs", "count": "1", "hasChildren": "false" } ]
json
избранных фильтров:
[ { "name": "О боже какой фильтр", "filterID": "e9bf8e89-6d51-46be-946c-4d4372b5d0cf", "filterType": "USER_OWN_DOCUMENTS" }, { "name": "Я хочу от тебя дочерних", "filterID": "c04394f0-4ea3-4946-a74e-74637affecca", "filterType": "USER_OWN_DOCUMENTS" }, { "name": "Журналы", "filterType": "REGISTER_FILTER" }, { "name": "Фильтр четвертого уровня 1", "filterID": "8e0b82ff-7832-4e7b-adbe-6b495fe8f617", "filterType": "REGISTER_FILTER" }, { "name": "Отправленные", "filterType": "USER_SENT_DOCUMENTS" }, { "name": "Все", "filterType": "ALL_USER_DOCUMENTS" }, { "name": "Исходящие документы", "filterType": "REGISTER_FILTER" } ]