2016-09-14 69 views
0

您好,我们正在使用Jira并且目前正在评估Adaptavist的插件“Jira的Scriptrunner”。使用“Jira的Scriptrunner”自定义监听器更新自定义字段值

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

关于到插件的文件和各种网络搜索,我想出了下面的代码:

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"); 

的验证程序不抱怨什么这里和脚本似乎没有任何错误执行。问题是自定义字段的值不会更新。也许你们中有些人有缺失的一块。

每一行似乎都是需要的,否则验证器会发出抱怨。预先感谢您的帮助。

回答

4

我刚从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) 
+0

我已经使用这种方法,它工作得很好。干杯凯文! –

相关问题