Исключение при проверке, становится ли поле проблемы «Выполняется» с рабочим процессом - PullRequest
1 голос
/ 01 апреля 2019

В моих полях выпуска есть State и опция с именем In Progress

enter image description here

Итак, я написал рабочий процесс Youtrack, который запускает сообщение 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)

Он сообщает мне Cannot read property "InProgress", но на самом деле return ctx.issue.fields.becomes(ctx.State, ctx.State.InProgress); значение InProgress было предложено встроенным редактором Youtrack Workflow.

Кто-нибудь может сказать мне, как я могу получить доступ к реальному значению "In Progress", чтобы этот код работал?

EDIT

попробовал это return ctx.issue.fields.becomes(ctx.State.name, "In Progress");

все же дал мне исключение

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)

1 Ответ

2 голосов
/ 04 апреля 2019

Если вы хотите использовать синтаксис ctx.issue.fields.becomes(ctx.State, ctx.State.InProgress), добавьте определение для состояния 'Выполняется' в раздел требования :

requirements: {
    State: {
        type: entities.State.fieldType,
        InProgress: {
            name: 'In Progress'
        }
    }
}   

Либо, чтобы избежать ошибки Cannot read property "name" from undefined, проверьте в поле «Состояние» пустые значения:

return ctx.issue.fields.State && ctx.issue.fields.becomes(ctx.State.name, "In Progress");

Надеюсь, это будет полезно.

...