如何防止在Youtrack工作流程中关闭打开的任务?

时间:2016-04-30 12:19:51

标签: workflow youtrack

我们的任务中有不同的状态,如:开放,正在进行,已修复,已测试,已关闭。我们需要设计一个工作流程来阻止用户关闭已打开的任务。

我在文档中看到了这样的锯码:

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?
}

我该如何检查他是否正在完成任务?如何告诉用户您无法关闭打开的任务?

2 个答案:

答案 0 :(得分:1)

  1. 请注意,无论是在无状态规则的when子句中还是在规则体中,您都可以实现类似State!= null&&amp ;; !State.isResolved&& (State.oldValue!= null&& State.oldValue.isResolved)
  2. 要防止更改问题,请使用assert

答案 1 :(得分:0)

经过大量的代码处理后,我找到了解决方案:

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来检查用户是否正在打开任务,然后使用assert我会确保任务是否从Submitted状态更改为打开状态。