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

作用

当父任务更新“修复版本”、“影响版本”字段时,将父任务的这两个字段值复制到子任务中。

使用

进入到 “listener” 菜单,新建一个 “Custom listener” 监听。

给这个监听起名后,选择要应用到的项目和监听的事件 (这里要选择 “Issue Updated”)。

在 “Script” 中填写以下代码。

import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.issue.IssueManager;
import org.ofbiz.core.entity.GenericValue;
import org.joda.time.DateTime;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.changehistory.ChangeHistory;

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.changehistory.ChangeHistoryManager;

log.info("event:" + event);
Issue issue = event.getIssue();
if(issue.isSubTask()){
   return
}
if(eventId == 2L){
     return;
} 

 try{
        GenericValue genericValue = event.getChangeLog();
        //如果更新了issue的"Fix Version"字段, 将此任务的"Fix Version"字段值复制到子任务中
        if ("Fix Version".equals(genericValue.get("field"))) {
            //获取当前issue的子任务
            Collection<Issue> subTasks = issue.getSubTaskObjects();
            for (Issue subTask : subTasks) {
                MutableIssue mutableIssue = ComponentAccessor.getIssueManager().getIssueObject(subTask.getKey());
                mutableIssue.setFixVersions(issue.getFixVersions());
                issueManager.updateIssue(loginUser, mutableIssue, EventDispatchOption.ISSUE_UPDATED, true);
            }
        }
        //如果更新了issue的"Affects Version"字段, 将此任务的"Affects Version"字段值复制到子任务中
        if ("Version".equals(genericValue.get("field"))) {
            //获取当前issue的子任务
            Collection<Issue> subTasks = issue.getSubTaskObjects();
            for (Issue subTask : subTasks) {
                MutableIssue mutableIssue = ComponentAccessor.getIssueManager().getIssueObject(subTask.getKey());
                mutableIssue.setAffectedVersions(issue.getAffectedVersions());
                issueManager.updateIssue(loginUser, mutableIssue, EventDispatchOption.ISSUE_UPDATED, true);
            }
        }
 } catch (Exception e){
    e.printStackTrace();
}


  • No labels