场景
我们在执行当前问题的一个动作的时候,期望通过当前问题字段信息,来创建另外一个问题(来自于不没的项目或者不同的问题类型);
一个功能开发,产生了缺陷,那么功能开发执行一个动作的时候,能够自动根据当前功能开发的这个问题创建一个缺陷,并与此功能开发关联。
代码
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(); }