java - 尝试根据复选框自动创建子任务。子任务不会被创建,但没有收集到错误

标签 java groovy jira

我正在开发 JIRA 项目,我需要做的事情之一是根据初始问题创建中选定的复选框自动创建子任务。所有值都已正确输入,但不会执行子任务,也没有需要检查的错误。我放入错误集合是子任务创建验证结果返回 false,但当我运行代码时它没有报告任何错误。

我错过了什么?

import com.atlassian.jira.issue.Issue
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.bc.issue.IssueService.CreateValidationResult
import com.atlassian.jira.bc.issue.IssueService.IssueResult
import com.atlassian.jira.util.ImportUtils
import com.atlassian.jira.workflow.WorkflowTransitionUtil;
import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl;
import com.atlassian.jira.util.JiraUtils;
import com.atlassian.jira.project.Project
import java.lang.Boolean;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.security.JiraAuthenticationContext
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.issue.IssueInputParametersImpl
import com.atlassian.jira.config.SubTaskManager

def customFieldManager = ComponentAccessor.getCustomFieldManager() 
def issueFactory = ComponentAccessor.getIssueFactory()
def issueManager = ComponentAccessor.getIssueManager() 
def cfsubTasks = customFieldManager.getCustomFieldObjectByName("CRCs Needed")
def checkboxTypeIDs = ['Endpoint':"11309", "IP/DNS Blocklist":"11311", "Network Signature":"11310", "PCAP Pull":"11306", "Splunk Dashboard":"11305"]
def summaryMap = ['Endpoint':"Endpoint Countermeasure", "IP/DNS Blocklist":"IP/DNS Countermeasure", "Network Signature":"Signature Countermeasure", "PCAP Pull":"PCAP Pull", "Splunk Dashboard":"Splunk Dashboard"]
def subTasks = issue.getCustomFieldValue(cfsubTasks);

SubTaskManager subTaskManager = ComponentAccessor.getSubTaskManager()
IssueService issueService = ComponentAccessor.getIssueService();
Project project = issue.getProjectObject();
Long issueId = issue.getId()
JiraAuthenticationContext authenticationContext = ComponentAccessor.getOSGiComponentInstanceOfType(JiraAuthenticationContext.class);
Object userObject = authenticationContext.getUser()
User user = userObject instanceof ApplicationUser ? ((ApplicationUser) userObject).getDirectoryUser() : (User) userObject;

subTasks.each(){
    def key = it.toString()
    IssueInputParameters inputParameters = issueService.newIssueInputParameters()
    inputParameters.setProjectId(project.getId())
    inputParameters.setSummary(summaryMap[key])
    inputParameters.setIssueTypeId(checkboxTypeIDs[key])
    inputParameters.setReporterId(user.getName())
    inputParameters.setApplyDefaultValuesWhenParameterNotProvided(true)

    CreateValidationResult createSubTaskValidationResult = issueService.validateSubTaskCreate(userObject, issueId, inputParameters)
    if (!createSubTaskValidationResult.isValid()) {
            Collection<String> errors = createSubTaskValidationResult.getErrorCollection().getErrorMessages();
            log.error("Sub-task cannot be created due to following reasons: " + errors);
            return;
    } else {
            IssueResult issueResult = issueService.create(userObject, createSubTaskValidationResult)
            Issue subTask = issueResult.getIssue()
            subTaskManager.createSubTaskIssueLink(issue, subTask, user)
            log.debug("Sub-task " + subTask + " for issue " + issue + " is created");
    }
}

最佳答案

else {
        IssueResult issueResult = issueService.create(userObject, createSubTaskValidationResult)
        Issue subTask = issueResult.getIssue()
        subTaskManager.createSubTaskIssueLink(issue, subTask, user)
        log.debug("Sub-task " + subTask + " for issue " + issue + " is created");
}

在这段代码中,您会得到一个 IssueResult 当您尝试创建问题时的实例。 IssueResult 还具有 isValid getErrorCollection 方法。您应该使用它们来检查在创建问题期间是否发生任何错误。

关于java - 尝试根据复选框自动创建子任务。子任务不会被创建,但没有收集到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38657151/

相关文章:

jira - 有没有办法计算 JIRA 中 "Reopened"票的数量?

java - 为什么 while 循环在条件为假时被处理为真?

java - 如何在java中将JsonString反序列化为json格式

java - 使用 XSLT 转换 XML 和保留 Unicode 字符

java - 使用一对多关系时 Grails withCriteria 异常

groovy - Gradle - 处理外部资源

java - Repaint方法更新太慢

bash - curl - 如何在登录后获取 cookie 以发送 curl 命令?

Python 与 JIRA XRAY 集成

python - jira-python 转换 REST API