WorkFlow изменения кастомного поля String

Answered

Доброго времени суток!

 

Впервые столкнулся с Вашей системой и сейчас пытаюсь научиться разрабатывать в ней WorkFlow.

Имеется банальнейший скриптик, который должен при изменении инцидента поменять значение кастом поля(String).

Версия YT Standalone развернута прямо на локальном ПК. 

 

 

3 comments
Comment actions Permalink
Official comment

Метод `ctx.issue.isChanged` принимает в качестве аргумента имя свойства, которое изменено (например, `ctx.issue.isChanged('project')`. Поскольку в целом правила типа 'on-change' срабатывают на любое изменение задачи, в Вашем примере `guard` можно опустить или просто заменить тело функции на `return true;`.

Comment actions Permalink

Мария, 

 

Так и не смог до конца разобраться в этом методе. Какого то структурированного описания методов свойств и т.п. не нашел. На данный момент есть такой скрипт который тоже кидает ошибку. 

 var entities = require('@jetbrains/youtrack-scripting-api/entities');
//var days = require("./time-date").days;
var hours = require("./time-date").hours;

exports.rule = entities.Issue.onChange({
title: 'Test',
guard: function(ctx) {
var issue = ctx.issue;
return issue.isChanged(ctx.Priority);

},
action: function(ctx) {
var issue = ctx.issue;
var CritTime = ctx.dateTimeType;
CritTime = Date.now() + hours(5);
if (issue.fields.Priority == ctx.Project.Issue.Priority.Crit)
{issue.fields.DueDate = CritTime;}


},
requirements: {
DueDate: {
type: entities.ield.dateTimeType
},
Priority: {
type: entities.EnumField.fieldType

}
}
});

 

 

поля Enum Priority были переименованы.

 

 

0
Comment actions Permalink

Вы можете найти полное описание АПИ тут: https://www.jetbrains.com/help/youtrack/incloud/YouTrack-Api-Documentation.html

В случае данного скрипта необходимо внести несколько изменений:

1) `issue.isChanged(ctx.Priority) -> issue.fields.isChanged(ctx.Priority)`;

2) `var CritTime = ctx.dateTimeType;` - не требуется; даты в YT хранятся в мс, то есть это просто число, его не требуется ничем инициализировать.

3) `issue.fields.Priority == ctx.Project.Issue.Priority.Crit)` - проверка равенства значения поля чему-то требует сравнения примитивных свойств, таких как name или login (у пользователя); кроме того, значение, с которым идёт сравнение, должно быть в секции requirements:

`issue.fields.Priority.name === ctx.Priority.Crit.name` и

`Priority: {

  type: entities.EnumField.fieldType,

  Crit: {}

}`

4) В requirement для даты опечатка, `entities.Field.dateTimeType`.

0

Please sign in to leave a comment.