Sportmaster Lab

27 мая 2022

#Управление процессами и командой 21
#Разработка | Development 3

Плагины JIRA в SM Lab: Structure

image

У нас в Спортмастер очень большая экспертиза в части работы с инструментами JIRA. Про доски, спринты и все прочее все наверняка знают и часто применяют. Мы хотим рассказать о других интересных плагинах, которые мы используем в рамках управления продуктом, начнем с JIRA Structure.

Зачем это нужно?

Structure - это плагин для Jira, позволяющий гибко настраивать и управлять Jira задачами любого типа.

Основные возможности:

  • Настраивать отображение задач в виде иерархии, с любой глубиной вложений, группировкой, сортировкой и т.п.
  • "На лету" редактировать поля задачи
  • Отображать любые поля задач и кастомизировать их
  • Визуализировать в различных режимах
  • Экспортировать структуру в excel/pdf или диаграмму Ганта в pdf/svg

С чего начать? Создаём структуру!

1. Заходим в Jira, в верхнем меню выбираем "Структура" → "Создать структуру"

image

2. Далее в мастере создания структуры выбираем и вводим данные

i. Выбираем пустую структуру (либо взять готовый шаблон)

image

ii. Вводим название и уровень доступа и нажимаем "Создать".

image

iii. В результате получаем пустую таблицу с базовым набором трансформаторов

image

iv. Profit! Теперь нужно заполнить структуру. 

Разбираем интерфейс

Панель инструментов:

image

1. Базовые действия с задачами в структуре:

    i    Ручное добавление задач
    ii.  Сворачивание и разворачивание сгруппированных элементов структуры
    iii  Перемещение между собой
    iv  Копирование, вырезание, вставка, удаление
    v   Автоматическое добавление задач

2. Экспорт и настройка раскладки (Раскладка и представление) - две таблицы, гант, ресурсы

3. Управление доступом, выбор других структур

4. Трансформаторы, поиск, виды (ассоциированные или базовые)

5. Поля структуры

6. Управление трансформаторами

Настройка доступов

По-умолчанию доступ к структуре закрыт. Чтобы настроить доступ, нужно:

  • В левом верхнем углу нажать на название структуры
  • Выбрать "Управление структурой"
  • Дальше в списке выбрать свою структуру и нажать "Изменить"
  • Настроить уровни доступа.
image
image

Она пустая! Что делать? Заполняем структуру

Заполнить структуру возможно двумя основными способами

  • Вручную - позволяет чётко контролировать попадание задач в структуру.
  • Автоматически (например, по JQL запросу) - вариант для автопополнения структуры задачами по условиям

Добавление задач вручную

Чтобы добавить задачи вручную нужно:

  • В правой части нажимаем на три точки и выбираем "Две таблицы".
  • После этого экран разделится на две части, и в правой части будет доступно поле для ввода JQL запроса.
  • Вводим запрос и получаем результат, из которого выбираем те задачи, которые будут участвовать в структуре
  • Выбор производим:
    - По-одному, выбрав круглый чекбокс слева от задачи
    - Пачками, используя shift
    - Все задачи из запроса, используя ctrl+a
image

5. Зажатием 8 точек слева от чекбоксов с помощью drag and drop переносим задачи в левое окно, где находится структура.

image

6. Из структуры таким же способом можно выбрать и убрать лишние задачи (крестик сверху или delete)

7. После завершения переноса можно вернуть обратно вид "Одна таблица".

Автоматическое добавление задач

Наиболее удобный способ заполнять структуру - с помощью автоматизации.

В верхней панели инструментов нажимаем "Автоматизация" → "+" → "Вставить"

image

Из списка выбираем наиболее подходящий способ:
- JQL запрос
- Досква

image

В результате получаем все задачи из JQL запроса или доски. Все новые задачи по этому запросу будут автоматически добавляться в структуру.

Получился excel? Настраиваем структуру

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

image

Для настройки нужно нажать на стрелку в углу нужного поля (содержимое настроек отличается от типа поля), где:

Переименовать, Донастроить отображение

image

Удалить

image

Наиболее удобные поля для меня:

Тема - Видеть название, чтобы понять о чём задача

Статус - Видеть текущий статус

User Priority – Приоритет задач

Комментарий - Видеть последний комментарий (Например, актуальный статус)

Компоненты (на время настройки, описано в разделе трансформирования)

Метки (на время настройки, описано в разделе трансформирования)

Start Date - Видеть и изменять

End Date - Видеть и изменять на год вперёд

Кастомные поля (Описано в соответствующем разделе статьи)

В структуре можно производить стандартные действия с задачей по нажатию на три точки в конце каждой задачи. Например, добавлять новый комментарий.

Также можно изменять значения почти любого поля, не проваливаясь в каждую задачу. Для этого двойным кликом нажимаем на нужное поле задачи и вводим/выбираем значение.

image

Всё ещё excel? Трансформируем структуру!

К структуре можно применить "трансформаторы". Это основной инструмент, структурирующий список задач. Трансформаторы удобны тем, что их можно включить, выключить, отсортировать, преобразовать в быстрые и всё это делается в два клика, что позволяет быстро управлять видом структуры.

Какие бывают типы трансформаторов?

Каждый тип трансформации имеет соответствующую иконку, это позволяет ориентироваться в настроенных трансформациях.

image

Создаём свои трансформации

Добавление трансформатора "Отфильтровать". В правом верхнем углу выбираем иконку "Трансформация". Ниже выбираем "Добавить трансформацию" и в выпадающем списке выбираем тип трансформатора, затем выбираем условия и задаём их:

image

Для примера выбираем первый тип "Отфильтровать"

Выбираем "JQL-запрос"

image

Вводим JQL-запрос, например:

