2

私たちのプロセスを反映するために、youtrack で単純なステートマシン ワークフローを作成しました。3 つの State 値 (Submitted、In Progress、Fixed) を使用し、それらを順番に移動できます。

特定のロールの特定の状態変更を制限することは可能ですか? たとえば、レポーターの役割は、問題が発生した場合にのみ問題を作成し、「修正済み」から「進行中」に移行できるようにする必要があります。

4

2 に答える 2

3

更新: このタスクを実行するさらに良い方法は、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 の条件を削除することを忘れないでください。これは以前にチェックされており、アサーションがまったく実行されないため、エラー メッセージが表示されないためです。

于 2015-04-25T09:17:38.820 に答える