Формулировка проблемы: в результате реализации задачи про добавление справочника типов работ по резолюции необходима аналогичная доработка в мобильном клиенте. Для этого необходимо доработать соответствующие методы API.
Решение: необходимо доработать следующие методы API:
Необходимо добавить в метод API
rest/api/settings/get выходной параметр
resolution_work_types - типы работ по
резолюции, который должен передавать массив json'ов на каждую
строку соответствующего справочника:
dict_id - UUID записи справочника;
item_number - порядковый номер пункта в
выпадающем списке;
item_process - действие, которое
осуществляет пункт;
item_name - название пункта типа работы.
В случае, если такой справочник в системе отсутствует, API должен
возвращать дефолтные значения (кроме dict_id),
указанные в примере ниже.
Пример возвращаемого массива
{
...
"resolution_work_types": [
{
"dict_id": "5d644484-a787-4b9f-91f7-760043355cdc",
"item_number": 1,
"item_process": "assignment",
"item_name": "Работа"
},
{
"dict_id": "7b953be8-bddb-4ce4-bbfd-ae9548f69c7f",
"item_number": 2,
"item_process": "agreement",
"item_name": "Согласование"
},
{
"dict_id": "3169a9dd-903f-422a-945e-ef9320df3768",
"item_number": 3,
"item_process": "approval",
"item_name": "Утверждение"
},
{
"dict_id": "4eb20dc9-e0ca-4a8a-846b-4ea3b9a46150",
"item_number": 4,
"item_process": "acquaintance",
"item_name": "Ознакомление"
},
{
"dict_id": "599914b8-d88b-4311-91a4-2583b0188063",
"item_number": 5,
"item_process": "resolution",
"item_name": "Резолюция"
},
{
"dict_id": "8f1c18f2-e3a8-4fd2-96ae-4f5309f5de86",
"item_number": 6,
"item_process": "send-document",
"item_name": "Отправка документа"
}
]
}
Необходимо добавить в конец метода API
rest/api/docflow/doc/get_resolution следующий
выходной параметр к описанию каждого из пунктов резолюции
(items):
dict_id - UUID записи справочника,
соответствующего типу работы по резолюции;
item_name - название пункта типа работы.
Пример возвращаемого массива
[
{
"statusID": 0,
"projectID": "64750f61-3393-425b-b07d-f63974372fa5",
"author": "Messi Leonel",
"canEdit": "true",
"controlled": "true",
"maxFinishDate" : "2014-12-17 00:00:00"
"items": [
{
"name": "12345",
"itemID" : "32310f61-3393-425b-b07d-f63974372fa5",
"userID": "e45a1a15-3c8a-434f-afa7-4d4df8baa579",
"user": "Пользователь 1",
"users": [
{
"user": "Пользователь 2",
"userID": "9a426339-a140-4ca1-ada5-e441257660f1"
},
{
"user": "Пользователь 3",
"userID": "da902b13-a3e8-4e7e-adfd-0bf5e67be5ae"
}
],
"finishdate": {
"date": "1414519200000"
},
"typeID": 3,
"completionFormID": "4eb20dc9-e0ca-4a8a-846b-4ea3b9a46150",
"dict_id": "5d644484-a787-4b9f-91f7-760043355cdc",
"item_name": "Работа"
}
]
}
]
Необходимо доработать входную json-строку с пунктами резолюций
data в методе API
rest/api/docflow/doc/save_resolution таким
образом, чтобы кроме параметра typeID (тип
резолюции) передавать и следующий параметр:
dict_id - UUID записи справочника.
Один из параметров typeID /
dictID должен быть передан обязательно.
Альтернативные потоки событий для случая, когда не
передан параметр dictID.
Альтернативный поток №1. Не передан параметр
typeID. Сервер возвращает ошибку:
Не передан тип резолюции
действие не осуществляется.
Альтернативный поток №2. Передан некорректный параметр
typeID (любое значение, отличное от 0 / 1 /
2 / 3 / 17 / 33). Сервер возвращает ошибку:
Некорректный тип резолюции
действие не осуществляется.
Альтернативный поток №3. Передан корректный (любое значение из
0 / 1 / 2 / 3 / 17 / 33), но несуществующий в справочнике
параметр typeID. Сервер возвращает ошибку:
Выбранный тип работы по резолюции отсутствует в справочнике. Выберите другое значение.
действие не осуществляется.
Альтернативный поток №4. Если справочник
resolution_work_types содержит несколько
записей с переданным typeID, то в качестве
типа работы необходимо использовать первый (с наименьшим
порядковым номером) из списка типов с данным
typeID.
Альтернативные потоки событий для случая, когда параметр
dictID передан (незаивисмо от того, передан ли
typeID).
Альтернативный поток №5. Передан некорректный параметр
dictID. Сервер возвращает ошибку:
Выбранный тип работы по резолюции отсутствует в справочнике. Выберите другое значение.
Пример передачи пункта резолюции
{
data=%5B%7B%22name%22%3A+%221%22%2C+
%22userID%22%3A+%227b953be8-bddb-4ce4-bbfd-ae9548f69c7f%22%2C+
%22finishDate%22%3A+%223411722780000%22%2C+
%22typeID%22%3A+%223%22%2C+
%22dict_id%22%3A+%225d644484-a787-4b9f-91f7-760043355cdc%22%2C&
type=SAVE&
workID=5d644484-a787-4b9f-91f7-760043355cdc
}