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




  • No labels