Groovy Scriptrunner:更新版本时更新Jira子任务

Groovy Scriptrunner:更新版本时更新Jira子任务,groovy,jira,Groovy,Jira,当父任务版本更新时,我需要更新Jira子任务版本字段。并且仅当父任务版本更新时 我一直在使用来自Atlassian社区论坛(由Martin Hanus编写)的现有脚本 导入com.atlassian.jira.component.component访问器 导入com.atlassian.jira.event.type.EventDispatchOption 导入com.atlassian.jira.issue.issue 导入com.atlassian.jira.issue.IssueManag

当父任务版本更新时,我需要更新Jira子任务版本字段。并且仅当父任务版本更新时

我一直在使用来自Atlassian社区论坛(由Martin Hanus编写)的现有脚本

导入com.atlassian.jira.component.component访问器
导入com.atlassian.jira.event.type.EventDispatchOption
导入com.atlassian.jira.issue.issue
导入com.atlassian.jira.issue.IssueManager
导入com.atlassian.jira.issue.MutableIssue
导入com.atlassian.jira.project.version.version
IssueManager IssueManager=ComponentAccessor.getComponent(IssueManager.class)
Issue updatedIssue=event.getIssue()
集合fixVersions=新ArrayList()
fixVersions=updatedIssue.getFixVersions()
集合子任务=updatedIssue.getSubTaskObjects()
子任务。每个{
如果(它是可变问题的实例){
((MutableIssue)it).setFixVersions(fixVersions)
issueManager.UpdateSue(event.getUser(),it,EventDispatchOption.ISSUE\u UPDATED,false)
}
}

这会正确更改子任务版本,但每次更新父任务时都会更改。我怎样才能让它仅在父任务版本更新时更新?

我无法测试以下代码,因此建议您这样做

资料来源:

您可以检查您感兴趣的字段的旧值,如果未使用UDATED,则中止脚本:

def change = event?.getChangeLog()?.getRelated("ChildChangeItem")?.find {it.field == "FixVersions"}
if (!change) {
    return
}
def change = event?.getChangeLog()?.getRelated("ChildChangeItem")?.find {it.field == "FixVersions"}
if (!change) {
    return
}