Фильтрация по статусу (не открыт)
status not in (Открыт, Закрыт)

И видим, что все задачи в структуре отфильтрованы по JQL запросу (Исчезли задачи в статусе "Открыт" и "Закрыт")

image

Добавим ещё один трансформатор "Сгруппировать"

image

Группировка происходит по любому Jira полю

image

В результате видим отфильтрованные и сгруппированные задачи, по полю "Компонент". В верхней панели видно два созданных и применённых трансформатора.

Добавление обычного трансформатора "Дополнить"

Показываем задачи в эпике

Выбираем тип трансформатора "Дополнить"

image

Выбираем "Под всеми"

image

В результате видим все задачи из другого проекта, которые относятся к этому эпику (речь про задачи с этим EpicLink)

image

Показываем связанные задачи с определённым типом связи

Аналогичное дополнение можно использовать для отображения связанных задач, например is contained in (актуально для ОМНИ эпиков).

Выбираем "Дополнить" → "Связанные задачи".

Указываем тип связи Contains и направление "is contained in". 

image

Видим связанную задачу к эпику

image

Преобразование трансформатора в быстрый

Любой трансформатор можно преобразовать в быстрый, с понятным названием. Это необходимо для быстрого управления, доступа, комбинированию и т.п. Для этого нужно при создании нового или при наличии существующего, выбрать трансформатор и сохранить его.

image

Ввести название

image

В верхней панели выбрать иконку быстрых трансформаций и найти созданную трансформацию. Можно её нажать, тем самым применив к структуре.

image

В строке трансформаторов "Быстрые" трансформаторы с закруглёнными краями, и их всегда можно найти в списке быстрых трансформаций и оттуда же включить или выключить.  Предыдущую простую трансформацию "Отфильтровать" с JQL запросом можно удалить, нажав на крестик.

image

Таким образом можно включать или отключать быстрые трансформаторы, менять их последовательность применения, добавлять новые трансформаторы. Это позволяет гибко перегруппировывать задачи, делать вложенные группировки, сортировки и т.п.

Примеры комбинации трансформаторов

Пример использования разной последовательности одних и тех же трансформаторов типа "Группировка" "По статусу" и "По исполнителю". Аналогичные перераспределения можно делать с любым типом трансформатора. На примере слева задачи сначала сгруппированы по статусу, а внутри статуса - по исполнителю. На примере справа отображён разрез исполнителя, а внутри исполнителя задачи сгруппированы по статусу.

image

Пример вложенной сортировки сначала по "Исполнителю", а затем по "Компоненту"

image

Ещё один пример, где я трансформатором "Группировка" разделил направления, а внутри разделы моего продукта - первая группировка по "Компоненту", а внутри по "Меткам". По этой причине эти поля больше не требуется видеть в таблице, но они могут понадобиться для быстрого заполнения, если появилось много "пустых" задач.

Сохранение вида

Обязательно нужно сохранять настроенные поля, трансформаторы и другие настройки для вашей структуры, чтобы этот вид был доступен всем по ссылке. Для этого нажимаем на кнопку выбора вида и нажимаем "Сохр. как...". Вводим название и сохраняем. Теперь настройки не потеряются. 

image

Красивое! Продаёте? Нет, только добавляем раскладки!

В структуре возможные различные отображения, кроме структурированного списка трансформаторами. Самое актуальное для меня - диаграмма Ганта. Чтобы включить эту раскладку нужно нажать на три точки в правом верхнем углу и выбрать Gantt Chart

image

Заполнить базовые настройки и нажать "Create Gantt chart"

image

В правой части экрана появится диаграмма Ганта. В верхней панели доступны кнопки:

  • Настройки - настройки, которые производили при создании диаграммы
  • Песочница - позволяет "поиграться" с различными версиями планирования
  • Today - быстрый переход по графику на "сегодня"
  • Увеличение/уменьшение и быстрые настройки шага графика
image

Двигая элементы можно интерактивно двигать задачи по графику, тем самым автоматически сдвигая Start date / End date, а также двигать начало или конец работ по задаче, также автоматически меняя Start date / End date

Финал! Кастомизируем.

По различным условиям можно добавлять кастомные поля и программировать их. Условия работают на основе полей задач. Сначала в структуру нужно добавить новое поле с типом "Формула": в правом верхнем углу таблицы нажать плюс, ввести "Формула" и выбрать поле.

image

Указать название поля и проверить, что тип "Формула" и отображение выбрано Wiki-разметка.

image

В текстовом поле вводить код с условиями. Для удобства можно развернуть поле во весь экран, нажав "Полный экран".

Синтаксис:

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

Используемые операторы: 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 и просрочен.

image

Настроенное кастомное поле. Визуализируем прогресс по каждой задаче

image

Другой тип поля - прогресс, позволяет визуализировать прогресс на основе затраченного времени, статуса, пользовательского поля и т.п. В данном случае я проставил % выполнения в зависимости от движения эпика по статусу, где на допоток выделяется меньше ёмкости, чем на статус в потоке, на который выделено 30% прогресса.

Ищем поле "Формула", вводим название поля, выбираем Тип "Прогресс", выбираем На основе "Статус" и прописываем % под необходимые статус (можно не использовать все статусы).

image

В результате получаем зелёный прогресс-бар.

image

Другие примеры с использованием Wiki-разметки

Это всё?

Почти. Есть ещё ряд возможностей, которые я ещё не успел детально разобрать, может быть напишу о них в следующий раз, а пока можно почитать детали в WIKI.

userImage
SM Lab
Роман Джалсанов
Лидер продукта "Client Service Manager"
Присоединяйся к чату комьюнити

Будь в курсе всех новостей, обращайся за помощью к коллегам и находи единомышленников!

Заходи в чат