- 应用于问题创建后,对已经存在的链接进行判断
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]时,关联对象的问题类型应为[业务需求/项目]");
}
}