首页 > 解决方案 > Jira 自定义 groovy 脚本后置函数中的错误

问题描述

我正在尝试创建一个发布功能,该功能将在创建问题时创建子任务。我正在尝试创建一个 post 函数,该函数将在创建任务时创建子任务。子任务的数量取决于填写的自定义字段的数量。现在只有两个字段[14098,14099],但之后可以变得更多。吉拉 v.6.3.10

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

def constantManager = ComponentAccessor.getConstantsManager()
def issueManager = ComponentAccessor.getIssueManager()
def issueFactory = ComponentAccessor.getIssueFactory()
def subTaskManager = ComponentAccessor.getSubTaskManager()
def customFieldManager = ComponentAccessor.getCustomFieldManager()

def personFieldsIds = [14098,14099]

for (int personFieldsId:personFieldsIds){
def person = customFieldManager.getCustomFieldObject(personFieldsId)
def personValue = issue.getCustomFieldValue(person)
if (personValue){
MutableIssue newSubTask = issueFactory.getIssue()
newSubTask.setReporter(issue.reporter)
newSubTask.setAssignee(personValue?.getKey())
newSubTask.setSummary("Subtask for " + personValue?.getDisplayName())
newSubTask.setParentObject(issue)
newSubTask.setProjectObject(issue.getProjectObject())
newSubTask.setIssueTypeId(constantManager.getAllIssueTypeObjects().find{it.getName() == "Sub-task"}.id)
newSubTask.setDescription("Description for " + personValue?.getDisplayName())
Map<String,Object> newIssueParams = ["issue" : newSubTask] as Map<String,Object>
issueManager.createIssueObject(issue.reporter, newIssueParams)
subTaskManager.createSubTaskIssueLink(issue, newSubTask, issue.reporter)
}
}

错误日志:

2019-05-29 11:30:12,079 错误 [workflow.ScriptWorkflowFunction]: ********************************* ****************************************************** ** 2019-05-29 11:30:12,096 错误 [workflow.ScriptWorkflowFunction]:脚本函数在问题上失败:null,actionId:1,文件:groovy.lang.MissingPropertyException:没有这样的属性:类的 customFieldManager:Script8 的 Script8 .run(Script8.groovy:13)

脚本 错误

标签: groovyjira-rest-api

解决方案


不知何故,您的问题和图像中的代码不相等,错误也不合适。

但是,首先在您在图片中发布的代码中,您实际上没有属性/变量 customFieldManager。缺少获取 CustomFieldManager 的行。

然后该方法getCustomFieldObject需要一个 long 类型的值:https ://docs.atlassian.com/software/jira/docs/api/6.3.10/com/atlassian/jira/issue/CustomFieldManager.html#getCustomFieldObject(java.lang .Long) 因此,您可以将其更改为:

def person = customFieldManager.getCustomFieldObject(personFieldsId as Long)

或者

def personFieldsIds = [14098L, 14099L]

推荐阅读