- 应用于问题创建后,对已经存在的链接进行判断
import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.IssueManager; import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.issue.link.IssueLink; import com.atlassian.jira.issue.link.IssueLinkManager; import com.opensymphony.workflow.InvalidInputException; import com.opensymphony.workflow.WorkflowException; IssueManager issueManager = ComponentAccessor.getIssueManager(); IssueLinkManager issueLinkManager = ComponentAccessor.getIssueLinkManager(); List<IssueLink> issueLinkList = issueLinkManager.getOutwardLinks(issue.getId()); for (int i = 0; i < issueLinkList.size(); i++) { IssueLink issueLink = issueLinkList.get(i); String issueLinkTypeName = issueLink.getIssueLinkType().getOutward(); if("blocks" != issueLinkTypeName){ //指定关联关系 continue; } Issue issueDesc = issueLink.getDestinationObject(); //关联对象如果非非指定的问题类型时,进行提示 if(issueDesc.getIssueType().getName() != "业务需求/项目"){ throw new InvalidInputException("当链接关系为[block]时,关联对象的问题类型应为[业务需求/项目]"); } }
- 应用于问题创建时,或者执行工作流在动作界面上的输入进行判断
import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.IssueManager; 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.fields.IssueLinksSystemField; import com.atlassian.jira.issue.issuetype.IssueType; import com.atlassian.jira.issue.link.IssueLinkTypeManager; import com.opensymphony.workflow.InvalidInputException; import com.opensymphony.workflow.WorkflowException; IssueManager issueManager = ComponentAccessor.getIssueManager(); IssueLinkManager issueLinkManager = ComponentAccessor.getIssueLinkManager(); IssueLinksSystemField.IssueLinkingValue issueLinkingValue = ((IssueLinksSystemField.IssueLinkingValue) issue.getExternalFieldValue("issuelinks")); log.debug("issueLinkingValue:"+issueLinkingValue); if (issueLinkingValue == null || issueLinkingValue.getValidationResult() == null) { return true; } if (!"Blocks".equalsIgnoreCase(issueLinkingValue.getValidationResult().getLinkName())) {//链接的对象关系 return true; } List<String> linkIssueKeyList = new ArrayList(); linkIssueKeyList.addAll(issueLinkingValue.getValidationResult().getLinkKeys()); if (linkIssueKeyList.size() == 0) { return true; } for (int i = 0; i < linkIssueKeyList.size(); i++) { String issuekey = linkIssueKeyList.get(i) Issue issueTemp = issueManager.getIssueObject(issuekey); if (issueTemp == null) { throw new InvalidInputException("链接的问题不存在:"+issuekey); } if (!"业务需求/项目".equalsIgnoreCase(issueTemp.getIssueType().getName())) {//问题类型 throw new InvalidInputException("当链接关系为[block]时,关联对象的问题类型应为[业务需求/项目]"); } }