首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图自动创建基于复选框的子任务。子任务不会被创建,但是没有收集错误。

试图自动创建基于复选框的子任务。子任务不会被创建,但是没有收集错误。
EN

Stack Overflow用户
提问于 2016-07-29 11:00:07
回答 1查看 506关注 0票数 1

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

我遗漏了什么?

代码语言:javascript
复制
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");
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-30 14:44:30

代码语言:javascript
复制
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");
}

在这段代码中,当您尝试创建问题时,您将得到一个https://docs.atlassian.com/jira/latest/com/atlassian/jira/bc/issue/IssueService.IssueResult.html实例。IssueResult也有https://docs.atlassian.com/jira/latest/com/atlassian/jira/bc/ServiceResultImpl.html#isValid()https://docs.atlassian.com/jira/latest/com/atlassian/jira/bc/ServiceResultImpl.html#getErrorCollection()方法。您应该使用这些来检查在创建问题期间是否发生了任何错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38657151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档