Предисловие
Периодически слышу, как мне говорят: «В Jira неудобно управлять бэклогом, стандартный список задач мне не нравится». Дело доходит даже до выписывания задач в Excel. Тогда зачем нам таск‑трекер?)
Сегодня попробую рассказать о решении, которым сам пользуюсь, а именно применение Structure.
К действиям
Очень кратко о нашей декомпозиции задач. Это пригодится в дальнейшем.
1 уровень. Инициатива. Она вмещает в себя несколько эпиков
2 уровень. Эпик. Он вмещает в себя несколько историй, тасок, багов и т.д.
3 уровень. Таски. Он может дробиться на подзадачи
4 уровень. Подзадачи. Самая минимальная единица, которая не может быть самостоятельной.
Не буду долго рассказывать про Structure в Jira. Об этом есть много информации в интернете. Хочется, чтобы статься получилась краткой, без лишней информации.
И так, что я сделал.
У меня создана структура с несколькими папками внутри. В каждой папке записан свой JQL код, что позволяет менять логику, если это необходимо.

Подробнее о блоках.
Бэклог с инициативами. Это будет полностью декомпозированный бэклог с правильной иерархией задач. Как создать:
Здесь свой JQL, который выводит все инициативы и задачи нижних уровней. Чтобы его создать используйте такой запрос:
project = "ВАШ ПРОЕКТ" AND type = Initiative AND resolution = UnresolvedТакже дополняем структуру такими стандартными запросами:

Эпики без инициатив. Папка нужна для того, чтобы отслеживать какие эпики не прикреплены к инициативам. Помогает уменьшить человеческий фактор.
Здесь также свой JQL? который выглядит так:
project in ( "ВАШ ПРОЕКТ") AND type = Epic AND "Parent Link" is EMPTY AND resolution = UnresolvedНе забудем дополнить его стандартным запросом:

Задачи без эпиков. Эта папка по смыслу похожа на предыдущую. Направлена на то, чтобы увидеть задачи, которые мы забыли привязать к эпику.
Здесь всего лишь один запрос, который выглядит так:
project in ("ВАШ ПРОЕКТ") AND type not in (Epic, Initiative) AND "Ссылка на эпик" is EMPTY AND resolution = Unresolved
Активный спринт. Здесь есть специфичные функции, которые подходят не всем, но их можно легко подогнать под себя. В папке мы видим задачи из конкретного спринта и из конкретных проектов. Если у вас несколько команд, то решение заключается в том, чтобы спринты называть более стандартизировано, начиная название спринта с названия вашей команды.
JQL:
Спринт in openSprints()Добавляем фильтрацию задач

В атрибуте "Формула" указываем это:
withassigned=sprint.FILTER($.state = "active" OR$.state = "future"): IFstatuscategory!= "DONE" ANDassigned.SIZE() > 0:_assigned.LAST() ELSE IFstatuscategory= "DONE": LAST(sprint.name) ELSE: "Backlog"
Добавляем подзадачи стандартным запросом:

Будущие спринты. Эта папка, судя из названия отображает все будущие спринты команды. В основном нужна для планирования спринтов.
JQL:
Спринт in futureSprints() AND resolution = UnresolvedГруппируем задачи по формуле, что указана в пункте 4.2.1.

Отфильтровываем задачи с названием спринта, содержащим название вашей команды
Дополняем задачи стандартными запросами:

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