IM-BPM for Accel Platform IM-BPM チュートリアルガイド 第18版 2021-04-01

4.3.16.1. 包括ゲートウェイを使用する

このチュートリアルでは、包括ゲートウェイを使用して、プロセスの遷移先の選択や合流の定義方法を解説します。
排他ゲートウェイとの違いは、trueと評価されるシーケンスフローに対して1つの分岐先に決定せず、同時並行で次の処理に進めることが可能な点です。
包括ゲートウェイの詳細については、「IM-BPM プロセスデザイナ 操作ガイド」 - 「ゲートウェイ」 - 「包括ゲートウェイ」もあわせて参照してください。
プロセスを進めていく中で、「IM-FormaDesigner」を使用します。
チュートリアルを開始する前に「IM-FormaDesigner」で作成したアプリケーションをインポートしてください。
また、以下のサンプルユーザに対し、「IM-BPMユーザ」ロールの付与を行ってください。
「サイトマップ」→「共通マスタ」→「ユーザ」から以下のユーザを検索してください。
「ロール」タブ にて、「IM-BPMユーザ」ロールの追加を行ってください。
  • 「生田一哉」(ユーザコード:ikuta)
  • 「上田辰男」(ユーザコード:ueda)
  • 「萩本順子」(ユーザコード:hagimoto)

コラム

このチュートリアルで作成するプロセス定義のサンプルを以下のリンクからダウンロードできます。

このサンプルは「プロセス定義アップロード」機能でプロジェクトにアップロードできます。
アップロード手順は「IM-BPM プロセスデザイナ 操作ガイド」-「プロセス定義のアップロード」を参照してください。

コラム

「IM-FormaDesigner」で作成したアプリケーションのインポート方法は以下を参照してください。

4.3.16.1.1. プロセス定義を作成する

下記の図は、出張経費の承認申請に対し、該当するタスクへフローが分岐するプロセスです。
以下のそれぞれの条件に当てはまるフローへ進行します。
  • 出張経費に「外泊費」を含めて申請する
  • 出張経費に「新幹線の交通費」を含めて申請する
  • 上記二つが当てはまらない申請をする
