2016-03-08 94 views
0

只需要一个小小的方向来完成我的脚本,我需要收集几个单选按钮字段的值,并执行一个if/then条件来确定另一个单选按钮的默认值。这是我到目前为止,这是正确的方法?我错过了什么?这是一个在ScriptRunner中使用Groovy的自定义字段脚本。如何根据其他几个单选按钮选项的条件设置单选按钮值?

import com.atlassian.jira.issue.IssueManager 
import com.atlassian.jira.issue.Issue; 
import com.atlassian.jira.issue.fields.CustomField; 
import com.atlassian.jira.issue.IssueManager; 
import com.atlassian.jira.issue.CustomFieldManager; 
import com.atlassian.jira.component.ComponentAccessor; 
import com.atlassian.jira.issue.MutableIssue; 

//managers 
def customFieldManager = ComponentAccessor.getCustomFieldManager() 
IssueManager issueManager = ComponentAccessor.getIssueManager(); 

//gather the fields needed 
def field1 = CustomFieldManager.getCustomFieldObjectByName("Field 1") 
def field2 = CustomFieldManager.getCustomFieldObjectByName("Field 2") 

//gather the values of the fields 
def field1Value = issue.getCustomFieldValue(Field1).getValue() 
def field2Value = issue.getCustomFieldValue(Field2).getValue() 
if (field1Value == "Agree" && field2Value == "Agree"){ 
    def field3 = customFieldManager.getCustomFieldObjectByName("Field 3") 
    issue.setCustomFieldValue(field3, "Agree") 
} else { 
    issue.setCustomFieldValue(field3, "Disagree") 
} 
+0

它工作吗?什么不工作? PS:首都开始上课,小写字母开始变量,所以'field2',而不是'Field2'。这是一个惯例,可以阻止你在以后陷入潜在的陷阱时Groovy可能会猜测你在谈论一个类 –

+0

谢谢你,我已经更新了变量的情况下,我通常按照惯例,但冲到问题在这里。当我在Script Runner中测试此脚本时,我在所有'问题'调用中收到以下错误:变量[issue]未声明。这是一个脚本字段,它将作为Jira工作流程中打开的任何“问题”的后期功能运行。当我想到我将它用作上面导入的包来执行方法getCustomFieldValue和setCustomFieldValue时,我对如何声明问题感到困惑。 – ProtoType

+0

你最好的选择是问Atlassian。根据我的理解,为你提供'issue',但它不是Groovy的东西,它是一个Script Runner的东西。也许你以某种方式在错误的上下文中运行代码。 https://marketplace.atlassian.com/plugins/com.onresolve.jira.groovy.groovyrunner/server/support –

回答

0

想出什么问题了... Emmanual是与上下文正确的,因为我是在Scriptrunner,这不是用行为实现的也不是它的“脚本场”,这是上下文加入这个运行如果您打算在该问题的上下文中调用问题对象,则为必需。