Формулировка проблемы: в результате реализации задачи про добавление справочника типов работ по резолюции необходима аналогичная доработка в мобильном клиенте. Для этого необходимо доработать соответствующие методы 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 }