В чистом Jira Server невозможно перейти по ссылкам, вам придется запрашивать проблемы, назначенные эпопее, брать их ключи или идентификаторы и создавать комбинированный запрос.Допустим, у вас есть эпопея верхнего уровня под названием TOP-1 и TOP-2, вам нужно будет выполнить запрос:
issue in linkedIssues("TOP-1", "is task of") and issuetype = Epic
возьмите возвращенные ключи для выдачи, повторите для TOP-2, это даст вамэпосов второго уровня, скажем, SUB-1 и SUB-2, тогда вам нужно выполнить запрос вроде:
"Epic Link" in (TOP-1, TOP-2) or "Epic Link" in (SUB-1, SUB-2)
, это даст вам вопросы, назначенные этим эпикам, без подзадач.Довольно громоздкий и требует ручного обновления, определенно не стоит этого делать.
В качестве альтернативы можно получить плагин, расширяющий функциональность JQL, например JQL Search Extensions .Затем вы можете вложить JQL-запросы, например:
issue in allIssuesInEpic("TOP-1", "TOP2") or (issue in allIssuesInEpic(issue in linkedBy("TOP-1", "TOP-2", "is task of")))
Где первая часть запроса issue in allIssuesInEpic("TOP-1", "TOP2")
возвращает проблемы, непосредственно связанные с эпосами TOP-1 или TOP-2, а вторая часть issue in allIssuesInEpic(issue in linkedBy("TOP-1", "TOP-2", "is task of"))
находит эпосы, связанные как «есть задача» с эпиками высшего уровня, а затем находит все проблемы с подзадачами, назначенными этим эпикам второго уровня.Вам нужно будет расширить запрос для каждого уровня вложенности, со структурой, которую вы описали, вышеупомянутый запрос будет делать то, что вам нужно.Однако, если вы добавите третий уровень вложенности, вам придется расширить запрос следующим образом:
issue in allIssuesInEpic("TOP-1", "TOP2") or (issue in allIssuesInEpic(issue in linkedBy("key in (TOP-1, TOP2) or issue in linkedBy("TOP-1", "TOP-2", "is task of")", "is task of")))
Вы можете сделать его более читабельным, создав фильтры для каждого уровня вложенности, например, создатьФильтр с именем Features:
key in (TOP-1, TOP-2)
, затем создайте фильтр с именем sub-feature:
issue in linkedBy("filter = Features", "is task of")
, затем создайте окончательный запрос, например:
issue in allIssuesInEpic("filter = \"Features\" or filter = \"sub-features\"")