本記事ではワークフロー内でのフロー分岐について説明します。

分岐とは?

多くのワークフローでは、業務は1つの流れに沿って進んでいきます。

分岐を配置すれば流れるべき経路を複数設定でき、それによって複数の業務のアウトプットを想定しておくことができます。進むべき経路は、処理担当者による選択であったり、分岐以前の入力データによって決定されます。

分岐の配置によって複数の経路が設定されているワークフローでは、通常は分岐条件を満足する1つの経路にのみ進みます。複数の分岐条件を設定するなどして、2つ以上の経路に同時並行で業務(トークン*)を流すことも可能です。

*トークンとは、ワークフロー図上で業務の進捗を表すアイコンのことを言います

M203: 処理フロー途中に、同時並行処理、単一選択分岐、複数選択分岐を設定する

モデリング要素とゲートウェイアイコン

以下のアイコンはモデリング要素とそれぞれの挙動を表します

分岐ヒューマンタスクXOR ゲートウェイOR ゲートウェイAND ゲートウェイ
統合統合 XOR ゲートウェイ統合 OR ゲートウェイ統合 AND ゲートウェイ

トークンが分流しないケース

多くのプロセスではトークンは絶えず1つで、作業工程は1つずつ処理されていきます。

ヒューマンタスク
  • ヒューマンタスクから進展する矢印経路を、2つ以上接続することにより分岐を設定できます。プロパティ画面の[分岐]タブで、以下の2つの分岐方法を選べます。
    • ユーザが選択した遷移先に流す:複数の処理完了ボタンが準備されており、処理担当者がクリックしたボタンに応じて経路(処理の遷移先)が決定される
    • 最初に合致した条件の遷移先に流す:それぞれの経路に進むための入力データに応じた条件式を設定しておくことにより、処理完了時に条件に合致する経路が決定される
排他(XOR)ゲートウェイ
  • ヒューマンタスクの[最初に合致した条件の遷移先に流す]と同様に設定された条件に合致する経路が自動的に決定されますが、処理担当者が処理するべき工程は作成されません。

トークンが分流するケース

以下のモデリング要素ではトークンが複数に分流し、同一のプロセス内で複数の工程が並行で処理されるようになります。

並列(AND)ゲートウェイ
  • ゲートウェイアイコンから接続されている全ての経路にトークンを分割させて進めます。条件式の設定は必要ありません。
包含(OR)ゲートウェイ
  • 設定されている条件式を満たす経路にトークンが進みます。排他(XOR)ゲートウェイと異なり、条件を満たす経路全てにトークンが分流して進みます

フロー構造

トークンが分流するワ-クフローでは、分流後の経路として2つのパターンがあります。

分岐後に統合

分岐で複数に分かれた経路が、[統合ゲートウェイ]によって再びひとつの経路に統合される構造です。
トークンが分流しないケースでは、トークンはいずれかの経路を進み、[統合ゲートウェイ]以降はひとつの経路を進みます。一方で、トークンが分流するケースでは、[統合ゲートウェイ]で全てのトークンの到着を待ち合わせます。到着予定の全てのトークンが揃うと、先の経路へ進みます。[統合ゲートウェイ]は3タイプあり、分岐のタイプに合わせて対応するタイプのものを使用します。

並行したまま終了

分岐で複数に分かれた経路が、それぞれ別の終了イベントに到達する構造です。
トークンが分流しないケースでは、トークンが進んだ先の終了イベントに到達した時点でプロセスが終了します。一方で、トークンが分流するケースでは、全てのトークンがそれぞれの終了イベントに到達してはじめてプロセスが終了します。いずれかひとつのトークンが終了イベントに到達しただけでは、プロセスは終了しません。ただし、終了イベントとして[全終了イベント]が配置されている場合、他の経路上にトークンが残っていたとしても、[全終了イベント]にトークンが到達した時点でプロセスは終了します。

ループ構造

ワークフローの経路にループ形状を含み、同じ工程が繰り返される構造です。ループ構造のいずれかには分岐が含まれます。
トークンが分流しないケースでは、トークンの流れに従って同じ工程が複数回処理されます。トークンが分流するケース、すなわちループ構造の分岐に[並列(AND)ゲートウェイ]や[包含(OR)ゲートウェイ]を使用する場合は注意が必要です。分流されたトークンがさらに分流するような構造は、トークンが無限に増殖する可能性があるため禁止されており、定義エラーとなります。トークンが分流される場合は、個別にループを構成するか、統合した後に前の工程へ接続されるようループ構造となるように設定してください。

M204: 処理フロー途中に、ループ構造を設定する

分岐条件

条件式は[排他(XOR)ゲートウェイ]や[包含(OR)ゲートウェイ]のプロパティ画面、ヒューマンタスクではプロパティ画面の[分岐]タブにて設定します。いずれの画面でも鉛筆アイコンをクリックすると条件設定画面が開きます。ここで遷移先のノード、すなわち条件を満たせば後続の工程へ、そうでなければデフォルトフローへなどと選択します。

1つの条件設定において、複数の条件式を設定できます。条件式を追加するには画面下部の[+]をクリックします。条件式ではデータ項目を1つ指定しその入力値について条件を選択して指定します。例えば「右の値と等しい」と値、「右の値より大きい」と値、などを指定します。

