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

4.3.9.1. イベントサブプロセスを利用して実行中のプロセスを変更する

このチュートリアルでは、イベントサブプロセスを使用して実行中のプロセスを変更する方法を解説します。

イベントサブプロセスはイベントを受信した場合にのみ実行され、実行中のアクティビティは終了します。
今回のチュートリアルではその機能を利用して、業務内容の変更に対応できるプロセス定義を作成します。

イベントサブプロセスの詳細については、「IM-BPM プロセスデザイナ 操作ガイド」 - 「コンテナ」 - 「イベントサブプロセス」もあわせて参照してください。
../../../../_images/event_sub_process_0001.png
図 : 概要図

プロセスを進めていく中で、「IM-LogicDesigner」のロジックフローと「IM-FormaDesigner for Accel Platform」で作成したFormaアプリケーションを使用します。
チュートリアルを開始する前に以下の資材をインポートしてください。

コラム

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

コラム

各種インポート方法については、以下のリンクを参照してください。

コラム

このチュートリアルのサンプルでは、同一ファイル内に「メッセージを送信するプロセス定義」と「メッセージを受信するプロセス定義」が定義されていますが、それぞれファイルを分けて定義することも可能です。

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

下記の図は、メッセージを受信することによって実行中のプロセスを変更するプロセス定義です。
「通常のプロセス」を開始しても、「通常のプロセスを終了させるプロセス」を開始することで、「メッセージを受信した場合のプロセス」に移行できます。
業務の処理画面は、インポートした「IM-FormaDesigner」のアプリケーションを使用します。
  • メインの業務プロセス

    1. ユーザタスクを処理する通常のプロセス
    2. メッセージを受信することで通常のプロセスを終了し、通常とは異なるユーザタスクを処理するイベントサブプロセス
  • イベントサブプロセスを起動するプロセス

    1. 中止したい「プロセスインスタンスID」をFormaアプリケーションから入力し、「IM-LogicDesignerタスク」を使用してメッセージを送信するプロセス
