Формулировка проблемы: на момент итерации 3.2 включительно методы API создания и изменения работы не передают и никак не учитывают период повторения, который работам можно задавать.
Решение: необходимо доработать
методы API создания работы
(rest/api/workflow/work/create
) и изменения
работы (rest/api/workflow/work/save
), добавив в
их входные и выходные параметры новый параметр
repeat
.
Опишем эти методы полностью, отдельно остановившись на описании
нового параметра repeat
.
URL метода: rest/api/workflow/work/create
.
Тип запроса: POST
.
Метод принимает следующие параметры (FormParam):
name
- формулировка работы (обяз.);
authorID
- UUID
автора
работы (обяз.);
userID
- UUID
ответственного (обяз. при отсутствии хотя бы одного параметра
resUserID
);
resUserID
- UUID
исполнителя (обяз. при отсутствии параметра
userID
);
Примечание.
Параметр
resUserID
должен быть указан столько раз, сколько исполнителей есть у работы.
startDate
- дата и время начала работы в
формате yyyy-MM-dd HH:mm:ss
(обяз.);
finishDate
- дата и время завершения работы
в формате yyyy-MM-dd HH:mm:ss
(обяз.);
priority
- UUID
приоритета (обяз.);
completionFormID
- UUID
формы завершения (не обяз., по умолчанию "Нет");
repeat
- данные о периоде повторения работы
(не обяз., по умолчанию "Нет");
comment
- комментарий, который будет
добавлен к работе после ее создания (не обяз.);
path
- список вложений, которые будут
добавлены при создании работы (не обяз.);
Примечание.
Параметр
path
должен быть указан столько раз, сколько вложений нужно добавить. Строкаpath
должна быть в форматеПУТЬ:ИМЯ
, гдеПУТЬ
- путь до временного файла, созданого на серере при помощи методаrest/api/storage/start_upload
,ИМЯ
- имя добавляемого вложения.
force
(true/false) - возможность создания
работы исполнителю при отсутствии прав на это (не обяз., по
умолчанию "false");
Примечание.
Этот параметр принимается в счет, только если одновременно передается параметр
moduleID
. Данное ограничение сделано с целью не допустить бесконтрольное создание работ в обход существующей системы прав.
moduleID
- UUID
внешнего
модуля (не обяз.);
locale
- локаль пользователя,
ru/en/kz
(не обяз., по умолчанию
ru
).
Параметр repeat
должен представлять собой
json
со следующими полями:
type
- тип период повторения (не обяз);
values
- значение периода повторения в
квадратных скобках (обяз. при наличии
type
).
Возможные значения параметра type
:
day
- по дням недели;
month
- по дням месяца;
year
- ежегодно.
Только при наличии параметра type
необходимо
передавать values
- список значений через
запятую выбранного типа периода повторения.
Для type
= day
возможные
значения:
MON
- понедельник;
TUE
- вторник;
WED
- среда;
THU
- четверг;
FRI
- пятница;
SAT
- суббота;
SUN
- воскресенье.
Для type
= month
:
числовые значения в формате «D», где D - это дни месяца.
Для type
= year
:
числовые значения в формате «D.M», где D - это дни месяца, а M
- номера месяца.
Отсутствие параметра repeat
означает отсутствие
периода повторения (значение "Нет").
В случае неуспешного выполнения вовзращается
json
с полями:
errorCode
- код выполнения (число, отличное
от 0);
errorMessage
- сообщение об ошибке.
Альтернативные потоки событий для периода повторения.
Альтернативный поток №1. Параметр type
не
передан, но передан параметр values
. Периоду
повторения должно присвоиться значение "Нет", наличие
параметра values
необходимо игнорировать.
Альтернативный поток №2. Передан некорректный (несуществующий)
параметр type
. Сервер возвращает ошибку:
Передан некорректный параметр type
действие не осуществляется.
Альтернативный поток №3. Параметр type
передан,
но не передан параметр values
. Сервер
возвращает ошибку:
Не передан параметр values
действие не осуществляется.
Альтернативный поток №4. Передано некорректное (в т.ч.
несуществующее для указанного type
) значение
параметра values
. Сервер возвращает ошибку:
Передан некорректный параметр values
действие не осуществляется.
В случае успешного выполнения возвращается полная информация о работе ответственного пользователя:
Примечание.
Если работа создается без указания ответственного (только для исполнителей) информация о созданных работах не возвращается.
errorCode
- код ошибки (0 - успешно);
workID
- UUID
созданной
работы;
work
- описание работы:
actionID
- UUID
созданной работы;
name
- формулировка работы;
start_date
- дата и время начала работы
в формате yyyy-MM-dd HH:mm:ss
;
finish_date
- дата и время завершения
работы в формате yyyy-MM-dd HH:mm:ss
;
stateID
- статус работы;
user
:
id
- UUID
ответственного;
name
- ФИО ответственного в формате
"Фамилия И.О.";
author
:
id
- UUID
автора
работы;
name
- ФИО автора в формате
"Фамилия И.О.";
percent
- текущий прогресс работы;
has_attachments
(true/false) - имеются
ли вложения;
remained
- число, показывающее сколько
рабочих дней осталось до завершения работы;
remained_label
- подпись для параметра
remained
;
is_expired
(true/false) - истек ли срок
выполнения работы;
is_soon_expired
(true/false) - истекает
ли скоро срок выполнения работы;
priority
- UUID
приоритета;
can_edit
(true/false) - есть ли права
на редактирование работы;
can_change_state
(true/false) - есть ли
право на изменения статуса работы (отметить как
завершено);
can_delete
(true/false) - есть ли право
на удаление работы;
can_send_acquaintance
(true/false) -
есть ли право отправить на ознакомление;
can_send_agreement
(true/false) - есть
ли право отправить на согласование;
can_send_approval
(true/false) - есть
ли право отправить на утверждение;
can_be_resended
(true/false) - есть ли
право передать работу другому пользователю;
can_reassign
(true/false) - есть ли
право перепоручить работу;
can_send_by_route
(true/false) - есть
ли право отправить по маршруту;
can_change_progress
(true/false) - есть
ли право изменить прогресс работы;
can_manage_comments
(true/false) - есть
ли право добавлять комментарии к работе;
can_take_on_control
(true/false) - есть
ли право взятия работы на контроль;
is_new
(true/false) - есть ли
непросмотренные уведомления по данной работе;
has_subprocesses
(true/false) - есть ли
дочерние работы;
can_mark_as_seen
(true/false) - есть ли
право снять отметку о наличии непросмотренных уведомлений
по работе;
work_state_icon
- идентификатор
пиктограммы для представления текущего состояния работы;
work_state_label
- идентификатор
подписи для описания текущего состояния работы;
process_result
- статус завершения
процесса:
пустая строка - нет результата (еще в процессе либо работа была завершена или удалена);
true
- завершено успешно;
false
- отказано;
parent_process
-
UUID
родительского процесса;
procInstID
- UUID
процесса;
completionFormID
-
UUID
формы завершения;
completionResultID
-
UUID
результата завершения;
isResolution
(true/false) - принята ли
резолюция на документ, в котором эта работа находится;
repeat
:
type
- тип период повторения;
values
- значение периода
повторения.
Во всех методах API, где возвращается объект
work
(описание работы), должен присутствовать
параметр repeat
. Например, в методах:
получение списка работ пользователя
(rest/api/workflow/works/list/{userID}
);
получение списка дочерних работ для данной
(rest/api/workflow/subworks/{workID}
);
получение информации о работе по UUID
(rest/api/workflow/works_by_id
);
создание работы
(rest/api/workflow/work/create
);
изменение работы
(rest/api/workflow/work/save
);
изменение прогресса работы
(rest/api/workflow/work/set_progress
);
изменение статуса работы
(rest/api/workflow/work/set_state
);
отправки работы по маршруту
(rest/api/workflow/work/start_route
);
задания результата завершения работы
(rest/api/workflow/work/set_result
);
подтверждения результата работы
(rest/api/workflow/work/accept_result
);
отклонения результата работы
(rest/api/workflow/work/reject_result
).
URL метода: rest/api/workflow/work/save
.
Тип запроса: POST
.
Метод принимает следующие параметры (FormParam):
actionID
- UUID
изменяемой работы (обяз.);
name
- формулировка работы (обяз.);
userID
- UUID
ответственного (не обяз.);
startDate
- дата и время начала работы в
формате yyyy-MM-dd HH:mm:ss
(обяз.);
finishDate
- дата и время завершения работы
в формате yyyy-MM-dd HH:mm:ss
(обяз.);
priority
- UUID
приоритета (обяз.);
completionFormID
- UUID
формы завершения (не обяз.);
repeat
- данные о периоде повторения работы
(не обяз.);
locale
- локаль пользователя,
ru/en/kz
(не обяз.).
Новый параметр repeat
аналогичен таковому в
методе создания работы.
Отсутствие не обязательных параметров означает не означает сброс до значений по умолчанию, а означает использование последних сохраненных значений.
В случае неуспешного выполнения вовзращается
json
с полями:
errorCode
- код выполнения (число, отличное
от 0);
errorMessage
- сообщение об ошибке.
Альтернативные потоки событий для периода повторения.
Альтернативный поток №1. Параметр type
не
передан, но передан параметр values
. Периоду
повторения должно присвоиться значение "Нет", наличие
параметра values
необходимо игнорировать.
Альтернативный поток №2. Передан некорректный (несуществующий)
параметр type
. Сервер возвращает ошибку:
Передан некорректный параметр type
действие не осуществляется.
Альтернативный поток №3. Параметр type
передан,
но не передан параметр values
. Сервер
возвращает ошибку:
Не передан параметр values
действие не осуществляется.
Альтернативный поток №4. Передано некорректное (в т.ч.
несуществующее для указанного type
) значение
параметра values
. Сервер возвращает ошибку:
Передан некорректный параметр values
действие не осуществляется.
В случае успешного выполнения возвращается полная информация об измененной работе. Данная информация полностью аналогична созданию работы.
Пример передачи периода повторения по дням недели
name=Work& startDate=2015-11-13+09%3A00%3A00& finishDate=2015-11-30+18%3A00%3A00& authorID=7b953be8-bddb-4ce4-bbfd-ae9548f69c7f& userID=7b953be8-bddb-4ce4-bbfd-ae9548f69c7f& priority=2& repeat=%7B%22type%22%3A%22day%22%2C%22values%22%3A%5B%22MON%22%2C%22WED%22%5B%7B
Пример возвращаемого массива
[ { "errorCode": "0", "workID": "7ce1feff-a3f0-4f4e-8bf6-59e37caf553f", "work": { "actionID": "7ce1feff-a3f0-4f4e-8bf6-59e37caf553f", "name": "РаботАПИ", "start_date": "2015-11-13 09:00:00", "finish_date": "2015-11-30 18:00:00", "stateID": "0", "user": { "id": "7b953be8-bddb-4ce4-bbfd-ae9548f69c7f", "name": "Абдрешен Л.С." }, "author": { "id": "7b953be8-bddb-4ce4-bbfd-ae9548f69c7f", "name": "Абдрешен Л.С." }, "percent": "0", "has_attachments": "false", "remained": "11.745833333333334", "remained_label": "11 дн", "is_expired": "false", "is_soon_expired": "false", "priority": "2", "can_edit": "true", "can_change_state": "true", "can_delete": "true", "can_send_acquaintance": "true", "can_send_agreement": "true", "can_send_approval": "true", "can_be_resended": "false", "can_reassign": "true", "can_send_by_route": "true", "can_change_progress": "true", "can_manage_comments": "true", "can_take_on_control": "false", "is_new": "false", "has_subprocesses": "false", "can_mark_as_seen": "true", "work_state_icon": "progress_status_icon", "work_state_label": "progress", "process_result": "", "parent_process": "null", "procInstID": "4fbcfad1-fba8-4c4a-83fb-1badf6c9a963", "completionFormID": "", "completionResultID": "", "isResolution": "false", "repeat": { "type": "day", "values": ["MON", "WED"] } } ]