Javascript 检查问题字段是否变为“时出现异常”;“进行中”;使用工作流
我的问题字段有一个Javascript 检查问题字段是否变为“时出现异常”;“进行中”;使用工作流,javascript,workflow,youtrack,youtrack-api,Javascript,Workflow,Youtrack,Youtrack Api,我的问题字段有一个状态和一个名为进行中 因此,我编写了一个Youtrack工作流,当问题“正在进行”时,它会向我的discord频道发送一条http帖子 下面是用于此目的的JavaScript代码: var entities = require('@jetbrains/youtrack-scripting-api/entities'); var http = require('@jetbrains/youtrack-scripting-api/http'); exports.rule =
状态
和一个名为进行中
因此,我编写了一个Youtrack工作流,当问题“正在进行”时,它会向我的discord频道发送一条http帖子
下面是用于此目的的JavaScript代码:
var entities = require('@jetbrains/youtrack-scripting-api/entities');
var http = require('@jetbrains/youtrack-scripting-api/http');
exports.rule = entities.Issue.onChange({
// TODO: give the rule a human-readable title
title: 'Open-discord-channel',
guard: function(ctx) {
return ctx.issue.fields.becomes(ctx.State, ctx.State.InProgress);
},
action: function(ctx) {
var issue = ctx.issue;
var connection = new http.Connection('https://discordapp.com');
connection.addHeader('Content-Type', 'application/json');
var response = connection.postSync('/api/webhooks/123/1DJucC8-vdZR-xxx', [], issue.description);
if (response && response.code === 200) {
issue.addComment(response.response);
}
// TODO: specify what to do when a change is applied to an issue
},
requirements: {
// TODO: add requirements
}
});
激活此工作流时会引发此异常:
TypeError: Cannot read property "InProgress" from undefined (open-discord-channel/open-discord-channel#16)
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4198)
org.mozilla.javascript.gen.open_discord_channel_open_discord_channel_2052._c_anonymous_1(open-discord-channel/open-discord-channel:16)
它告诉我无法读取属性“InProgress”
但实际上返回ctx.issue.fields.been(ctx.State,ctx.State.InProgress)代码>程序中的值由嵌入式Youtrack工作流编辑器建议
有人能告诉我如何访问真正的“进行中”值以使代码运行吗
编辑
试过这个
返回ctx.issue.fields.been(ctx.State.name,“进行中”)代码>
还是给了我一个例外
Processing issue COOPR-85:
TypeError: Cannot read property "name" from undefined (open-discord-channel/open-discord-channel#16)
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4198)
org.mozilla.javascript.gen.open_discord_channel_open_discord_channel_2076._c_anonymous_1(open-discord-channel/open-discord-channel:16)
如果要使用ctx.issue.fields.been(ctx.State,ctx.State.InProgress)
语法,请在“需求”部分添加“进行中”状态的定义:
要求:{
声明:{
类型:entities.State.fieldType,
正在进行:{
名称:“正在进行”
}
}
}
或者,为了避免无法从未定义的中读取属性“name”错误,请检查状态字段中的空值:
返回ctx.issue.fields.State&&ctx.issue.fields.been(ctx.State.name,“进行中”);
我希望这会有帮助 谢谢你,到目前为止,我在上一次尝试中才发现。我很难理解这些要求。官方文档还不够清楚,为什么我想使用的每个领域都需要它们。不客气!我相信这篇文章也会有所帮助。