Pull to refresh

Atlassian JIRA: настройка процесса обработки заявок с помощью плагина JJUPIN

Reading time 5 min
Views 15K

Вступление


Эта статья должна помочь тем, кто так или иначе связан с настройкой процессов обработки заявок в JIRA и хочет гораздо больше, чем предлагается в стандартной поставке, но сам не является разработчиком на Java и не имеет таких людей под рукой.

Я думаю, всем должно быть известно, что JIRA — открытая система для внешней разработки дополнительных плагинов (это кстати очень хорошо). Т.е. умея разрабатывать на java + maven + eclipse, зная хорошо вебдизайн, и т.д и т.п., к JIRA можно приделать все, что только хочется: делай плагины, устанавливай и пользуйся. Более того, можно эти плагины продавать и даже на это жить.

Но есть такие люди, коих большинство, которые «ничего такого» не умеют. А посему они пользуются встроенными возможностями или теми плагинами, что есть. Но плагины есть не на каждый случай, да и многие из них платные, хотя как раз самые нужные.

Решение есть!


Так вот, есть один плагин, хотя и платный, но умеющий очень многое (а хотелось бы, чтобы все), который даст нам вмешаться в процессы обработки заявок и много чего сделать так, как мы хотим, а также помочь автоматизировать некоторые настройки и действия, которые в обычной жизни либо выполняют пользователи, либо вообще никто.

Это плагин JJupin.

Он примечателен тем, что имеет встроенный скриптовый язык SIL (Simple Issue Language), который представляет из себя обертку над внутренними функциями API JIRA
Скрипты, написанные на этом языке (будем их назвать sil-скрипты), хранятся в файлах (*.sil) и могут быть использованы:
  • В качестве пост-функций переходов процесса (Post functions);
  • В качестве условий там же (Conditions);
  • В качестве валидаторов (Validators);
  • Слушателей событий (Listeners);
  • Сервисов (Services);
  • Управления полями и их значениями на экранах переходов;
  • Отдавать значения для вычисляемых полей (это отдельный бесплатный плагин).


Может быть что-то пропустил, но этого списка уже достаточно для облегчения нашей с вами жизни по настройке процессов
Еще необходимо уметь хоть как-то настраивать бизнес-процессы, но это думаю не проблема, с документацией у JIRA все в порядке.

Как его готовить


Sil-скрипт — это достаточно простой язык, который может освоить любой человек, не совсем чуждый логики и алгоритмов. Проще даже, чем basic.

В документации к плагину все операторы, типы и функции перечислены, есть примеры использования.
Для работы с заявкой JIRA есть список предопределенных переменных, таких как название, текст заявки, владелец, исполнитель, статус и т.д.

Также из скрипта есть доступ к пользовательским полям — конструкция типа customfield_11111, где 11111 — это ID поля. ID поля можно посмотреть в списке пользовательских полей, кликнув по шестеренке справа и открыв список действий над полем — ссылка на любом действии будет содержать в себе customFieldId=10111, это то, что нам нужно. Значением поля будет его видимое текстовое значение. Т.е. если у вас поле — справочник, то значением пользовательского поля будет являться наименование выбранного пункта справочника, а не его ID.

Теперь пример. Допустим, нам нужно при создании заявки при определенном значении поля «Категория заявки» (ID поля 10122) устанавливать определенного исполнителя и дописывать в текст заявки «Автоматически назначено».

  1. Переходим в бизнес-процесс, открываем его для редактирования;
  2. В БП выбираем переход «Create» (Создание заявки, это нужно делать из диаграммы);
  3. Переходим в «post functions» (пост функции) перехода;
  4. Добавляем новую постфункцию, в списке постфункций выбираем "(k) SIL Post-function", жмем добавить
  5. Далее в следующем шаге нам открываются данные по постфункции:
    1. Указываем имя файла (просто имя, без расширениея .sil), либо выбираем уже существующий скрипт, но у нас его пока нет
    2. Пишем скрипт
    3. Над полем ввода скриптом есть синяя кнопочка «CHECK», которая проверяет скрипт на синтаксические ошибки. Жмем ее, чтобы проверить, все ли так
    4. Нажимаем «Добавить». Файл создан, скрипт добавлен.
  6. Далее в списке постфункций передвигаем нажатием на стрелочки скрипт на место ниже пункта 1
  7. Публикуем бизнес-процесс и смотрим результат


Вот скрипт, который нам нужен (заодно покажу использование переменных):

string s; // объявляем строковую переменную

s = customfield_10122; // присваиваем ей значение поля "Категории заявки"

if (s == "Заявки для проведения тестов") // проверяем значение
{
    assignee = "vpupkin"; // устанавливаем исполнителя, указывая логин пользователя
    desc = desc + "\n" + "Автоматически назначено"; // добавляем текст в описание заявки, \n - перенос строки
}

Таким же способом можно навешать на переход условия и валидаторы.

Пример валидатора:
if (currentUser() == "petyaivanov" and customfield_10122 == "Заявки для проведения тестов")
{
    return false, "customfield_10122", "Петя, тебе нельзя писать заявки с этой категорией"; 
    // здесь мы возвращаем false, что не дает выполниться переходу, далее указываем, под каким полем показать текст ошибки, и собственно сам текст ошибки
}

Очень актуальный валидатор на введение комментария при переходе:

string errorMsg = "Необходимо указать причину отмены заявки";
if(not hasInput("comment")) {
   return false, "comment", errorMsg;
}

Внимание! Sil-скрипт регистрозависимый язык, следите за правильным написанием переменных и функций!

Что еще умеет JJUPIN


Плагин помимо стандартных и простых действий над значениями заявок умеет еще следующее:
  • Работать с массивами (многие значения полей и функций представляются в виде массивов);
  • Выполнять jql-запросы (это те самые фильтры поиска в интерфейсе JIRA);
  • Выполнять sql-запросы (это вообще очень интересно и очень полезно);
  • Работать с пользователями, ролями и группами;
  • Отправлять электронную почту;
  • Вызывать события, которые у вас прописаны в схеме уведомлений;
  • Работать с полями на экранах просмотра, редактирования и прочими экранами на переходах, меняя значения полей в зависимости от других, скрывая поля и т.д. (функциональность немного урезана, но все-равно большая);
  • И много чего другого.

Выводы


Я думаю, дальше понятно, как очень просто и очень полезно можно использовать sil-скрипты для облегчения жизни себе и всем пользователям JIRA.

А если вы или ваш коллега умеет писать sql-запросы, то ваши возможности очень сильно увеличиваются, очень сильно!
Но об этом в другой раз, иначе статья будет неподъемная.

Я планирую (а там уж как получится) написать еще несколько статей на тему конкретного использования sil-скриптов для улучшения функциональности, а также в связке с плагином JIRA Service Desk (да собственно и про сам плагин SD, а связка из этих двух дает нам очень хорошие вкусности). В почти всех примерах у нас будут использоваться sql-скрипты и немного реже — собственные таблицы в БД (в них будем хранить информацию по настройке, что даст нам возможность не меняя скрипты управлять результатами их работы).

ЗЫ Все, что здесь описано, основано на двухлетнем опыте использования Atlassian JIRA для разнообразной автоматизации в компании. Опыт с нуля, без окончания всяких курсов и т.д. Посему, если кто-то предложит более лучшие решения, буду только рад. Статью написал только потому, что хочется немного помочь другим людям облегчить жизнь по настройке JIRA.
Tags:
Hubs:
0
Comments 0
Comments Leave a comment

Articles