テーマ
チュートリアル:2者による並列承認
1 件の申請を 2 人が同時に確認し、2 人とも承認したら承認終了、1 人でも却下したら却下終了になるモデルを作成します。
画面を開く
「モデルを作成」から「空のモデルから作成」を選び、モデル名に「経費精算:2者並列承認」と入力してモデルを作成します。

手順
完成する流れ
text
開始 → 申請 ─提出→ 並列分岐 ┬→ 承認1 ─承認・却下─┐
└→ 承認2 ─承認・却下─┴→ 並列結合
├→ 終了(承認)
└→ 終了(却下)トークンの数え方
並列結合の遷移条件では、次の 3 つの値を使います。
| 変数 | 現行仕様で表す値 |
|---|---|
$token.childTokenLength | 対応する並列分岐から並列結合へ最大で到達するトークン数。このチュートリアルでは 2 です |
$token.approveCount | 「承認」エッジを通って、この並列結合へ到達したトークン数 |
$token.rejectCount | 「却下」エッジを通って、この並列結合へ到達したトークン数 |
並列結合は、いずれかの条件を満たした時点で自動的にその接続先へ進みます。全員承認は $token.approveCount >= $token.childTokenLength、1 人でも却下は $token.rejectCount > 0 とします。
ワークフロー定義を作成する
- 左パレットから「開始」「タスク」「並列分岐」、2 つの「タスク」、「並列結合」、2 つの「終了」を追加します。
- 各ノードを「開始」「申請」「並列分岐」「承認1」「承認2」「並列結合」「終了(承認)」「終了(却下)」と名付け、変更のたびに右インスペクターで「確定」します。
- 並列分岐を選び、「分岐方式」の「編集」を開きます。「全接続先へ分岐」を選び、「適用」してから「確定」します。
- 開始から申請へ「通常」、申請から並列分岐へ「提出」のエッジを接続します。
- 並列分岐から承認1、承認2へ、それぞれ「通常」のエッジを接続します。
- 承認1と承認2から並列結合へ、それぞれエッジを接続します。各エッジで「承認」と「却下」を選び、「確定」します。
- 並列結合から終了(承認)、終了(却下)へ、それぞれ「通常」のエッジを接続します。
並列結合の条件を設定する
- 並列結合を選びます。右インスペクターの「遷移条件」に、2 つの接続先が表示されます。
- 終了(承認)へ向かう条件の「編集」を選びます。
- 左辺に「承認数」
$token.approveCount、演算子に>=、右辺に「並列分岐数」$token.childTokenLengthを設定します。 - 「適用」を選びます。
- 終了(却下)へ向かう条件の「編集」を選びます。
- 左辺に「却下数」
$token.rejectCount、演算子に>、右辺に数値0を設定します。 - 「適用」を選び、右インスペクターで「確定」します。
並列結合には遷移条件が必要です。接続先だけを作り、条件を空のままにしないでください。
実行ポリシーを設定する
- 開始ノードと申請ノードには、チュートリアル:1段階の申請・承認 と同じ申請者向け条件を設定します。
- 承認1には 1 人目の承認者が持つロール、承認2には 2 人目の承認者が持つロールを指定します。
- 条件式の編集画面では「適用」、右インスペクターでは「確定」を選びます。
同じロールを両方の承認ノードへ設定すると、同じ利用者が 2 つの承認を実行できる場合があります。2 人による確認を保証する場合は、別のロールまたは利用者を条件に指定してください。
データと表示権限を設定する
- 「データスキーマ」で申請項目に加え、
approver1Commentとapprover2Commentを文字列として追加します。 - 「データアクセスポリシー」で、申請ノードは申請項目を「書き込み」にします。
- 承認1は申請内容を「読み込み」、
approver1Commentを「書き込み」にします。 - 承認2は申請内容を「読み込み」、
approver2Commentを「書き込み」にします。 - 終了ノードは、確認させる項目を「読み込み」にします。
保存して動作を確認する
- 画面下部の「保存する」を選び、続けて「公開する」を選びます。
- 申請者でプロセスを開始し、提出します。
- 1 人目だけが承認した時点では、
$token.approveCountは 1、$token.childTokenLengthは 2 なので、プロセスは承認2を待ちます。 - 2 人目も承認すると、
2 >= 2を満たし、終了(承認)へ進みます。 - 別のプロセスでどちらか 1 人が却下すると、
$token.rejectCount > 0を満たし、その時点で終了(却下)へ進むことも確認します。
うまくいかないとき
- 並列分岐後に片方へしか進まない場合は、「分岐方式」が「全接続先へ分岐」になっているか確認してください。
- 承認または却下しても並列結合へ集計されない場合は、各承認タスクからのエッジに「承認」と「却下」の両方が設定されているか確認してください。
- 2 人が承認しても完了しない場合は、承認側の式が
$token.approveCount >= $token.childTokenLengthになっているか確認してください。 - 1 人が却下しても終了しない場合は、却下側の式が
$token.rejectCount > 0になっているか確認してください。