Page tree
Skip to end of metadata
Go to start of metadata

场景

我们在执行当前问题的一个动作的时候,期望通过当前问题字段信息,来创建另外一个问题(来自于不没的项目或者不同的问题类型);

一个功能开发,产生了缺陷,那么功能开发执行一个动作的时候,能够自动根据当前功能开发的这个问题创建一个缺陷,并与此功能开发关联。


代码

import com.atlassian.jira.bc.issue.IssueService;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.exception.CreateException;
import com.atlassian.jira.issue.*;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.link.IssueLink;
import com.atlassian.jira.issue.link.IssueLinkManager;
import com.atlassian.jira.issue.link.IssueLinkType;
import com.atlassian.jira.issue.link.IssueLinkTypeManager;
import com.atlassian.jira.user.ApplicationUser;


MutableIssue currIssue = issue;
ApplicationUser currUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser();

CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
IssueLinkManager issueLinkManager = ComponentAccessor.getIssueLinkManager();

//自定义人员信息
CustomField devUserCf = customFieldManager.getCustomFieldObject(1234456L);
ApplicationUser applicationUser = (ApplicationUser)currIssue.getCustomFieldValue(devUserCf);

CustomField testUserCf = customFieldManager.getCustomFieldObject(1234456L);

//创建一个问题 ,这里要填写的信息从 currIssue 获得
IssueService issueService = ComponentAccessor.getIssueService();


IssueInputParameters issueInputParameters =issueService.newIssueInputParameters();

issueInputParameters.setProjectId(currIssue.getParentObject().getId());
issueInputParameters.setIssueTypeId("123456");// 缺陷的issuetypeid
issueInputParameters.setSummary("summary");
issueInputParameters.setDescription("setDescription");
issueInputParameters.setPriorityId("priorityid");
issueInputParameters.setAssigneeId("username");
issueInputParameters.setReporterId(applicationUser.getUsername());

//各类自定义字段,可参见页面html源做代码,第一个参数customffield_123456 ,第二个是页面字段value
issueInputParameters.addCustomFieldValue(testUserCf.getId(),"username");

IssueService.CreateValidationResult createValidationResult
	= issueService.validateCreate(currUser, issueInputParameters);

MutableIssue bugIssue = null;
if (createValidationResult.isValid()) {
	IssueService.IssueResult createResult =
		issueService.create(currUser, createValidationResult);
	bugIssue = createResult.getIssue();
}
//没有正确的创建问题
if(bugIssue==null){
	return;
}

Long issueLinkTypeId = 123456L; //可以查一下关联问题的issuelink 的ID值。
//创建完成后,开始关联两者
try {
issueLinkManager.createIssueLink(
	currIssue.getId(),
	bugIssue.getId(),
	issueLinkTypeId, null, currUser);

} catch (CreateException e) {
	e.printStackTrace();
}

  • No labels