YouTrack 工作流程:防止删除
YouTrack Workflow: Prevent Deletion
我为基于云的 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) 的 'Delete issue' 权限,拥有这些角色的用户将无法删除问题。
至于无法正常工作的 becomesRemoved 属性 - 这是一个已知问题,请关注此票以接收有关它的进一步更新:https://youtrack.jetbrains.com/issue/JT-29303.
以防其他人偶然发现这个问题(引用 https://youtrack.jetbrains.com/issue/JT-55220)
To make your onChange rule triggered when an issue becomes removed, you'll need to specify the runOn
attribute in the rule's declaration.
runOn: {
change: false,
removal: true
}
我为基于云的 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) 的 'Delete issue' 权限,拥有这些角色的用户将无法删除问题。
至于无法正常工作的 becomesRemoved 属性 - 这是一个已知问题,请关注此票以接收有关它的进一步更新:https://youtrack.jetbrains.com/issue/JT-29303.
以防其他人偶然发现这个问题(引用 https://youtrack.jetbrains.com/issue/JT-55220)
To make your onChange rule triggered when an issue becomes removed, you'll need to specify the
runOn
attribute in the rule's declaration.
runOn: {
change: false,
removal: true
}