您好我们正在使用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");
验证器不会在这里抱怨任何内容,并且脚本似乎没有任何错误地执行。问题是自定义字段的值根本不会更新。也许你们中的一些人有失踪的一块。
似乎需要每一行,否则验证者会抱怨。提前感谢您的帮助。
答案 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)