../../../../_images/event_sub_process_0002.png
図 : 完成イメージ

  1. 「メインの業務プロセス」を作成します。
    「プール」を設置します。
  2. 「通常のプロセス」を作成します。
    「開始イベント」を設置します。
  3. 通常のプロセスで処理をする「ユーザタスク」を設置します。
  4. 「ユーザタスク」の処理対象ユーザを設定します。
    「メインコンフィグ」タブから、「ユーザタスク」の処理対象ユーザを「aoyagi」にします。
    ../../../../_images/event_sub_process_0003.png
    図: 「メインの業務プロセス」 - 「通常のプロセス」 - 「プロパティ」 - 「メインコンフィグ」

  5. 終了イベントを設置します。
  6. 「メインの業務プロセス」に「メッセージを受信した場合のプロセス」レーンを追加します。
    「通常のプロセス」レーンをクリックした状態でポップアップされる「add_lane」をクリックしてください。
    ../../../../_images/event_sub_process_0004.png
    図: 「メインの業務プロセス」 - 「通常のプロセス」

  7. 新しく作成されたレーンに「イベントサブプロセス」を設置します。
  8. 「イベントサブプロセス」を実行する「メッセージ開始イベント」を設置します。
  9. 「メッセージ開始イベント」に対して送信する「メッセージ」を設定します。
    エレメントが設置されていないキャンパスの空白部分をクリックし、「プロパティ」をプロセス全体に切り替えます。
    「メッセージ&シグナル」タブの「メッセージ」の「追加」リンクをクリックします。
    ../../../../_images/event_sub_process_0005.png
    図: プロセス全体 - 「プロパティ」 - 「メッセージ&シグナル」

  10. 「メッセージ」ダイアログから以下のように登録してください。
    • ID : message
    • 名前 : message
    ../../../../_images/event_sub_process_0006.png
    図: 「メッセージ」

  11. プロセス全体に登録した「メッセージ」を「メッセージ開始イベント」に紐づけます。
    「メッセージ開始イベント」をクリックし、「メインコンフィグ」タブの「参照メッセージ」から行います。
    ドロップダウンリストで「 message(ID:message) 」を選択します。
    ../../../../_images/event_sub_process_0007.png
    図: 「メインの業務プロセス」 - 「メッセージを受信した場合のプロセス」 - 「イベントサブプロセス」 - 「メッセージ開始イベント」 - 「プロパティ」 - 「メインコンフィグ」

  12. メッセージを受信した場合に処理するユーザタスク「通常とは異なるタスク」を設置します。
  13. 処理対象ユーザと、表示するFormaアプリケーションを設定をします。
    ユーザタスクをクリックし、「メインコンフィグ」タブから以下のように項目を設定してください。
    • 処理対象ユーザ : aoyagi
    • フォームキー : forma:event_sub_process_usage
    ../../../../_images/event_sub_process_0008.png
    図: 「メインの業務プロセス」 - 「メッセージを受信した場合のプロセス」 - 「イベントサブプロセス」 - 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」

  14. 表示するFormaアプリケーションを「プロセスを中断しました」に切り替える値を設定します。
    ユーザタスクをクリックし、「リスナ」タブから「タスクリスナ」の「追加」ボタンをクリックします。
    ../../../../_images/event_sub_process_0009.png
    図: 「メインの業務プロセス」 - 「メッセージを受信した場合のプロセス」 - 「イベントサブプロセス」 - 「ユーザタスク」 - 「プロパティ」 - 「リスナ」

  15. 「タスクリスナ」ダイアログから、以下のように項目を設定してください。
    • 処理対象ユーザ : create

    • タイプ :

    • 式 : ${task.setVariableLocal('terminated','1')}

      ../../../../_images/event_sub_process_0010.png
    図: 「タスクリスナ」

  16. 「終了イベント」を設置します。
  17. 「通常のプロセスを終了させるプロセス」を作成します。
    「メインの業務プロセス」とは別の場所に、プールを設置します。
  18. 「通常のプロセスを終了させるプロセス」の処理対象ユーザを設定します。
    「プロセス」タブから、処理対象ユーザに「aoyagi」を設定します。
    ../../../../_images/event_sub_process_0011.png
    図: 「通常のプロセスを終了させるプロセス」 - 「プロパティ」 - 「プロセス」

  19. 「通常のプロセスを終了させるプロセス」の開始イベントを設置します。
  20. 「通常のプロセスを終了させるプロセス」を開始した際に表示するFormaアプリケーションを設定します。
    開始イベントをクリックし、「メインコンフィグ」タブから「フォームキー」に「forma:event_sub_process_usage」と設定します。
    ../../../../_images/event_sub_process_0012.png
    図 : 「通常のプロセスを終了させるプロセス」 - 「メッセージを送信するプロセス」 - 「開始イベント」 - 「プロパティ」 - 「メインコンフィグ」

  21. 「メッセージ開始イベント」に対してメッセージを送信する「IM-LogicDesignerタスク」を設置します。
  22. 実行するロジックフローの設定をします。
    「メインコンフィグ」タブから、項目を以下のように設定します。
    • フローID : logic_designer-event_sub_process_usage

    • 利用するバージョン : 最新バージョンを利用

      ../../../../_images/event_sub_process_0013.png
    図: 「通常のプロセスを中止させるプロセス」 - 「メッセージを送信するプロセス」 - 「IM-LogicDesignerタスク」 - 「プロパティ」 - 「メインコンフィグ」

  23. 「IM-LogicDesigner」に対する「入力データ」を設定します。
    入力データの「追加」リンクをクリックします。
    ../../../../_images/event_sub_process_0014.png
    図: 「通常のプロセスを中止させるプロセス」 - 「メッセージを送信するプロセス」 - 「IM-LogicDesignerタスク」 - 「プロパティ」 - 「メインコンフィグ」

  24. 「入力データ」ダイアログから、3つのデータを登録します
    以下のように項目を設定してください。
    • execution_id
      名前 : execution_id
      値 : ${execution_id}
    • message
      名前 : message
      値 : message
    • terminate_reason
      名前 : terminate_reason
      値 : ${terminate_reason}
      ../../../../_images/event_sub_process_0015.png
      図: 「入力データ」

  25. 「終了イベント」を設置します。

4.3.9.1.2. IM-LogicDesignerのロジックフローを確認する

チュートリアル開始前にインポートしたIM-LogicDesignerのロジックフローを確認します。
上記BPMの「IM-LogicDesignerタスク」が実行されることで、メッセージを送信します。
../../../../_images/event_sub_process_0016.png
完成イメージ(IM-LogicDesigner)
  1. チュートリアル開始前にインポートしたロジックフローを確認します。
    「サイトマップ」→「IM-LogicDesigner」→「フロー定義一覧」→「ロジックフロー定義一覧」画面を表示します。
  2. 左ペインのツリーから「BPMチュートリアル」カテゴリの開閉アイコンをクリックしカテゴリ配下を情報を表示します。
    フロー定義「メッセージを送信してイベントサブプロセスを起動する」を選択し「編集」をクリックし、「ロジックフロー定義編集」画面を開きます。
    ../../../../_images/event_sub_process_0017.png
    図 : 「ロジックフロー定義一覧」
  3. プロセス定義から渡ってくる入力データに対する設定を確認します。
    メニューバーの「入出力設定」をクリックし、「入出力設定」ダイアログを表示します。
    ../../../../_images/event_sub_process_0018.png
    図: 「ロジックフロー定義編集」
  4. 「入出力設定」ダイアログで、「入力」に以下のように設定されていることを確認します。
    • execution_id<string>

    • message<string>

    • terminate_reason<string>

      ../../../../_images/event_sub_process_0019.png
    図 : 「入出力設定」
  5. 「メッセージ送信」タスクのマッピングを確認します。
    「メッセージ送信」タスクを選択し、基本設定の「マッピング設定」から「マッピング設定」ダイアログを表示します。
    ../../../../_images/event_sub_process_0020.png
    図 : 「ロジックフロー定義編集」 - 「メッセージ送信」
  6. 「マッピング設定」ダイアログで、左右で以下の値が登録・マッピングされていることを確認します。
    入力(始点) 出力(終点)
    入力<Object> - execution_id<string>
    im_bpmMessage1<object> - executionId<string>
    入力<Object> - message<string>
    im_bpmMessage1<object> - message<string>
    入力<Object> - terminate_reason<string>
    im_bpmMessage1<object> - variables<map> - terminated_reason<any>
    ../../../../_images/event_sub_process_0021.png
    図 : 「マッピング設定」

