Формулировка проблемы: для реализации нового модуля «Документы» в мобильном клиенте требуется реализовать 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"
}
]