Правила автоматизации: пример 4
Создание цикла повторной обработки в рабочем процессе
Если не удается завершить задачу, статус предыдущих задач не обновляется до ‘Назначено’ и рабочий процесс меняет статус на ‘Процесс приостановлен’. Менеджер рабочих процессов принимает решение по возобновлению выполнения. Для некоторых рабочих процессов это всегда означает повторную обработку ранее выполненной задачи.
В этом примере есть 3 задачи, требующие последовательного выполнения:
- Разработать новый релиз
- Передать новый релиз на тестирование
- Протестировать новый релиз
- Передать новый релиз на тестирование
Если третья задача не выполняется, менеджер рабочих процессов планирует, что правило автоматизации установит статус первой задачи обратно на ‘Назначено’, а двух других задач - на ‘Зарегистрировано’, что обеспечит возврат рабочего процесса к первой задаче.
Ниже описано, как менеджер рабочих процессов может определить основные элементы такого правила автоматизации.
Триггер
Поскольку правило должно выполняться после смены статуса третьей задачи на ‘Сбой’, в поле "Триггер" выбирается вариант ‘При обновлении статуса’.
Выражения
Для правила определяются следующие выражения, которые в дальнейшем используются для определения условия правила и выполняемых им действий:
1. has_failed
Выражение has_failed
указывает, что поле "Статус" третьей задачи имеет значение ‘Сбой’. Оно определяется следующим образом:
status = failed
2. note
Выражение note
необходимо для поиска комментария, который добавляется к третьей
задаче при смене ее статуса на ‘Сбой’. Это последний комментарий к
задаче, и он описывает причину сбоя. Такое выражение определяется следующим
образом:
note[last].text
3. develop_task
Выражение develop_task
используется для идентификации задачи разработки нового
релиза. Тема такой задачи - ‘Разработать новый релиз’, соответственно, выражение определяется следующим образом:
workflow.tasks['Разработать новый релиз']
4. transfer_task
Выражение develop_task
используется для идентификации задачи передачи нового релиза на
тестирование. Тема такой задачи - ‘Передать новый релиз на тестирование’, соответственно, выражение определяется следующим образом:
workflow.tasks['Передать новый релиз на тестирование']
Условие
После определения выражений правилу задаются условия, при которых данное правило выполняется. В рассматриваемом примере статус задачи должен быть ‘Сбой’. Поскольку для этого уже есть выражение, истинное условие имеет следующий вид:
has_failed
Это все, что нужно добавить в условие правила.
Обновление 1
Первое выполняемое правилом действие — это добавление в
задачу разработки комментария, который сообщит разработчику причину повторного открытия задачи. Для
этой задачи уже задано выражение develop_task
. Это выражение выбирается в поле "Обновить".
Добавить комментарий
Поскольку первое действие добавляет комментарий к задаче разработки, нужно изменить опцию по умолчанию ‘Установить’ на ‘Добавить комментарий’. При этом появится текстовое поле для ввода комментария. Чтобы добавить последний комментарий, оставленный для неуспешной задачи, в создаваемом комментарии можно использовать выражение, определенное для последнего комментария:
Новый релиз не прошел тестирование:
{{note
}}
Обновление 2
Второе выполняемое правилом действие - повторное открытие задачи разработки. Для его выполнения в
поле "Обновить" устанавливается выражение develop_task
.
Задать
Поскольку второе действие меняет статус задачи разработки обратно на ‘Назначено’, в поле "Задать" указывается следующее:
status = assigned
Обновление 3
Третье выполняемое правилом действие - обновление задачи передачи на тестирование. Для его выполнения в поле "Обновить" устанавливается выражение transfer_task
.
Задать
Поскольку третье действие меняет статус задачи на ‘Зарегистрировано’, в поле "Задать" указывается следующее:
status = registered
Обновление 4
Четвертое выполняемое правилом действие - обновление статуса задачи тестирования. Поскольку это задача, для которой определено правило автоматизации, в поле "Обновить" не нужно устанавливать какое-либо значение. По умолчанию оно будет соответствовать текущей записи (т.е. задаче тестирования).
Задать
Поскольку четвертое действие меняет статус задачи тестирования обратно на ‘Зарегистрировано’, в поле "Задать" указывается следующее:
status = registered
Обновление 5
Пятое выполняемое правилом действие - обновление статуса рабочего процесса, который был установлен на
‘Процесс приостановлен’ после неудавшегося завершения задачи тестирования. Для обновления рабочего процесса достаточно указать workflow
в поле "Обновить".
Задать
Чтобы пятое действие вернуло статус рабочего процесса к значению ‘Внедрение’, в поле "Задать" указывается следующее:
status = implementation