Привет! У нас в Спортмастере очень большая экспертиза в части работы с инструментами JIRA. Про доски, спринты и все прочее все наверняка знают и часто применяют. Мы хотим рассказать о других интересных плагинах, которые мы используем в рамках управления продуктом, начнем с JIRA Structure.
![](https://habrastorage.org/getpro/habr/upload_files/9ef/25a/390/9ef25a390cc5ff0243a16d9d7f5b8fc3.png)
Зачем это нужно?
Structure — плагин для Jira, позволяющий гибко настраивать и управлять Jira-задачами любого типа.
Основные возможности:
Настраивать отображение задач в виде иерархии, с любой глубиной вложений, группировкой, сортировкой и прочим.
"На лету" редактировать поля задачи.
Отображать любые поля задач и кастомизировать их.
Визуализировать в различных режимах.
Экспортировать структуру в excel/pdf или диаграмму Ганта в pdf/svg.
С чего начать? Создаём структуру!
Создаём новую структуру
Заходим в Jira, в верхнем меню выбираем "Структура" → "Создать структуру"
![](https://habrastorage.org/getpro/habr/upload_files/831/78b/bbc/83178bbbc441778ec918b5fa67cd1771.png)
-
Далее в мастере создания структуры выбираем и вводим данные.
Выбираем пустую структуру (либо взять готовый шаблон)
![](https://habrastorage.org/getpro/habr/upload_files/9fc/9a5/40f/9fc9a540fe0767db1489826fa5e348f0.png)
Вводим название и уровень доступа и нажимаем "Создать".
![](https://habrastorage.org/getpro/habr/upload_files/d2c/d0c/ad6/d2cd0cad6ca2f7b7e58004120542752f.png)
В результате получаем пустую таблицу с базовым набором трансформаторов.
![](https://habrastorage.org/getpro/habr/upload_files/98f/cc2/b8a/98fcc2b8a0708a78836ced85ff99b955.png)
Profit!Теперь нужно заполнить структуру.
Разбираем интерфейс
![](https://habrastorage.org/getpro/habr/upload_files/bd1/02d/548/bd102d5482945cab790b53ce41ca4d90.png)
Панель инструментов:
-
Базовые действия с задачами в структуре:
Ручное добавление задач;
Сворачивание и разворачивание сгруппированных элементов структуры;
Перемещение между собой;
Копирование, вырезание, вставка, удаление;
Автоматическое добавление задач.
Экспорт и настройка раскладки (Раскладка и представление) - две таблицы, гант, ресурсы.
Управление доступом, выбор других структур.
Трансформаторы, поиск, виды (ассоциированные или базовые).
Поля структуры.
Управление трансформаторами.
Настройка доступов
По умолчанию доступ к структуре закрыт. Чтобы настроить его, нужно:
В левом верхнем углу нажать на название структуры.
Выбрать "Управление структурой".
Дальше в списке выбрать свою структуру и нажать "Изменить".
Настроить уровни доступа.
![](https://habrastorage.org/getpro/habr/upload_files/1c0/446/fca/1c0446fcaa53236d5886997e04f4a57c.png)
![](https://habrastorage.org/getpro/habr/upload_files/147/5b8/312/1475b83129f7ad1a73eabf19e0ea50be.png)
Она пустая! Что делать? Заполнить
Заполнить структуру можно двумя основными способами.
Вручную - там можно чётко контролировать попадание задач в структуру.
Автоматически (например, по JQL-запросу) - вариант для автопополнения структуры задачами по условиям.
Добавление задач вручную
Вот как добавить задачи вручную:
В правой части нажимаем на три точки и выбираем "Две таблицы".
После этого экран разделится на две части, и в правой части будет доступно поле для ввода JQL-запроса.
Вводим запрос и получаем результат, из которого выбираем те задачи, которые будут участвовать в структуре
-
Выбор производим:
По одному, выбрав круглый чекбокс слева от задачи;
Пачками, используя shift;
Все задачи из запроса, используя ctrl+a.
![](https://habrastorage.org/getpro/habr/upload_files/7b5/ed0/8ed/7b5ed08ed84d33774bdaf69a81b32c1a.png)
Зажатием 8 точек слева от чекбоксов с помощью drag and drop переносим задачи в левое окно, где находится структура.
![](https://habrastorage.org/getpro/habr/upload_files/708/438/6f9/7084386f91d65f3df8c9640e4d5902b5.png)
Из структуры таким же способом можно выбрать и убрать лишние задачи (крестик сверху или delete)
После завершения переноса можно вернуть обратно вид "Одна таблица".
Автоматическое добавление задач
Наиболее удобный способ заполнять структуру, с помощью автоматизации.
В верхней панели инструментов нажимаем "Автоматизация" → "+" → "Вставить".
![](https://habrastorage.org/getpro/habr/upload_files/976/4ac/04c/9764ac04c862a68823c9269c8a56720a.png)
-
Из списка выбираем наиболее подходящий способ:
JQL-запрос;
Доска.
![](https://habrastorage.org/getpro/habr/upload_files/bb9/434/da4/bb9434da494ce327c524cfc2246b5d93.png)
В результате получаем все задачи из JQL-запроса или доски. Все новые задачи по этому запросу будут автоматически добавляться в структуру.
![](https://habrastorage.org/getpro/habr/upload_files/4d0/40d/efc/4d040defc9471734f7b83fc810b32be5.png)
Получился Excel? Настраиваем структуру
В полученной таблице (структуре) можно добавить любое поле, растягивать его, сортировать и быстро его изменять.
Для добавления, в правом верхнем углу таблицы нажимаем "+" и ищем / выбираем нужные поля.
![](https://habrastorage.org/getpro/habr/upload_files/08d/2cb/b45/08d2cbb450feb3b591501391dc57aa9b.png)
-
Для настройки нужно нажать на стрелку в углу нужного поля (содержимое настроек отличается от типа поля), где:
Переименовать;
Донастроить отображение.
![](https://habrastorage.org/getpro/habr/upload_files/ada/6bf/4cb/ada6bf4cb734975a2541f48a30ccd556.png)
Удалить;
![](https://habrastorage.org/getpro/habr/upload_files/ff3/123/68e/ff312368e61c72a32e98ac61b88d63d8.png)
Наиболее удобные поля для меня:
Тема - Видеть название, чтобы понять о чём задача;
Статус - Видеть текущий статус;
User Priority – Приоритет задач;
Комментарий - Видеть последний комментарий (Например, актуальный статус);
Компоненты (на время настройки, описано в разделе трансформирования);
Метки (на время настройки, описано в разделе трансформирования);
Start Date - Видеть и изменять;
End Date - Видеть и изменять на год вперёд;
Кастомные поля (Описано в соответствующем разделе статьи).
Удобно же.
В структуре можно производить стандартные действия с задачей по нажатию на три точки в конце каждой задачи. Например, добавлять новый комментарий.
-
Также можно изменять значения почти любого поля, не проваливаясь в каждую задачу. Для этого двойным кликом нажимаем на нужное поле задачи и вводим/выбираем значение.
Всё ещё Excel! Трансформируем структуру
К структуре можно применить "трансформаторы". Это основной инструмент, структурирующий список задач. Трансформаторы удобны тем, что их можно включить, выключить, отсортировать, преобразовать в быстрые и всё это делается в два клика, что позволяет быстро управлять видом структуры.
Какие бывают типы трансформаторов?
Каждый тип трансформации имеет соответствующую иконку, это позволяет ориентироваться в настроенных трансформациях.
Иконка |
Тип трансформатора |
Описание |
Комментарии, применения |
Filter - Отфильтровать |
Позволяет по атрибуту спрятать лишние задачи |
||
Sort - Отсортировать |
Позволяет по атрибуту изменить порядок задач |
При добавлении двух и более трансформаций, возможно реализовать вложенные сортировки: сначала по одному атрибуту, а внутри по другому атрибуту. Примеры далее. |
|
Group - Сгруппировать |
Позволяет объединить задачи по Jira полю |
При добавлении двух и более трансформаций, возможно реализовать вложенные группировки: сначала по одному атрибуту, а внутри по другому атрибуту. Примеры далее. |
|
Extend - Дополнить |
Позволяет добавить задачи из других проектов |
Для проявления задач из других проектов, например проявить вложенные задачи, связанные задачи (смежные, ОМНИ), подзадачи, задачами и иметь быстрый доступ к ним. |
Создаём свои трансформации
Добавление трансформатора "Отфильтровать"
В правом верхнем углу выбираем иконку "Трансформация".
Ниже выбираем "Добавить трансформацию" и в выпадающем списке выбираем тип трансформатора.
Затем выбираем условия и задаём их.
![](https://habrastorage.org/getpro/habr/upload_files/d45/00a/55a/d4500a55aab42a55a761d82f2afc54a8.png)
Для примера выбираем первый тип "Отфильтровать".
Выбираем "JQL-запрос".
![](https://habrastorage.org/getpro/habr/upload_files/b06/cd1/9a7/b06cd19a7cae91d70348dc4f4f546daa.png)
Вводим JQL-запрос, например:
Фильтрация по статусу (не открыт)
status not in (Открыт, Закрыт).
И видим, что все задачи в структуре отфильтрованы по JQL запросу (Исчезли задачи в статусе "Открыт" и "Закрыт").
![](https://habrastorage.org/getpro/habr/upload_files/1fd/730/038/1fd7300389373ed6fa0ba031d59af11e.png)
Добавление трансформатора "Сгруппировать"
Добавим ещё один трансформатор "Сгруппировать".
![](https://habrastorage.org/getpro/habr/upload_files/47f/642/48a/47f64248aeb7c8884d035ecca7134b25.png)
Группировка происходит по любому Jira-полю.
![](https://habrastorage.org/getpro/habr/upload_files/c1d/505/c71/c1d505c71ff03daea9748ddc14ef2c93.png)
В результате видим отфильтрованные и сгруппированные задачи, по полю "Компонент". В верхней панели видно два созданных и применённых трансформатора.
Добавление обычного трансформатора "Дополнить"
Показываем задачи в эпике.
Выбираем тип трансформатора "Дополнить" .
![](https://habrastorage.org/getpro/habr/upload_files/0c9/d08/bb6/0c9d08bb64d0a9eb8183026d018954a0.png)
Выбираем "Под всеми".
![](https://habrastorage.org/getpro/habr/upload_files/b31/457/44c/b3145744c34908565c2f6c250ea4eef7.png)
В результате видим все задачи из другого проекта, которые относятся к этому эпику (речь про задачи с этим EpicLink).
![](https://habrastorage.org/getpro/habr/upload_files/66f/c04/9ba/66fc049ba57385ba22ed59109013f822.png)
Показываем связанные задачи с определённым типом связи
Аналогичное дополнение можно использовать для отображения связанных задач, например is contained in (актуально для ОМНИ эпиков).
Выбираем "Дополнить" → "Связанные задачи".
Указываем тип связи Contains и направление "is contained in".
![](https://habrastorage.org/getpro/habr/upload_files/071/d0a/4c4/071d0a4c4915de75e239ce17cb245195.png)
Видим связанную задачу к эпику.
![](https://habrastorage.org/getpro/habr/upload_files/162/21f/25e/16221f25edbbeb3a89a2cb966f785b00.png)
Преобразование трансформатора в быстрый
Любой трансформатор можно преобразовать в быстрый, с понятным названием. Это необходимо для быстрого управления, доступа, комбинированию и т.п.
Вот как это сделать:
При создании нового или при наличии существующего выбрать трансформатор и сохранить его.
![](https://habrastorage.org/getpro/habr/upload_files/90f/8cc/cfb/90f8cccfbb0aa69d596a8ee599aae178.png)
Ввести название.
![](https://habrastorage.org/getpro/habr/upload_files/8ab/585/aef/8ab585aeffcf70bbe9230d030fd789e3.png)
В верхней панели выбрать иконку быстрых трансформаций и найти созданную трансформацию.
![](https://habrastorage.org/getpro/habr/upload_files/5b5/04a/b0b/5b504ab0ba0bd7d2a93d93361f7cfd85.png)
Можно её нажать, тем самым применив к структуре.
В строке трансформаторов "Быстрые" трансформаторы с закруглёнными краями, и их всегда можно найти в списке быстрых трансформаций и оттуда же включить или выключить.
![](https://habrastorage.org/getpro/habr/upload_files/4ca/3d9/b86/4ca3d9b86368b3bc63d547b718037ed3.png)
Предыдущую простую трансформацию "Отфильтровать" с JQL-запросом можно удалить, нажав на крестик.
Таким образом можно включать или отключать быстрые трансформаторы, менять их последовательность применения, добавлять новые трансформаторы. Это позволяет гибко перегруппировывать задачи, делать вложенные группировки, сортировки и т.п.
Примеры комбинации трансформаторов
Пример использования разной последовательности одних и тех же трансформаторов типа "Группировка" "По статусу" и "По исполнителю". Аналогичные перераспределения можно делать с любым типом трансформатора.
В данном случае, задачи сначала сгруппированы по статусу, а внутри статуса по исполнителю |
Здесь отображён разрез исполнителя, а внутри исполнителя задачи сгруппированы по статусу |
Пример вложенной сортировки сначала по "Исполнителю", а затем по "Компоненту"
![](https://habrastorage.org/getpro/habr/upload_files/ae7/3e7/ea5/ae73e7ea5266bf8b63958390f417d592.png)
-
Ещё один пример, где я трансформатором "Группировка" разделил направления, а внутри разделы моего продукта:
Первая группировка по "Компоненту", а внутри по "Меткам". По этой причине эти поля больше не требуется видеть в таблице, но они могут понадобиться для быстрого заполнения, если появилось много "пустых" задач.
Сохранение вида
Обязательно нужно сохранять настроенные поля, трансформаторы и другие настройки для вашей структуры, чтобы этот вид был доступен всем по ссылке.
Для этого, нажимаем на кнопку выбора вида и нажимаем "Сохр. как...". Вводим название и сохраняем. Теперь настройки не потеряются.
![](https://habrastorage.org/getpro/habr/upload_files/793/04f/6b9/79304f6b9ef4fcd145a8528be6bdff10.png)
Красивое! Продаёте? Нет, только добавляем раскладки
В структуре возможные различные отображения, кроме структурированного списка трансформаторами.
Самое актуальное для меня - диаграмма Ганта.
Чтобы включить эту раскладку нужно:
Нажать на три точки в правом верхнем углу.
Выбрать Gantt Chart.
![](https://habrastorage.org/getpro/habr/upload_files/db8/2c8/e88/db82c8e888ba43215f35cbb7c60c5547.png)
Заполнить базовые настройки и нажать "Create Gantt chart".
![](https://habrastorage.org/getpro/habr/upload_files/62e/ea6/1f4/62eea61f4f4372e83e2918d984fb62d3.png)
-
В правой части экрана появится диаграмма Ганта.
-
В верхней панели доступны кнопки:
Настройки - настройки, которые производили при создании диаграммы;
Песочница - позволяет "поиграться" с различными версиями планирования;
Today - быстрый переход по графику на "сегодня";
Увеличение/уменьшение и быстрые настройки шага графика.
-
![](https://habrastorage.org/getpro/habr/upload_files/c0e/a3c/49e/c0ea3c49e7144166a36b2fffc6be1c96.png)
-
Двигая элементы можно:
Интерактивно двигать задачи по графику, тем самым автоматически сдвигая Start date / End date;
Двигать начало или конец работ по задаче, также автоматически меняя Start date / End date.
Финал! Кастомизируем
По различным условиям можно добавлять кастомные поля и программировать их.
Условия работают на основе полей задач.
Добавление кастомного поля в структуру
Сначала в структуру нужно добавить новое поле с типом "Формула":
В правом верхнем углу таблицы нажать плюс.
Ввести "Формула" и выбрать поле.
![](https://habrastorage.org/getpro/habr/upload_files/eae/3d2/aa4/eae3d2aa404449bcbd3e5e4b8e63ccd7.png)
Указать название поля и проверить, что тип "Формула" и отображение выбрано Wiki-разметка.
![](https://habrastorage.org/getpro/habr/upload_files/404/370/a98/404370a98baf8269789eac1840b26c2b.png)
-
В текстовом поле вводить код с условиями.
Для удобства можно развернуть поле во весь экран, нажав "Полный экран".
Особенности синтаксиса
Синтаксис:
Оператор, открывающая скобка, условие, точка с запятой, результат, точка с запятой, закрывающая скобка. В последней строке с условием, или в единственной строке в конце точки запятой не требуется (перед закрывающей скобкой).
Используемые операторы: AND, CONCAT, ELSE, IF, NOT, OR, UNDEFINED, WITH
IF (
(условие 1) ;"результат 1" ;
(условие 2); "результат 2" ←в последней строке ";" не требуется
)
Подробнее про синтаксис в wiki
Примеры:
Примеры кастомных полей.
Два примера с программированием и один пример с прогрессом:
Добавляем значение поля со своим лэйблом по заданному условию.
Если на эпике установлен флаг, то в поле красным цветом подсвечивается надпись "Заблокировано".
Простой пример с названием:
if (
( (flagged = "Impediment") ); "{panel}{color:red}Заблокировано{color}{panel}"
)
Добавляем проверки на Start Date / End Date (пример был взят из чьей-то структуры в СМ):
В этом примере проверяется несколько условий и в зависимости от результатов отображаются разные символьные подсказки:
Если эпик не закрыт и не отложен и end date указан и просрочен (= сегодня), то отображается крестик.
Если эпик открыт и Start date указан и просрочен, то отображается восклицательный знак.
Если эпик не закрыт и не отложен и не указан start date/ end date, то отображается соответствующая надпись S (start) или E (end).
Проверка дат:
if(
( (status != "Закрыт" AND status != "Отложен") AND (EndDate > 0) AND (EndDate-TODAY() < 0) ); "(x)"; //Если эпик не закрыт и не отложен и end date указан и просрочен (= сегодня), то отображается (Х)
( (status = "Открыт") AND (StartDate > 0) AND (StartDate-TODAY() < 0) ); "(!)"; //Если эпик открыт и Start date указан и просрочен, то отображается (!).
( (status != "Закрыт" AND status != "Отложен") AND EndDate = null AND StartDate = null AND issuetype != null); "{panel}{color:red}S{color}{panel}{panel}{color:red}E{color}{panel}" //Если эпик не закрыт и не отложен и не указан start date/ end date, то отображается S или E. Тут точки с запятой нет (!).
)
![На первой строке просрочен End date, на четырёх странах они не указаны, на предпоследней указан End date и просрочен. На первой строке просрочен End date, на четырёх странах они не указаны, на предпоследней указан End date и просрочен.](https://habrastorage.org/getpro/habr/upload_files/22a/d51/071/22ad51071768e22cfa97777aede19b42.png)
![Настроенное кастомное поле Настроенное кастомное поле](https://habrastorage.org/getpro/habr/upload_files/807/8d4/715/8078d4715b877be9a95ac9d7664944eb.png)
Визуализируем прогресс по каждой задаче
Другой тип поля - прогресс, позволяет визуализировать прогресс на основе затраченного времени, статуса, пользовательского поля и прочее.
В данном случае я проставил % выполнения в зависимости от движения эпика по статусу, где на допоток выделяется меньше ёмкости, чем на статус в потоке, на который выделено 30% прогресса.
Ищем поле "Формула";
Вводим название поля;
Выбираем Тип "Прогресс";
Выбираем На основе "Статус";
Прописываем % под необходимые статус (Можно не использовать все статусы);
![](https://habrastorage.org/getpro/habr/upload_files/9cf/fa2/281/9cffa2281b917473c8ecf9d920c666f2.png)
В результате получаем зелёный прогресс-бар.
![](https://habrastorage.org/getpro/habr/upload_files/e70/a3e/914/e70a3e91440518676aee08e80a4c1040.png)
Другие примеры с использованием Wiki-разметки.
Это всё?
Почти. Есть ещё ряд возможностей, которые я ещё не успел детально разобрать, может быть, напишу о них в следующий раз, а пока можно почитать детали в WIKI.
![](https://habrastorage.org/getpro/habr/upload_files/c12/9df/765/c129df765b34df532a4f0d80f7d5ca1b.png)
Джалсанов Роман
лидер продукта «Client Service Manager»