Формулировка проблемы: на момент итерации 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"]
}
}
]