「ユーザタスク」の処理画面は、インポートした「IM-FormaDesigner」のアプリケーションを使用します。
プロセス開始時の「申請画面」で選択した情報と、シーケンスフローに設定した条件で「包括ゲートウェイ」から分岐します。
条件に当てはまらない場合、包括ゲートウェイの「デフォルトフロー」の設定により、一番下のタスクへ進みます。
必要な承認結果が揃った後で、プロセスを開始したユーザが「確認画面」のタスクで確認します。
../../../../_images/inclusive_gateway_0001.png
図:完成イメージ
  1. 「開始イベント」 を設置します。

  2. プロセス開始時に表示する「申請画面」のアプリーケーション画面を設定します。
    申請したユーザを「確認画面」のタスクの担当者に設定するために、「イニシエータ」を設定しておきます。
    「開始イベント」の「メインコンフィグ」から、以下のとおりに項目を設定します。
    • イニシエータ : starter
    • フォームキー : forma:bus_trip_expenses_form
    ../../../../_images/inclusive_gateway_0002.png
    図: 「開始イベント」 - 「プロパティ」 - 「メインコンフィグ」
  3. プロセス全体に対する設定を行います。
    「開始イベント」ではない場所をクリックし、「プロパティ」をプロセス全体に切り替えます。
  4. 「プロセス」タブの「処理対象グループ」に「 im_bpm_manager 」を設定します。

    ../../../../_images/inclusive_gateway_0003.png
    図:プロセス全体 - 「プロパティ」 - 「プロセス」
  5. 承認結果の初期値を設定します。
    「データオブジェクト」タブから、「データプロパティ」の「追加」をクリックします。
    ../../../../_images/inclusive_gateway_0004.png
    図:プロセス全体 - 「プロパティ」- 「データオブジェクト」
  6. 「データプロパティ」ダイアログから、以下のとおりに3つデータプロパティを作成します。
    • 「外泊承認結果」
      • ID:stay_overnight_appr
      • 名前:stay_overnight_appr
      • 型: string
      • 値:1
    • 「新幹線使用承認結果」
      • ID:bullet_train_appr
      • 名前:bullet_train_appr
      • 型: string
      • 値:1
    • 「デフォルト承認結果」
      • ID:default_appr
      • 名前:default_appr
      • 型: string
      • 値:1
    ../../../../_images/inclusive_gateway_0005.png
    図:「データプロパティ」
  7. 「包括ゲートウェイ」を設置します。

    ../../../../_images/inclusive_gateway_0006.png
    図 : 「包括ゲートウェイ」
  8. 「外泊あり」の出張経費申請の承認を「生田」に対して依頼するタスクを作成します。
    「承認画面」の「ユーザタスク」を設置します。
  9. 「ユーザタスク」を選択し、「メインコンフィグ」タブで以下のとおりに項目を設定します。
    • 担当者 : ikuta
    • フォームキー : forma:bus_trip_expenses_approval
    ../../../../_images/inclusive_gateway_0007.png
    図 : 「ユーザタスク」 - 「プロパティ」- 「メインコンフィグ」
  10. 「承認画面」で選択された承認結果を「確認画面」で判定するため、「データオブジェクト」で用意した変数「stay_overnight_appr」を上書きします。
    「ユーザタスク」の「リスナ」タブから、「タスクリスナ」の追加をクリックします。
    ../../../../_images/inclusive_gateway_0008.png
    図 : 「ユーザタスク」 - 「プロパティ」- 「リスナ」
  11. 「タスクリスナ」ダイアログで、以下のとおりに項目を設定します。
    • イベント : complete
    • タイプ :
    • 式 : ${execution.setVariable('stay_overnight_appr', execution.getVariable('approval'))}
    ../../../../_images/inclusive_gateway_0009.png
    図 : 「タスクリスナ」
  12. 上記の「外泊あり」と同じ手順で、「新幹線を利用する」が選択された場合に「上田」に対して承認を依頼するタスクを作成します。
    「承認画面」の「ユーザタスク」を設置します。
  13. 「ユーザタスク」を選択し、「メインコンフィグ」タブで以下のとおりに項目を設定します。
    • 担当者 : ueda
    • フォームキー : forma:bus_trip_expenses_approval
    ../../../../_images/inclusive_gateway_0010.png
    図 : 「ユーザタスク」 - 「プロパティ」- 「メインコンフィグ」
  14. 「承認画面」で選択された評価結果を「確認画面」で判定するため、「データオブジェクト」で用意した変数「bullet_train_appr」に上書きします。
    「ユーザタスク」の「リスナ」タブから、「タスクリスナ」の「追加」をクリックします。
    ../../../../_images/inclusive_gateway_0011.png
    図 : 「ユーザタスク」 - 「プロパティ」- 「リスナ」
  15. 「タスクリスナ」ダイアログで、以下のとおりに項目を設定します。
    • イベント : complete
    • タイプ :
    • 式 : ${execution.setVariable('bullet_train_appr', execution.getVariable('approval'))}
    ../../../../_images/inclusive_gateway_0012.png
    図 : 「タスクリスナ」
  16. 「外泊あり」と「新幹線を利用する」が選択されなかった申請の場合、「萩本」に対して承認を依頼するタスクを配置します。
    「承認画面」の「ユーザタスク」を設置します。
  17. 「ユーザタスク」を選択し、「メインコンフィグ」タブで以下のとおりに項目を設定します。
    • 担当者 : hagimoto
    • フォームキー : forma:bus_trip_expenses_approval
    ../../../../_images/inclusive_gateway_0013.png
    図 : 「ユーザタスク」 - 「プロパティ」- 「メインコンフィグ」
  18. 「承認画面」で選択された評価結果を「確認画面」で判定するため、「データオブジェクト」で用意した変数「default_appr」を上書きします。
    「ユーザタスク」の「リスナ」タブから、「タスクリスナ」の「追加」をクリックします。
    ../../../../_images/inclusive_gateway_0014.png
    図 : 「ユーザタスク」 - 「プロパティ」- 「リスナ」
  19. 「タスクリスナ」ダイアログの項目を、以下のとおりに設定します。
    • イベント : complete
    • タイプ :
    • 式 :${execution.setVariable('default_appr', execution.getVariable('approval'))}
    ../../../../_images/inclusive_gateway_0015.png
    図 : 「タスクリスナ」
  20. 他の承認の判定を待つため「包括ゲートウェイ」を設置します。
    ../../../../_images/inclusive_gateway_0016.png
    図 : 「包括ゲートウェイ」
  21. 出張経費申請の結果を表示する「確認画面」のタスクを作成します。
    「ユーザタスク」を設置します。
  22. 開始イベントに設定した「イニシエータ」の値を使用し、申請者に対して「確認画面」を送信します。
    「ユーザタスク」を選択し、「プロパティ」の「メインコンフィグ」から以下のとおりに項目を設定します。
    • 担当者 : ${starter}
    • フォームキー : forma:bus_trip_expenses_confirm
    ../../../../_images/inclusive_gateway_0017.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」
  23. 終了イベントを設置します。

  24. 「申請画面」で選択された情報をもとに、フローを進める条件を設定します。
    「外泊あり」のタスクに繋がる「シーケンスフロー」を選択し、「メインコンフィグ」の「条件」に「${stay_overnight == '1'}」を設定します。
    ../../../../_images/inclusive_gateway_0018.png
    図 : 「シーケンスフロー」 - 「プロパティ」 - 「メインコンフィグ」
  25. 「新幹線を使用する」のタスクに繋がる「シーケンスフロー」を選択し、「メインコンフィグ」の「条件」に「${bullet_train == ’1’}」を設定します。

    ../../../../_images/inclusive_gateway_0019.png
    図 : 「シーケンスフロー」 - 「プロパティ」 - 「メインコンフィグ」
  26. 「外泊あり」と「新幹線を利用」が選択されなかった場合、「日帰り(新幹線を使用しない)」へ進行するよう設定します。
    「日帰り(新幹線を使用しない)」へ続くシーケンスフローをクリックし、「基本情報」タブからIDを確認します。
    ../../../../_images/inclusive_gateway_0020.png
    図 : 「シーケンスフロー」 - 「プロパティ」 - 「基本情報」
  27. 「包括ゲートウェイ」を選択し、「基本情報」の「デフォルトフロー」から、上記で確認したIDを選択します。

    ../../../../_images/inclusive_gateway_0021.png
    図 : 「包括ゲートウェイ」 - 「プロパティ」 - 「基本情報」

