我正在尝试构建一个如下所述的监听器:
字段 A:问题类型 X 上存在自定义多问题选择器 字段 B:问题类型 Y
上存在自定义多问题选择器如果我的钥匙有两个问题:
x-111 :来自问题类型 X 的问题 y-111 :来自问题类型 Y
的问题当我在 x-111 的字段 A 上选择问题 y-111 我想添加到字段 B x-111 的 y-111 如果我删除其中一个,它也会在另一个问题上更新。
我开始开发脚本,但出于任何技术原因我无法使用 updateIssue 或 ModifiedValue
这里是我的代码中的相关行:
def selectedIssues2 = selectedIssues + ", " + issue.getKey()
CustomField targetField2 = customFieldManager.getCustomFieldObject("customfield_14434")
MutableIssue issueToUpdate = currentIssue as MutableIssue;
//issueToUpdate.setCustomFieldValue(targetField2,selectedIssues2)
//issueManager.updateIssue(用户,issueToUpdate,EventDispatchOption.ISSUE_UPDATED,false)
targetField2.updateValue(null, currentIssue, new ModifiedValue(currentIssue.getCustomFieldValue(targetField2),selectedIssues2), changeHolder)
================================================= ================================================
我现在得到的错误:
2023-04-16 13:19:04,034 错误 [runner.AbstractScriptListener]:************************************ ****************************************************** *** 2023-04-16 13:19:04,034 错误 [runner.AbstractScriptListener]:事件脚本函数失败:com.atlassian.jira.event.issue.IssueEvent,文件:null java.lang.ClassCastException: java.lang.String 无法转换为 java.util.Collection 在 com.onresolve.scriptrunner.canned.jira.fields.editable.AbstractTrackedMultiCFType.updateValue(AbstractTrackedMultiCFType.groovy) 在 com.atlassian.jira.issue.fields.ImmutableCustomField.updateValue(ImmutableCustomField.java:426) 在 com.atlassian.jira.issue.fields.ImmutableCustomField.updateValue(ImmutableCustomField.java:396) 在 com.atlassian.jira.issue.fields.OrderableField$updateValue.call(未知来源) 在 com.atlassian.jira.issue.fields.OrderableField$updateValue.call(未知来源) 在 com.onresolve.scriptrunner.runner.field.IssueParametersCapturingImmutableCustomField.updateValue(IssueParametersCapturingImmutableCustomField.groovy:35) 在 com.atlassian.jira.issue.fields.OrderableField$updateValue$21.call(未知来源) 在 Script1222.run(Script1222.groovy:152)
谢谢
如错误所述,问题在于尝试使用 String 而不是 Collection 更新自定义字段。阅读这部分:
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Collection
我不确定
selectedIssues2
中到底是什么,也不确定自定义字段customfield_14434
的确切CustomFieldType是什么。因此,接下来的部分假设 selectedIssues2
已经拥有一个问题列表和 customfield_14434
的自定义字段类型,它需要一个问题集合。
要完成您的需要,您需要使用一系列问题更新自定义字段。所以,你可以这样尝试:
def selectedIssues2 = selectedIssues + issue
CustomField targetField2 = customFieldManager.getCustomFieldObject("customfield_14434")
MutableIssue issueToUpdate = currentIssue as MutableIssue;
//issueToUpdate.setCustomFieldValue(targetField2,selectedIssues2)
//issueManager.updateIssue(user, issueToUpdate, EventDispatchOption.ISSUE_UPDATED, false)
targetField2.updateValue(null, currentIssue, new ModifiedValue(currentIssue.getCustomFieldValue(targetField2), selectedIssues2), changeHolder)
虽然最重要的部分是,变量
selectedIssues2
持有问题的集合,例如。一个 ArrayList 对象。