Изменение сроков по задачам при изменении состояния задачи
Нужно изменять сроки по задаче при изменении статуса.
Вот код:
const entities = require('@jetbrains/youtrack-scripting-api/entities');
const workflow = require('@jetbrains/youtrack-scripting-api/workflow');
exports.rule = entities.Issue.onChange({
// TODO: give the rule a human-readable title
title: 'Установить срок на исполнение задачи в зависимости отсостояния',
guard: (ctx) => {
var fs = ctx.issue.fields;
return fs.becomes(ctx.State,ctx.State.BeAgreement,ctx.State.BeSogl, ctx.State.BeInfo);
},
action: (ctx) => {
const issue = ctx.issue;
const dateTime = require('@jetbrains/youtrack-scripting-api/date-time');
//console.log('текущий руководитель: ',issue.fields['Руководитель инициатора']);
// console.log('State: ',ctx.State.BeAgreement.name, ctx.State.BeAgreement);
// console.log('State1: ',ctx.State.BeSogl.name, ctx.State.BeSogl);
// console.log('State2: ',ctx.State.BeInfo.name, ctx.State.BeInfo);
console.log('State3: ',ctx.State);
console.log('Дата окончания', dateTime.format(issue.fields["Планируемая дата окончания"]), 'dd MM yyyy');
if (ctx.State.BeAgreement.name=="In Progress"){
issue.fields['Планируемая дата окончания']=issue.fields["Планируемая дата окончания"]+86400000*5;
console.log('Дата окончания+', dateTime.format(issue.fields["Планируемая дата окончания"]), 'dd MM yyyy');
} else if(ctx.State.BeSogl.name){
issue.fields['Планируемая дата окончания']=issue.fields["Планируемая дата окончания"]+86400000*2;
console.log('Дата окончания++', dateTime.format(issue.fields["Планируемая дата окончания"]), 'dd MM yyyy');
} else if(ctx.State.BeInfo.name=="Запрос информации"){
issue.fields['Планируемая дата окончания']=issue.fields["Планируемая дата окончания"]+86400000*3;
console.log('Дата окончания+++', dateTime.format(issue.fields["Планируемая дата окончания"]), 'dd MM yyyy');
}
},
requirements: {
// TODO: add requirements
State: {
type: entities.State.fieldType,
name:"Состояние",
BeAgreement: {
name: "In Progress"
},
BeSogl: {
name: "Согласование"
},
BeInfo:{
name:"Запрос информации"
}
}
}
});
При его исполнении, срабатывает только при установке состояния "In Progress". При остальных состояниях ничего не происходит.
Please sign in to leave a comment.
Здравствуйте.
Для начала стоит заменить guard на
Дальше уже смотреть по логированию в консоли редактора рабочего процесса (не браузера).
Спасибо, помогло.
Остаться ещё один вопрос:
Как присвоить полю с Типом дата, текущую дату?
Когда пытаюсь присвоить значение с помощью функции Date, выдаётся ошибка (исключение в правиле)
Спасибо за ответ.
Такой подход должен работать:
Само поле желательно также добавить в requirements block.
Если у вас не работает так, то нужно смотреть ошибку в консоле, как я указывал в изначальном комментарии.