如何防止在 Youtrack 工作流程中关闭打开的任务?
How to prevent open task to be closed in Youtrack workflow?
我们的任务有不同的状态,例如:打开、进行中、修复、测试、关闭。我们需要设计一个工作流来防止用户关闭打开的任务。
我浏览了文档,看到了这样的代码:
var user;
if (issue.Assignee == null) {
user = issue.project.leader;
} else {
user = issue.Assignee;
}
问题是上面的代码只是检查状态。我需要一种方法来阻止操作(例如关闭打开的任务)。我应该如何防止用户进行此类操作?如何查看他是否正在关闭任务?
在 the documentation 中提到了如何访问问题字段和问题自定义字段。但代码再次如下所示:
if (issue.State == Open) {
# what to do here how to check if he is closing the task?
}
如何查看他是否正在关闭任务?我应该怎么做才能告诉用户您不能关闭打开的任务?
- 请注意,无论是在无状态规则的 when 子句中还是在规则主体中,您都可以实现类似 State != null && !State.isResolved && (State.oldValue != null && State.oldValue.isResolved)
- 要防止问题被更改,请使用断言
经过大量使用代码后,我找到了解决方案:
rule check open state
when issue.State.becomes({Open}) {
assert issue.State.oldValue == {Submitted}: "Issue needs to be in Submitted state, to make it Open"
}
我必须使用 becomes
来检查用户是否正在打开任务,然后通过使用断言我将确保任务是否从 Submitted
状态更改为打开或没有。
我们的任务有不同的状态,例如:打开、进行中、修复、测试、关闭。我们需要设计一个工作流来防止用户关闭打开的任务。
我浏览了文档,看到了这样的代码:
var user;
if (issue.Assignee == null) {
user = issue.project.leader;
} else {
user = issue.Assignee;
}
问题是上面的代码只是检查状态。我需要一种方法来阻止操作(例如关闭打开的任务)。我应该如何防止用户进行此类操作?如何查看他是否正在关闭任务?
在 the documentation 中提到了如何访问问题字段和问题自定义字段。但代码再次如下所示:
if (issue.State == Open) {
# what to do here how to check if he is closing the task?
}
如何查看他是否正在关闭任务?我应该怎么做才能告诉用户您不能关闭打开的任务?
- 请注意,无论是在无状态规则的 when 子句中还是在规则主体中,您都可以实现类似 State != null && !State.isResolved && (State.oldValue != null && State.oldValue.isResolved)
- 要防止问题被更改,请使用断言
经过大量使用代码后,我找到了解决方案:
rule check open state
when issue.State.becomes({Open}) {
assert issue.State.oldValue == {Submitted}: "Issue needs to be in Submitted state, to make it Open"
}
我必须使用 becomes
来检查用户是否正在打开任务,然后通过使用断言我将确保任务是否从 Submitted
状态更改为打开或没有。