経費申請のワークフローを例に上げると、「合計金額が10万円より大きい」という条件を満たした場合は上長のスイムレーンの「承認」工程へと進み、満たさない場合はデフォルトフローで総務部のスイムレーンに申請が流れる、といった設定ができます。

デフォルトフロー

条件設定では、最下部に削除することができないデフォルトフローが必ず設定されています。設定されている他の条件のいずれも満たさない場合にのみ、この遷移先へと進みます。
これは入力データが不十分であったりした場合でも、プロセスが先へと進めなくなってしまうようにならないためです。

デフォルトフローは、削除することはできませんが遷移先を変更できます。「他の条件が満たされない場合」のみと決まっているので、条件式設定は必要ありません。(デフォルトフローに流れない

AND 条件

一つの条件設定に複数の条件式を設定することにより、より複雑な条件設定が可能です。例えば「件名が入力されている」かつ「数値型データの値が1000以上」といった設定をすれば、両方の条件が満たされた場合のみ指定の遷移先へと進みます。

OR 条件

条件設定を追加し、複数の条件の遷移先が同じになるように設定することで OR条件を作成できます。この場合、いずれかの条件が満たされればトークンが指定された遷移先へと進みます。

以下の記事では、より具体的な設定方法が解説されています。
はじめての Questetra BPM Suite / Chpt.4: 条件により「分岐」させる

業務アプリでの例

1. XOR ゲートウェイとヒューマンタスク

以下、実際の業務を例に分岐の使用法を見ていきましょう。 下図の企画稟議承認のワークフローにおいて、「2.決裁する」工程では決裁者の選択肢としての「決裁する」と「差し戻す」という2つの分岐経路があります。

稟議フロー

このケースでは、どの分岐経路に進めるかは決裁者によって決められるので、分岐タイプは[ユーザが選択した遷移先に流す]に設定されています。また、[ボタンラベル]では先へと進む経路には「決裁する」、「申請者」のスイムレーンの「1x.差戻に対応する」へと戻す経路には「差し戻す」と設定されています。ここで設定された文言が「2.決裁する」工程の処理画面の処理完了ボタンに表示され、決裁者がどちらのボタンを押下げるかによって分岐の遷移先が決定されます。

同様の設定が「1x.差戻に対応する」工程にも見られます。分岐が「再提出する」「取り下げる」となっています。

決裁者が申請に対して承認決裁した場合、トークンは XOR ゲートウェイへと到達します。ここでデータ項目の入力値が評価され、設定されている条件に従って遷移先が自動的に決定されます。

スクリーンショットで XOR ゲートウェイ条件設定を見てみましょう。データ項目「外部支払」が参照され、入力値が1000000以上か、1000000より小さいかによって遷移先が決定されることが分かります。入力値が設定値(1000000)より大きい場合に、さらに役員による承認の工程へと進んでいきます。

通例として削除できないデフォルトフローがありますが、「外部支払」の値は、必ず 1000000以上/1000000より小さい、のいずれかの条件を満たすので、デフォルトフローが評価されることはありません。

2. AND ゲートウェイ

以下の外注契約のワークフローでは、1.の工程と2.の工程の間に AND ゲートウェイが見られます。

外注契約フロー

この AND ゲートウェイではトークンが分割され、それぞれ「2.委託契約書案を提示する」工程と「2.三年以内取引があるか確認する/必要に応じ与信設定を行う」工程へと進みます。すなわち、総務部と経理部の工程が並行して処理されていきます。両方の分岐経路上の工程の処理が完了すると、トークンは「プロマネ」スイムレーンにある[統合ゲートウェイ]にて再び結合されます。

上図のようにAND ゲートウェイの設定画面には条件がありません。接続されている全ての分岐経路にトークンが進められるためです。

3. OR ゲートウェイ

以下の例はSLA申請対応のワークフローです。「1.申請の確認」工程の後に OR ゲートウェイがあります。このゲートウェイには条件が設定されていて、さらにトークンが分割される場合もあります。

SLA申請対応フロー

下図のプロパティ画面でわかるように、トークンは必ず「2.ダウンタイム等の確認」工程に[無条件に遷移]します。しかし選択型データ項目「要一次回答」で「要」が選択されていれば、メッセージ送信中間イベント (メール)にもトークンが進みます。

このゲートウェイの条件設定では「2.ダウンタイム等の確認」へと無条件に遷移する条件式が、デフォルトフローとは別に設定されています。もし「2.ダウンタイム等の確認」へと遷移する設定がデフォルトフローのみであったとすると、他の設定条件が満たされたとき「2.ダウンタイム等の確認」へはトークンが到達しないことになります。このように条件設定を追加しておくことで、他の条件の合否にかかわらず必ず「2.ダウンタイム等の確認」へとトークンが進むようになります。

これらのサンプルアプリは、「ワークフローアプリ(業務テンプレート)」の一覧から参照できます。個別ページでは、業務アプリの定義ファイル(アプリアーカイブ)をダウンロードできますので、ご利用のワークフロー基盤にインポートしてご活用ください。

関連記事:
はじめての Questetra BPM Suite / Chpt.4: 条件により「分岐」させる
こんなワークフローはイヤだ「順番にしか処理できない」

%d人のブロガーが「いいね」をつけました。