4.3.16.1.2. 結果を確認する

このチュートリアルで作成した「プロセス定義」を実行環境にデプロイし、実行結果の確認を行います。

4.3.16.1.2.1. デフォルトフローの結果を確認する

「包括ゲートウェイ」から、デフォルトフローへ進行する場合を確認します。

  1. 「サイトマップ」→「BPM」→「プロセス開始一覧」画面を表示します。

  2. プロセス開始一覧から、「startable_list-start_processes」アイコンをクリックします。

    ../../../../_images/inclusive_gateway_0022.png
    図 : 「プロセス開始一覧」
  3. 「IM-FormaDesigner」で作成したFormaアプリケーション、「申請画面」が表示されます。

  4. 今回は包括ゲートウェイの「デフォルトフロー」へ進行したいので、「外泊あり」と「新幹線を利用する」のチェックボックスは入れません。
    適当な値を入力し、「申請」ボタンをクリックします。
    ../../../../_images/inclusive_gateway_0023.png
    図 : 申請画面(IM-FormaDesigner)
  5. 「日帰り(新幹線を利用しない)」の申請を承認します。
    「日帰り(新幹線を利用しない)」の担当者である「萩本」でログインします。
  6. 「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
    個人タスクに振り分けられている「日帰り(新幹線を利用しない)」の「startable_list-start_processes」をクリックします。
    ../../../../_images/inclusive_gateway_0024.png
    図 : 「タスク一覧」 - 「個人タスク」
  7. 「IM-FormaDesigner」で作成したFormaアプリケーション、「承認画面」が表示されます。

  8. ラジオボタンの「承認する」を選択し、「送信」ボタンをクリックします。

    ../../../../_images/inclusive_gateway_0025.png
    図 : 承認画面(IM-FormaDesigner)
  9. 承認結果を確認します。
    プロセスを開始したユーザでログインします。
  10. 「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
    個人タスクに振り分けられている「確認画面」の「startable_list-start_processes」をクリックします。
    ../../../../_images/inclusive_gateway_0026.png
    図 : 「タスク一覧」 - 「個人タスク」
  11. 「IM-FormaDesigner」で作成したFormaアプリケーション、「確認画面」が表示されます。
    「萩本」の承認が下りたため、出張経費申請が承認されました。
    ../../../../_images/inclusive_gateway_0027.png
    図 : 確認画面(IM-FormaDesigner)
  12. デフォルトフローに進行した場合、ほかのタスクは処理されません。
    「外泊あり」の担当者である「生田」、「新幹線を利用する」の担当者である「上田」の個人タスク一覧に、依頼がないことを確認します。

