Groovy Scripted字段显示JIRA JQL的结果

时间:2015-08-13 02:04:21

标签: groovy jira jql

我想获得一些指针来编写一个简单的JIRA groovy脚本字段 - 输入是一个JQL,结果是JQL的结果。 例如,如果JQL是“project = RS and fixVersion = 5.0”,它将在自定义字段显示中列出从此JQL返回的问题的列表。

1 个答案:

答案 0 :(得分:2)

首先我创建了一个名为" Fixed Issues JQL"的JIRA字段,它假设我将输入" project = VOL和fixVersion = 6.0"的值。在JIRA。 然后我创建了第二个JIRA自定义字段,一个名为"固定问题列表"的groovy脚本字段,其中包含以下代码:

import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.user.util.UserUtil
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.customfields.manager.OptionsManager

SearchService searchService = ComponentAccessor.getComponent(SearchService.class)
UserUtil userUtil = ComponentAccessor.getUserUtil()
User user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
IssueManager issueManager = ComponentAccessor.getIssueManager()

def componentManager = ComponentManager.instance
def optionsManager = ComponentManager.getComponentInstanceOfType(OptionsManager.class)
def customFieldManager = componentManager.getCustomFieldManager()
def cf = customFieldManager.getCustomFieldObjectByName("Fixed Issues JQL")
def myJQL = issue.getCustomFieldValue(cf)   // has a value such as "project = VOL and fixVersion = 6.0"

if (!user) {
    user = userUtil.getUserObject('kwhite')
}

List<Issue> issues = null

SearchService.ParseResult parseResult =  searchService.parseQuery(user, myJQL)
if (parseResult.isValid()) {
    def searchResult = searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter())
    // Transform issues from DocumentIssueImpl to the "pure" form IssueImpl (some methods don't work with DocumentIssueImps)
    issues = searchResult.issues.collect {issueManager.getIssueObject(it.id)}
} else {
    log.error("Invalid JQL: " + myJQL);
}