4.3.9.1.3. 実行結果を確認する

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

  1. 「サイトマップ」→「BPM」→「プロセス開始一覧」画面を表示します。
  2. プロセス開始一覧から、「メイン業務のプロセス」の「startable_list-start_processes」アイコンをクリックします。
    ../../../../_images/event_sub_process_0022.png
    図 : 「プロセス開始一覧」
  3. 実行したプロセスの状態と、プロセスインスタンスIDを確認します。
    画面左上の「タスク一覧」をクリックしてください。
    ../../../../_images/event_sub_process_0023.png
    図 : 「プロセス開始一覧」

    注意

    「プロセス参照」画面は、「2018 Winter(Urara)」以降のバージョンで参照できます。
    それ以前のバージョンの場合、「IM-BPM管理者」のロールをもつユーザでログインし、「サイトマップ」→「BPM」→「タスク管理」画面から「プロセス詳細」を表示することで確認できます。
  4. 「タスク一覧」画面から、下記の条件を満たすタスクの「icon_reference」ボタンをクリックし、「プロセス参照」画面を表示します。
    • プロセス定義名 : メインの業務プロセス

    • タスク名 : 通常のタスク

      ../../../../_images/event_sub_process_0024.png
    図 : 「タスク一覧」
  5. 「プロセス参照」画面から、実行中のタスクが「通常のタスク」であることを確認し、プロセスインスタンスIDを控えます。
    ../../../../_images/event_sub_process_0025.png
    図 : 「プロセス参照」
  6. 実行中のプロセスインスタンスを「通常のタスク」から、「通常とは異なるタスク」へ進行させます。
    「プロセス開始一覧」画面へ戻り、「通常のプロセスを中止させるプロセス」の「startable_list-start_processes」ボタンをクリックします。
    ../../../../_images/event_sub_process_0026.png
    図 : 「プロセス開始一覧」
  7. Formaアプリケーション「中断するプロセスインスタンスを指定する」が表示されます。
    先ほど控えたプロセスインスタンスIDと任意の理由を記入し、「中断」ボタンをクリックします。
    ../../../../_images/event_sub_process_0027.png
    図 : 中断するプロセスインスタンスを指定する(IM-FormaDesigner)
  8. タスクの進行状態を確認します。
    「タスク一覧」画面から、下記の状態になっているタスクの「icon_reference」ボタンをクリックします。
    • プロセス定義名 : メインの業務プロセス

    • タスク名 : 通常とは異なるタスク

      ../../../../_images/event_sub_process_0028.png
    図 : 「タスク一覧」
  9. プロセス図で、イベントサブプロセスの「通常とは異なるタスク」に進行していることを確認します。
    また、Formaアプリケーションで指定したプロセスインスタンスと同一のIDであることを確認します。
    ../../../../_images/event_sub_process_0029.png
    図 : 「プロセス参照」
  10. 「メインの業務プロセス」を完了させます。
    「タスク一覧」画面の「グループタスク」に振り分けられているタスクを、「icon_assign」ボタンをクリックします。
    ../../../../_images/event_sub_process_0030.png
    図 : 「タスク一覧」
  11. 「個人タスク」に振り分けられたことを確認し、「startable_list-start_processes」ボタンをクリックします。
    ../../../../_images/event_sub_process_0031.png
    図 : 「プロセス詳細」
  12. Formaアプリケーション「プロセスを中断しました」が表示されるので、「確認ボタン」をクリックすることでタスクが完了します。
    ../../../../_images/event_sub_process_0032.png
    図 : プロセスを中断しました(IM-FormaDesigner)
  13. 「プロセス一覧」画面から、検索条件の「ステータス」を「すべて表示する」に指定し、対象のプロセスを検索します。
    対象の「メインの業務プロセス」の「icon_reference」ボタンをクリックし、「プロセス詳細」画面を開きます。
    ../../../../_images/event_sub_process_0033.png
    図 : 「プロセス詳細」

  14. 「プロセス詳細」画面から、「プロセス図とタイムラインを拡大表示」をクリックしてください。
    ../../../../_images/event_sub_process_0034.png
    図 : 「プロセス詳細」

  15. 「プロセス図とタイムライン」が拡大表示されたポップアップが表示されます。
    「通常のタスク」へ進んでいたプロセスが、「通常とは異なるタスク」へ移行して終了していることを確認します。
    ../../../../_images/event_sub_process_0035.png
    図:「メイン業務のプロセス」