使用" Scriptrunner for Jira"更新自定义字段值自定义收听者

时间:2016-09-14 06:39:54

标签: groovy jira jira-plugin

您好我们正在使用Jira,目前正在评估插件" Scriptrunner for Jira"由Adaptavist。

我想创建一个自定义侦听器,它只是更新自定义字段的值。字段的类型是默认文本框,没有什么花哨的。

关于插件的文档和各种网页搜索,我提出了以下代码:

import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue

def issue = event.issue as Issue
MutableIssue issueToUpdate = (MutableIssue) issue;
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
def cf = customFieldManager.getCustomFieldObjects(issue).find {it.name == 'My CustomField'}
issueToUpdate.setCustomFieldValue(cf, "myvalue");

验证器不会在这里抱怨任何内容,并且脚本似乎没有任何错误地执行。问题是自定义字段的值根本不会更新。也许你们中的一些人有失踪的一块。

似乎需要每一行,否则验证者会抱怨。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

我刚从Adaptavist那里得到了一个终于有效的答案。请在下面找到工作代码:

import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.component.ComponentAccessor

def issue = event.issue as Issue
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def tgtField = customFieldManager.getCustomFieldObjects(event.issue).find {it.name == "My CustomField"}
def changeHolder = new DefaultIssueChangeHolder()
tgtField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(tgtField), "myvalue"),changeHolder)