4.3.16.1.2.2. 条件分岐による複数の承認・否認の結果を確認する

シーケンスフローの条件に該当し、「包括ゲートウェイ」から複数分岐する場合を確認します。

  1. 「サイトマップ」→「BPM」→「プロセス開始一覧」画面を表示します。

  2. プロセス開始一覧から、「startable_list-start_processes」アイコンをクリックします。

    ../../../../_images/inclusive_gateway_0028.png
    図 : 「プロセス開始一覧」
  3. 「IM-FormaDesigner」で作成したFormaアプリケーション、「申請画面」が表示されます。

  4. 適当な値を入力し、「申請」ボタンをクリックします。
    今回は「外泊あり」と「新幹線を利用する」を選択した状態で申請します。
    ../../../../_images/inclusive_gateway_0029.png
    図 : 申請画面(IM-FormaDesigner)
  5. 「外泊あり」の申請を否認します。
    「外泊あり」の承認依頼先である「生田」でログインします。
  6. 「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
  7. 個人タスクに振り分けられている「外泊あり」の「startable_list-start_processes」をクリックします。
    ../../../../_images/inclusive_gateway_0030.png
    図 : 「タスク一覧」 - 「個人タスク」
  8. 「IM-FormaDesigner」で作成したFormaアプリケーション、「承認画面」が表示されます。

  9. ラジオボタンの「否認する」を選択し、「送信」ボタンをクリックします。

    ../../../../_images/inclusive_gateway_0031.png
    図 : 承認画面(IM-FormaDesigner)
  10. 「新幹線を利用する」の申請を承認します。
    「新幹線を利用する」の承認依頼先である「上田」でログインします。
  11. 「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
  12. 個人タスクに振り分けられている「新幹線を使用する」の「startable_list-start_processes」をクリックします。
    ../../../../_images/inclusive_gateway_0032.png
    図 : 「タスク一覧」 - 「個人タスク」
  13. 「IM-FormaDesigner」で作成したFormaアプリケーション、「承認画面」が表示されます。

  14. ラジオボタンの「承認する」を選択し、「送信」ボタンをクリックします。

    ../../../../_images/inclusive_gateway_0033.png
    図 : 承認画面(IM-FormaDesigner)
  15. 承認結果を確認します。
    プロセスを開始したユーザでログインします。
  16. 「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
    個人タスクに振り分けられている「確認画面」の「startable_list-start_processes」をクリックします。
    ../../../../_images/inclusive_gateway_0034.png
    図 : 「タスク一覧」 - 「個人タスク」
  17. 「IM-FormaDesigner」で作成したFormaアプリケーション、「確認画面」が表示されます。
    「新幹線を利用する」タスクの担当者である「上田」は承認しましたが、「外泊あり」タスクの担当者である「生田」が否認したため、結果が否認になりました。
    ../../../../_images/inclusive_gateway_0035.png
    図 : 確認画面(IM-FormaDesigner)
  18. 他のシーケンスフローの条件に一致したため、「デフォルトフロー」である「日帰り(新幹線を利用しない)」のタスクは実行されません。
    「日帰り(新幹線を利用しない)」の担当者である「萩本」でログインし、個人タスク一覧に承認依頼のタスクがないことを確認します。