Я создал очень простую задачу рабочего процесса для экземпляра YouTrack на основе облака. Идея состоит в том, чтобы предотвратить (остановить рабочий процесс) удаление проблем (мы бы предпочли сохранить все проблемы, даже если они были отправлены по ошибке). Код приведен ниже.
var entities = require('@jetbrains/youtrack-scripting-api/entities');
var workflow = require('@jetbrains/youtrack-scripting-api/workflow');
exports.rule = entities.Issue.onChange({
// TODO: give the rule a human-readable title
title: 'When-issue-is-deleted',
guard: function(ctx) {
return ctx.issue.becomesRemoved;
},
action: function(ctx) {
workflow.check(false, 'Do not remove issues, please');
}
});
Хотя я считаю, что это должно работать, когда я пытался удалить новую только что созданную проблему, я не получал сообщений об ошибках, и проблема была удалена.
Я бы рекомендовал более простой способ - просто отключите разрешение "Удалить проблему" для соответствующих ролей (https://www.jetbrains.com/help/youtrack/standalone/Create-and-Edit-Roles.html#editing_existing_roles) и пользователей с этими ролями не удастся удалить проблемы.
Что касается свойства isRemoved, которое не работает должным образом - это известная проблема, пожалуйста, следуйте этому билету, чтобы получать дополнительные обновления: https://youtrack.jetbrains.com/issue/JT-29303.