Формулировка проблемы: необходимо доработать
метод API save_resolution
таким образом, чтобы
можно было наложить резолюцию на документ как с работами, так и без
работ.
Решение: в методе
save_resolution
, который сохраняет / принимает
резолюцию, к текущим параметрам необходимо добавить новый
documentID
.
URL
метода:
rest/api/docflow/doc/save_resolution
. Тип
запроса: POST
. Кодировка:
UTF8
.
Метод принимает следующие строковые параметры:
workID
- uuid работы, из которой
накладывается резолюция;
documentID
- uuid документа, на который
накладывается резолюция;
Примечание: один из параметров
workID
/ documentID
должен
быть обязательно.
data
- json
строка с
пунктами резолюции (обяз.);
controlled
- опция "Является
контрольным" (не обяз., по умолчанию
false
);
type
- тип операции, одно из значений
(обяз.):
SAVE - сохранить;
ACCEPT - подтвердить;
projectID
- uuid резолюции (не обяз. при
создании резолюции, обяз. при редактировании резолюции);
locale
- локаль пользователя,
ru/en/kz
(не обяз., по умолчанию
ru
).
Пример json
строки data
:
[ { "name": "item 1", "userID": "fdb874fa-e5cf-4454-bd7c-1727fed23a3e", "usersID": [ "fdb874fa-e5cf-4454-bd7c-1727fed23a3e", "c6caf840-d39b-41fc-83c6-e015a264677a" ], "finishDate": "1411722780000", "typeID": "0", "completionFormID": "4eb20dc9-e0ca-4a8a-846b-4ea3b9a46150", "itemID": "52230dc9-e0ca-4a8a-846b-4ea3b9a46150" } ]
Параметры этой строки:
name
- формулировка пункта резолюции (обяз.);
userID
- uuid ответственного;
usersID
- uuid исполнителей;
При этом наличие полей userID
и
usersID
должны определяться типом работы:
работа - userID
и usersID
;
согласование - только usersID
;
утверждение - только usersID
;
ознакомление - только usersID
;
резолюция - userID
и
usersID
;
отправка документа - только usersID
;
Примечание: в типах работы "Работа" и
"Резолюция" один из параметров userID
/
usersID
должен быть обязательно.
finishDate
- время завершения в миллисекундах
(обяз.);
typeID
- тип работы, одно из значений
(обяз.):
0 - согласование;
1 - утверждение;
2 - ознакомление;
3 - работа;
17 - отправка документа;
33 - резолюция;
completionFormID
- uuid формы завершения (не
обяз., по умолчанию «Нет»);
itemID
- uuid пункта резолюции (не обяз. при
создании резолюции, обяз. при редактировании резолюции).
Альтернативные потоки событий:
Если не переданы ни параметр workID
, ни
параметр documentID
, сервер вернет сообщение
«Не передан параметр workID
или
documentID
», действие не применяется.
Если передан пустой либо некорректный (в т.ч. несуществующий)
параметр workID
либо
documentID
, сервер вернет сообщение
«Некорректный параметр workID
или
documentID
», действие не применяется.
Если переданы и параметр workID
, и параметр
documentID
, необходимо обрабатывать сначала
параметр workID
. Если он невалидный, далее
необходимо обрабатывать параметр documentID
.
Если же и он невалидный, сервер вернет сообщение «Некорректные
параметры workID
и
documentID
», действие не применяется.
Если для выбранного параметра workID
у
пользователя отсутствует доступ к работе, сервер вернет
сообщение «Пользователь {0} не может просматривать работу {1}».
Если параметр data
не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
data
», действие не применяется.
Если передан пустой либо некорректный (в т.ч. несуществующий)
параметр data
, сервер вернет сообщение
«Некорректный параметр data
», действие не
применяется.
Если параметр type
не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
type
», действие не применяется.
Если передан невалидный (не по описанному формату) параметр
type
, сервер вернет сообщение «Некорректный
тип операции», действие не применяется.
Если параметр name
не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
name
», действие не применяется.
Если не переданы ни параметр userID
, ни
параметр usersID
, сервер вернет сообщение «Не
передан параметр userID
или
usersID
», действие не применяется.
Если передан пустой либо некорректный (в т.ч. несуществующий)
uuid пользователя в параметре userID
и/или
usersID
, сервер вернет сообщение
«Пользователь с uuid
%userUUID% не найден»,
действие не применяется.
Если параметр finishDate
не передан для типа
операции, отличного от 17, либо он пустой, сервер вернет
сообщение «Не передан параметр finishDate
»,
действие не применяется.
Если при выключенной настройке "Разрешить ставить работы по
резолюции, завершающиеся позже документа" (Конфигуратор
-> Документооборот -> Настройки документооборота) передан
такой параметр finishDate
что работа по
резолюции, завершится позже данного документа, сервер вернет
сообщение «Дата завершения каждого из пунктов резолюции не
должна превышать срок документа», действие не применяется.
Если передан невалидный (не по описанному формату) параметр
finishDate
, сервер вернет сообщение
«Некорректная продолжительность работы», действие не
применяется.
Если параметр typeID
не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
typeID
», действие не применяется.
Если передан невалидный (не по описанному формату) параметр
typeID
, сервер вернет сообщение «Некорректный
тип резолюции», действие не применяется.
Если для выбранной работы в ходе выполнения документа по данной работе имеется работы по незавершенному протоколу / протокольным поручениям / работы по утверждению протокола, сервер вернет сообщение «Невозможно выполнить действие для данной работы», действие не применяется.
Если для выбранная работая явлется согласованием / утверждением / ознакомлением / регистрацией, сервер вернет сообщение «Невозможно выполнить действие для данной работы», действие не применяется.
Если для выбранной работы в ходе выполнения документа по данной работе имеется работа на регистрации, сервер вернет сообщение «Невозможно выполнить действие для данной работы», действие не применяется.
Если передан параметр completionFormID
для
типа операции, отличного от 3, обрабатывать данный параметр не
нужно.
Если для выбранного типа операции 3 передан пустой либо
некорректный (в т.ч. несуществующий) параметр
completionFormID
, необходимо не выдавать
ошибку и использовать значение данного параметра по умолчанию.
Если передан пустой либо некорректный (в т.ч. несуществующий)
параметр locale
, необходимо не выдавать
ошибку и использовать значение данного параметра по умолчанию.
В случае неуспешного выполнения метода сервер вернет сообщение «Ошибка при выполнении действия».
Метод возвращает json
со следующими полями:
errorCode
- код выполнения, 0 - успешно,
иначе - ошибка;
errorMessage
- сообщение о результате
выполнения (успешном либо не успешном).
Примеры json
успешного выполнения метода:
{ "errorCode": "0", "errorMessage": "Резолюция принята" }
{ "errorCode": "0", "errorMessage": "Резолюция сохранена" }