私たちのプロセスを反映するために、youtrack で単純なステートマシン ワークフローを作成しました。3 つの State 値 (Submitted、In Progress、Fixed) を使用し、それらを順番に移動できます。
特定のロールの特定の状態変更を制限することは可能ですか? たとえば、レポーターの役割は、問題が発生した場合にのみ問題を作成し、「修正済み」から「進行中」に移行できるようにする必要があります。
私たちのプロセスを反映するために、youtrack で単純なステートマシン ワークフローを作成しました。3 つの State 値 (Submitted、In Progress、Fixed) を使用し、それらを順番に移動できます。
特定のロールの特定の状態変更を制限することは可能ですか? たとえば、レポーターの役割は、問題が発生した場合にのみ問題を作成し、「修正済み」から「進行中」に移行できるようにする必要があります。
更新: このタスクを実行するさらに良い方法は、Statemachine 内で次のことを行うことです。
initial state Submitted {
on Approve[always] do {
assert loggedInUser.hasRole("Project Admin"): "Only Project Admins can Approve tasks.";
} transit to Open
}
OLD ANSWER: 簡単な方法 (Statemachine 自体の内部):
initial state Submitted {
on Approve[loggedInUser.hasRole("Project Admin")] do {<define statements>} transit to Open
}
機能しますが、黙って失敗するため、ユーザーはなぜ機能しないのかわかりません。
はるかに優れたアプローチは、次のようになります (このためには、ステートレス ルールを作成する必要があります)。
when State.oldValue == {Submitted} && State.becomes({Open}) {
assert loggedInUser.hasRole("Project Admin"): "Only Project Admins can Approve tasks.";
}
この場合、指定したエラー メッセージが表示されます。
Statemachine の条件を削除することを忘れないでください。これは以前にチェックされており、アサーションがまったく実行されないため、エラー メッセージが表示されないためです。