【发布时间】:2020-06-19 17:11:16
【问题描述】:
使用 JQL 和 Adaptavist ScriptRunner,我如何编写一个查询来返回 - 对于我的项目“ABC” - 仅关闭 Jira 相关问题的史诗?
【问题讨论】:
使用 JQL 和 Adaptavist ScriptRunner,我如何编写一个查询来返回 - 对于我的项目“ABC” - 仅关闭 Jira 相关问题的史诗?
【问题讨论】:
让我们使用集合论构造这个查询。第一部分将构建返回我们不想要的所有内容的查询。第二部分将构建所有内容的查询。最后,我们将把两者结合起来,返回我们想要的东西。 开始第一部分!...
首先,让我们返回与 ABC 史诗相关的 Jira 问题:
issueFunction in issuesInEpics("project = ABC")
扩展该查询,我们添加一个将返回史诗的子句作为前缀。也就是说,与 ABC 史诗相关的 Jira 问题的史诗:
issueFunction in epicsOf("issueFunction in issuesInEpics(\"project = ABC\")")
到目前为止,我们还没有查询状态。但是请记住,我们只需要所有已关闭的 Jira 问题的史诗。下一个子句可能看起来违反直觉,因为在这里我们将添加一个 statusCategory 检查未完成的 Jira 问题:
issueFunction in epicsOf("issueFunction in issuesInEpics(\"project = ABC\") and statusCategory != Done")
所以,上面说请给我与尚未完成的 Jira 问题相关的史诗。这适用于与 ABC 项目史诗相关的 Jira 问题。
让我们暂时离开那个查询并开始一个新的查询。
与上述相同的查询。所有与 ABC 史诗相关的 Jira 问题:
issueFunction in issuesInEpics("project = ABC")
再一次,和上面一样:
issueFunction in epicsOf("issueFunction in issuesInEpics(\"project = ABC\")")
现在,一些变化。我们不关心封闭的史诗。此条款专门适用于史诗,不适用于相关的 Jira 问题...
statusCategory != Done AND issueFunction in epicsOf("issueFunction in issuesInEpics(\"project = ABC\")")
太棒了!我们现在有了与 Jira 问题相关的开放 ABC 史诗列表。让我们将两者结合起来,让我们区分第一部分和第二部分。也就是说,打开的 ABC 史诗不属于 ABC 史诗集,并具有开放的相关 Jira 问题:
statusCategory != Done AND issueFunction in epicsOf("issueFunction in issuesInEpics(\"project = ABC\")") AND NOT issueFunction in epicsOf("issueFunction in issuesInEpics(\"project = ABC\") and statusCategory != Done")
打开一些返回的史诗,可以看到它们是打开的,但所有相关的 Jira 问题都已关闭。问题解决了!
请注意,使用子过滤器可以使这更整洁。有关这方面的更多信息,请查看ScriptRunner reference 上的示例。
【讨论】: