Применимость: Cloud. Названия пунктов и доступность функций зависят от версии, плана и типа проекта. Проверяйте изменения на тестовом окружении. Описанные рабочие процедуры — предлагаемый подход, а не гарантии поставщика.
Задача и границы примера
В карточке выбран VPN, но правило Automation идёт по неожиданной ветке или не выполняет действие. Сначала нужно убедиться, что условие читает правильное поле и сравнивает нужную часть значения. Название на экране, объект варианта списка, его ID и отображаемый текст — разные вещи. Подмена одного другим делает условие внешне правдоподобным, но неверным.
Разберём Jira Cloud Automation и обычное пользовательское поле Select list (single choice). Пример не относится к multiselect, cascading select, Assets и вопросу, который хранится только в JSM Forms. У этих объектов другая структура. Для Data Center нужны документация установленной версии и проверка доступных smart values.
Это учебная настройка с ожидаемыми результатами, а не отчёт об испытании на клиентском сайте. Правило будет только писать короткие диагностические маркеры в audit log. Назначения, комментарии, письма и веб-запросы добавляются отдельно после проверки выбора ветки.
Подготовьте три контрольные задачи
В тестовом проекте PILOT выберите поле «Сервис» с одиночным выбором и двумя безопасными вариантами VPN и Почта. Подготовьте три задачи: PILOT-1 со значением VPN, PILOT-2 со значением Почта и PILOT-3 без значения. Если Jira выдала другие ключи, запишите фактические номера. Не делайте поле обязательным только ради этого пилота.
Проверьте, что поле действительно применимо ко всем трём задачам и отображается в их карточках. Пустая задача должна отличаться от случая, когда поле вообще недоступно для данного типа или проекта. Запишите тип поля, его ID, контекст и значения. Для проверки потребуются администратор Automation и доступ выбранного исполнителя правила к учебным задачам.
Ограничьте область правила проектом PILOT. Запишите actor и круг пользователей, которым доступен ручной запуск. Возможность видеть карточку администратором не доказывает доступ исполнителя автоматизации. Сохраните исходную конфигурацию, если экспериментируете с копией существующего правила, и исключите действия записи из учебного варианта.
Найдите поле по ID и проверьте структуру
Не полагайтесь только на подпись «Сервис»: в Jira могут существовать несколько одноимённых полей. Уточните реальный идентификатор, например customfield_12345, через разрешённую административную информацию или JSON учебной задачи. Во всех примерах ниже замените этот ID на свой. Это идентификатор поля, а не варианта списка.
Документация Atlassian рекомендует искать путь smart value по JSON задачи; expand=names помогает сопоставить технические имена с подписями. Для одиночного списка проверьте значение внутри соответствующего поля: отображаемый текст обычно находится в свойстве value. Не публикуйте полный ответ API и не отправляйте его в сторонний форматировщик вместе с рабочими данными.
Обращение к полю через свойство .value читает текст выбранного варианта, а обращение без .value — само значение поля. Нельзя автоматически считать их одинаковой строкой. Полный путь показан в диагностической строке ниже. Если фактическая структура отличается от ожидаемой, остановитесь и разберите тип поля вместо механического добавления .value ко всем объектам.
Сначала проверьте чтение через Log action
Создайте отдельное правило с Manual trigger from work item, ограничением проекта PILOT и одним Log action. Вставьте диагностическую строку ниже. Квадратные скобки отделяют значение от остального текста, а UNSET — заметный маркер для отсутствующего результата. Не используйте VPN как запасное значение: такая подстановка может превратить ошибку чтения в ложное совпадение.
Включите учебное правило и по очереди запустите его из трёх контрольных задач. В журнале ожидаются VPN, Почта и UNSET соответственно. Сопоставьте ключ каждой записи с карточкой, а не оценивайте только последний запуск. Не меняйте значения задач одновременно с выполнением эксперимента.
UNSET сам по себе не доказывает, что поле пустое: ошибочный ID или путь тоже способен вернуть пустой результат. Поэтому PILOT-1 с заранее заполненным VPN — обязательный положительный контроль. Только после его успешного чтения имеет смысл проверять ветку для действительно пустого поля.
key={{issue.key}}; service=[{{issue.customfield_12345.value|"UNSET"}}]Добавьте явную ветку для пустого поля
Остановите учебное правило перед изменением и добавьте If/else block после диагностической записи. В первом If используйте Issue fields condition: выберите именно проверенное поле «Сервис» и условие is empty. Внутри оставьте только Log action с маркером EMPTY. Здесь условие выбирает поле через интерфейс и не требует smart value.
В Else-if добавьте Advanced compare condition: слева используйте выражение из блока ниже, оператор equals, справа true без фигурных скобок и дополнительных кавычек. Метод equals из документации текстовых smart values проверяет точное совпадение с указанной строкой VPN.
Внутри этой ветки запишите VPN_PATH, а в оставшемся Else — OTHER_PATH. Не подставляйте пустой результат в маршрут VPN и не оставляйте неизвестный вариант без диагностического исхода. Для обычного сравнения доступного поля Atlassian рекомендует прежде всего Issue fields condition; расширенное сравнение здесь нужно, чтобы явно проверить путь .value.
First value:
{{issue.customfield_12345.value.equals("VPN")}}
Condition: equals
Second value: trueПроверьте матрицу решений
Повторите ручные запуски. Для PILOT-1 ожидается диагностическое чтение VPN и маркер VPN_PATH; для PILOT-2 — Почта и OTHER_PATH; для PILOT-3 — UNSET и EMPTY. Пустая задача не должна попадать в VPN_PATH, а Почта не должна ошибочно считаться пустым значением.
Проверьте детали выполнения If/else, а не только общий статус правила. Условие, которое не совпало, не всегда означает ошибку: это может быть ожидаемый отрицательный сценарий. Запишите наблюдения отдельно от ожиданий. Если сработала не та ветка, остановитесь на первом расхождении и не добавляйте рабочие действия.
Дополнительно сверяйте отображаемую подпись варианта с литералом в условии. После переименования VPN прежняя строка в правиле может перестать совпадать. Не вводите автоматическое приведение регистра или обрезку пробелов без требования процесса: сначала выясните, какое значение хранится и какое различие действительно должно игнорироваться.
Разберите пустой вывод и другие ошибки
Если все три задачи показывают UNSET, проверьте ID, тип поля и JSON известной заполненной задачи. Если только одна не читается, сравните контекст, тип задачи и доступ исполнителя. Не создавайте новое поле с той же подписью как способ исправить ошибочную ссылку: это добавит ещё один неоднозначный объект.
Если поле правильно выводится, но сравнение не проходит, проверьте literal VPN, кавычки, скобки функции и выбранный оператор Advanced compare. Скопированные типографские кавычки замените обычными. Проверяйте структуру правила встроенной функцией Check for errors, затем подтверждайте результат ручным запуском на контролируемых данных.
В этом пилоте поле не меняется во время выполнения. Если рабочее правило сначала редактирует значение и затем читает его, потребуется отдельно проверить снимок данных и необходимость Re-fetch work item data. Не добавляйте Re-fetch как универсальное средство от неправильного ID: он не исправляет неверный путь к полю.
Откат и переход к рабочему действию
По завершении отключите учебное правило. Если меняли существующую копию, верните её исходные условия и диагностические действия по сохранённой конфигурации. Сам пилот не меняет поля Jira, поэтому данные задач откатывать не требуется. Отдельно верните учебные значения, если заполняли ими существующие тестовые карточки.
Перед добавлением назначения, комментария или интеграции согласуйте, что должно происходить для EMPTY и OTHER_PATH. Не превращайте все неизвестные значения в маршрут по умолчанию без владельца решения. Для операций записи понадобятся собственная проверка повторного запуска, журнал исходного состояния и план возврата.
Приёмка означает подтверждённое чтение правильного одиночного списка и три воспроизводимых исхода под указанным actor. Сохраните ID поля, конфигурацию и результаты контрольных запусков. После изменения типа, контекста или списка вариантов повторите матрицу; успешная проверка сегодня не заменяет сопровождение правила после будущих изменений.
Официальная документация
Применить это к вашей системе
Обсудим контекст, ограничения и безопасный порядок изменений.
Обсудить задачу