6.3.4. ノードタイプ - 決定

決定をモデリングするする方法は 2 つあり、 どちらの方法を選択するかはユーザーが判断します。 2 つの方法は次の通りです。
  1. 決定はプロセスにより行われ、プロセス定義に指定されます。
  2. 外部のエンティティが決定します。
プロセスが決定を行う場合、decision node が使用されます。2 つの方法の 1 つを決定基準として指定します。最も簡単な指定方法は、遷移へ condition 要素を追加することです (条件は EL 表現またはブール型変数を返す beanshell スクリプトです)。
ランタイム時に決定ノードは条件を指定した leaving transitions 上で最初にループします。これにより、xml で指定された順序でこれらの遷移が評価されます。条件が true に解決された最初の 遷移が取得されます。条件を持つすべての遷移が false に解決されると、デフォルトの遷移 (XML で最初の遷移) が取得されます。
他の方法は取得する遷移の名前を返す表現を使用することです。 expression 属性を使用して決定上で表現を指定します。 これは、 決定ノードの leaving transitions の 1 つへ解決する必要があります。
handler 要素を使用して、 決定ノードで指定できる DecisionHandler インターフェースの実装を指定できるため、 決定で handler 要素を使用することができます。 この場合、決定は Java クラスで計算され、 選択されたleaving transitionDecisionHandler 実装の decide メソッドによって返されます。
決定が外部パーティによって実行される場合、 statewait state を退場する複数の遷移を常に使用します。 退場遷移は、 wait state の終了後、 実行処理を再開させる外部トリガーに用意できます (例えば、Token.signal(String transitionName)TaskInstance.end(String transitionName) など)。