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

4.3.8.1. 強制終了イベントを利用して、プロセスを強制終了する

このチュートリアルでは、強制終了イベントを使用して、プロセスを途中で終了できる定義の作成方法を解説します。
一部のプロセスを終了したい場合、または、すべてのプロセスを終了したい場合に使用します。

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

コラム

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

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

コラム

このチュートリアルのサンプルでは、1つのBPMNファイルに3つのプロセスが定義されていますが、それぞれファイルを分けて定義することも可能です。

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

下記の図は「設定が異なる強制終了イベント」と「終了イベント」に分岐しているプロセス定義図です。
「強制終了イベント」の設定を変えることと「終了イベント」で、以下の3パターンの終了状態を確認できます。
  • 実行中のプロセス(サブプロセス)のみを終了して、次のフローエレメントへ進行する
  • 「関連するプロセスもすべて含めて強制終了する」設定を有効にすることにより、実行中のプロセス以外のプロセスも終了する
  • 通常の終了イベントで終了する
このチュートリアルでは、「サブプロセス」を利用するプロセスと、「コールアクティビティ」を利用するプロセスを作成します。
サブプロセス の詳細については、「IM-BPM プロセスデザイナ 操作ガイド」 - 「コンテナ」 - 「サブプロセス」を参照してください。
コールアクティビティの詳細については、「IM-BPM プロセスデザイナ 操作ガイド」 - 「タスク」 - 「コールアクティビティ」を参照してください。
../../../../_images/terminate_end_event_0002.png
図 : 「サブプロセスを利用する強制終了プロセス」、「コールアクティビティから呼び出される強制終了するプロセス」、「コールアクティビティを利用する強制終了プロセス」

4.3.8.1.1.1. サブプロセスを利用して、強制終了するプロセス定義を作成する

「サブプロセス」を利用して、異なる範囲を終了できるプロセスを作成します。
../../../../_images/terminate_end_event_0003.png
図 : サブプロセスを利用する強制終了プロセス
  1. 「プール」を設置します。

  2. 「開始イベント」を設置します。

  3. 「サブプロセスを利用する強制終了プロセス」の処理対象ユーザを設定します。
    プールを選択した状態で、「プロセス」タブから処理対象ユーザに「 aoyagi 」と設定します。
    ../../../../_images/terminate_end_event_0004.png
    図 : 「プール」 - 「プロパティ」 - 「プロセス」 - 「処理対象ユーザ」
  4. 「パラレルゲートウェイ」を設置します。

  5. 「サブプロセス」を設置します。

  6. サブプロセス内に「開始イベント」を設置します。

  7. 「パラレルゲートウェイ」を設置します。

  8. 関連するプロセスを含めないで強制終了するルートを作成します。
    「ユーザタスク」を設置します。
  9. 「関連するプロセスを含めないで強制終了する」の担当者を設定します。
    「ユーザタスク」を選択した状態で、「メインコンフィグ」タブから担当者に「 aoyagi 」と設定します。
    ../../../../_images/terminate_end_event_0005.png
    図 : 「サブプロセス」 - 「ユーザタスク」 - 「メインコンフィグ」 - 「担当者」
  10. 「強制終了イベント」を設置します。

  11. 「関連するプロセスもすべて含めて強制終了する」の設定を確認します。
    「メインコンフィグ」タブの「関連するプロセスもすべて含めて強制終了する」はデフォルトでチェックが入っていません。
    現在作成しているルートは設定不要です。
    ../../../../_images/terminate_end_event_0006.png
    図 : 「コールアクティビティから呼び出される強制終了プロセス」- 「強制終了」 - 「プロパティ」 - 「メインコンフィグ」 - 「関連するプロセスを含めないで強制終了する」
  12. 関連するプロセスもすべて含めて強制終了するルートを作成します。
    「ユーザタスク」を設置します。
  13. 「関連するプロセスもすべて含めて強制終了する」の担当者を設定します。
    「ユーザタスク」を選択した状態で、「メインコンフィグ」タブから担当者に「 aoyagi 」と設定します。
    ../../../../_images/terminate_end_event_0007.png
    図 : 「サブプロセス」 - 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」 - 「担当者」
  14. 「強制終了イベント」を設置します。

  15. 「強制終了イベント」に到達した際に、関連するプロセスもすべて含めて強制終了させる設定を行います。
    「強制終了イベント」を選択した状態で、「メインコンフィグ」タブにある「関連するプロセスもすべて含めて強制終了する」チェックボックスにチェックを入れます。
    ../../../../_images/terminate_end_event_0008.png
    図 : 「サブプロセス」 - 「強制終了イベント」 - 「プロパティ」 - 「メインコンフィグ」 - 「関連するプロセスもすべて含めて強制終了する」
  16. 「強制終了イベント」でサブプロセス内が終了した際に進行する「全て強制終了しなかった場合のタスク」を設置します。
    「ユーザタスク」を設置します。
  17. 「全て強制終了しなかった場合のタスク」の担当者を設定します。
    「ユーザタスク」を選択した状態で、「メインコンフィグ」タブから担当者に「 aoyagi 」と設定します。
    ../../../../_images/terminate_end_event_0009.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」 - 「担当者」
  18. 「終了イベント」を設置します。
  19. 終了イベントを使用した場合の動作を確認するルートを作成します。
    「ユーザタスク」を設置します。
  20. 「終了イベントで終了する」タスクの担当者を設定します。
    「ユーザタスク」を選択した状態で、「メインコンフィグ」タブから担当者に「 aoyagi 」と設定します。
    ../../../../_images/terminate_end_event_0010.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」 - 「担当者」
  21. 「終了イベント」を設置します。

4.3.8.1.1.2. コールアクティビティを利用して、強制終了するプロセス定義を作成する

「コールアクティビティ」を利用して、異なる範囲を終了するプロセスを作成します。
関連する別のプロセスに対しても、強制終了イベントの設定によりプロセスの終了範囲を変更できます。
../../../../_images/terminate_end_event_0011.png
図 : 「コールアクティビティから呼び出される強制終了プロセス」と「コールアクティビティを利用する強制終了プロセス」
  1. 「コールアクティビティから呼び出される強制終了プロセス」を作成します。
    プールを設置します。
  2. 「開始イベント」を設置します。

  3. 「コールアクティビティ」から呼び出される際に使用するため、プロセス定義キーを設定します。
    プールを選択した状態で、「プロセス」タブの「プロセス定義キー」に「 terminate_end_event_with_call_activity_1 」と設定します。
    ../../../../_images/terminate_end_event_0012.png
    図 : 「プール」 - 「プロパティ」 - 「プロセス」 - 「プロセス定義キー」
  4. 「パラレルゲートウェイ」を設置します。

  5. 関連するプロセスを含めないで強制終了するルートを作成します。
    「ユーザタスク」を設置します。
  6. 「関連するプロセスを含めないで強制終了する」タスクの担当者を設定します。
    「ユーザタスク」を選択した状態で、「メインコンフィグ」タブから担当者に「 aoyagi 」と設定します。
    ../../../../_images/terminate_end_event_0013.png
    図 : 「ユーザタスク」 -「プロパティ」 -「メインコンフィグ」 - 「担当者」
  7. 「強制終了イベント」を設置します。

  8. 「関連するプロセスもすべて含めて強制終了する」の設定を確認します。
    「メインコンフィグ」タブの「関連するプロセスもすべて含めて強制終了する」はデフォルトでチェックが入っていません。
    現在作成しているのは関連するプロセスを含めないで強制終了するルートのため、設定は不要です。
    ../../../../_images/terminate_end_event_0014.png
    図 : 「強制終了イベント」 - 「プロパティ」 - 「メインコンフィグ」 - 「関連するプロセスもすべて含めて強制終了する」
  9. 関連するプロセスもすべて含めて強制終了するルートを作成します。
    「ユーザタスク」を設置します。
  10. 「関連するプロセスもすべて含めて強制終了する」タスクの担当者を設定します。
    「ユーザタスク」を選択した状態で、「メインコンフィグ」タブから担当者に「 aoyagi 」と設定します。
    ../../../../_images/terminate_end_event_0015.png
    図 : 「ユーザタスク」 -「プロパティ」 -「メインコンフィグ」 - 「担当者」
  11. 関連するプロセスもすべて含めて強制終了するように設定します。
    「強制終了イベント」を選択した状態で、「メインコンフィグ」タブにある「関連するプロセスもすべて含めて強制終了する」チェックボックスにチェックを入れます。
    ../../../../_images/terminate_end_event_0016.png
    図 : 「強制終了イベント」 - 「プロパティ」 -「メインコンフィグ」 - 「関連するプロセスもすべて含めて強制終了する」
  12. 「コールアクティビティを利用する強制終了プロセス」を作成します。
    プールを設置します。
  13. 「レーン」の中に「開始イベント」を設置します。

  14. 「コールアクティビティを使用する強制終了プロセス」の処理対象ユーザを設定します。
    プールを選択した状態で、「プロセス」タブから「処理対象ユーザ」に「 aoyagi 」と設定します。
    ../../../../_images/terminate_end_event_0017.png
    図: 「プール」 - 「プロパティ」 - 「プロセス」 - 「処理対象ユーザ」
  15. 「パラレルゲートウェイ」を設置します。

  16. コールアクティビティを使用して、強制終了するプロセスを呼び出すルートを作成します。
    「コールアクティビティ」を設置します。
  17. コールアクティビティで呼び出すプロセスを設定します。
    「メインコンフィグ」タブから「呼び出し対象」に、「コールアクティビティから呼び出される強制終了プロセス」のプロセス定義ID「terminate_end_event_with_call_activity_1」を入力します。
    ../../../../_images/terminate_end_event_0018.png
    図 : 「コールアクティビティ」 - 「プロパティ」 - 「メインコンフィグ」 - 「呼び出し対象」
  18. 「関連するプロセスもすべて含めて強制終了する」設定がされていない終了イベントへ進んだ場合のタスクを設置します。
    「ユーザタスク」を設置します
  19. 「全て強制終了しなかった場合のタスク」の担当者を設定します。
    「ユーザタスク」を選択した状態で、「メインコンフィグ」タブから担当者に「 aoyagi 」と設定します。
    ../../../../_images/terminate_end_event_0019.png
    図 : 「ユーザタスク」 - 「プロパティ」 -「メインコンフィグ」 - 「担当者」
  20. 「終了イベント」を設置します。

  21. 終了イベントで終了するルートを作成します。
    「ユーザタスク」を設置します。
  22. 「終了イベントで終了する」タスクの担当者を設定します。
    「ユーザタスク」を選択した状態で、「メインコンフィグ」タブから担当者に「 aoyagi 」と設定します。
    ../../../../_images/terminate_end_event_0020.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」 - 「担当者」
  23. 「終了イベント」を設置します。

4.3.8.1.2. 結果を確認する

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

4.3.8.1.2.1. 「サブプロセスを使用する強制終了ベント」の動作確認

サブプロセスを使用して強制終了するプロセスの動作確認をします。
各動作確認の前に、「プロセス開始一覧」から「サブプロセスを利用する強制終了プロセス」を開始してください。
../../../../_images/terminate_end_event_0021.png
図 : 「プロセス開始一覧」

4.3.8.1.2.1.1. 終了イベントの動作確認

「終了イベント」に到達した場合のプロセスの状態を確認します。

  1. タスクを確認します。
    「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
  2. 「終了イベントで終了する」タスクを実行します。
    「個人タスク」から、「終了イベントで終了する」タスクの「startable_list-start_processes」ボタンをクリックします。
    ../../../../_images/terminate_end_event_0022.png
    図: 「タスク一覧」 - 「個人タスク」
  3. 「終了イベント」に到達しても、他のタスクが終了していないことを確認します。
    プロセス定義名が「サブプロセスを利用する強制終了プロセス」であるタスクの「icon_reference」ボタンをクリックします。
    ../../../../_images/terminate_end_event_0023.png
    図: 「タスク一覧」 - 「個人タスク」
  4. 「プロセス参照」画面、または、「拡大表示」画面から、タスクが下記の状態であることを確認します。

    • ステータスが「実行中」であること

    • プロセス図で、サブプロセスが終了しておらず、実行中の「process-running」がついていること

    • プロセス履歴で「終了イベントで終了する」タスクが完了していること
      「関連するプロセスもすべて含めて強制終了する」と「関連するプロセスを含めないで強制終了する」が処理を待っていること
    ../../../../_images/terminate_end_event_0024.png
    図: 「タスク一覧」 - 「個人タスク」

4.3.8.1.2.1.2. 「関連するプロセスもすべて含めて強制終了する」設定をしなかった強制終了イベントの動作確認

「関連するプロセスもすべて含めて強制終了する」設定をしなかった強制終了イベントに到達した場合のプロセスの状態を確認します。
上記の「終了イベント」で使用しなかったタスクを完了させたのち、再度新しくプロセスインスタンスを開始してください。
  1. タスクを確認します。
    「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
  2. 「関連するプロセスを含めないで強制終了する」で終了した場合を確認します。
    「個人タスク」から、「関連するプロセスを含めないで強制終了する」タスクの「startable_list-start_processes」ボタンをクリックし、実行します。
    ../../../../_images/terminate_end_event_0025.png
    図: 「タスク一覧」 - 「個人タスク」
  3. プロセスインスタンスの状態を確認します。
    「個人タスク」にある「サブプロセスを利用する強制終了プロセス」の「icon_reference」ボタンをクリックします、
    ../../../../_images/terminate_end_event_0026.png
    図: 「タスク一覧」 - 「個人タスク」
  4. 「プロセス参照」画面、または、「拡大表示」画面から、タスクが下記の状態であることを確認します。

    • ステータスが「実行中」であること
    • プロセス図で「全て強制終了しなかった場合のタスク」と「終了イベントで終了する」タスクに「process-running」がついていること
    • プロセス履歴で「関連するプロセスもすべて含めて終了する」タスクが中止していること
    ../../../../_images/terminate_end_event_0027.png
    図: 「プロセス参照」

4.3.8.1.2.1.3. 「関連するプロセスもすべて含めて強制終了する」設定をした強制終了イベントの動作確認

「関連するプロセスもすべて含めて強制終了する」に到達した場合のプロセスの状態を確認します。
上記の「関連するプロセスを含めないで強制終了する」で使用しなかったタスクを完了させたのち、再度新しくプロセスインスタンスを開始してください。
  1. タスクを確認します。
    「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
  2. 「関連するプロセスもすべて含めて強制終了する」を実行します。
    「個人タスク」から、「関連するプロセスもすべて含めて強制終了する」タスクの「startable_list-start_processes」ボタンをクリックします。
    ../../../../_images/terminate_end_event_0028.png
    図: 「タスク一覧」 - 「個人タスク」
  3. 「関連するプロセスもすべて含めて強制終了する」タスクを処理したことで、「タスク一覧」にあったタスクが消えることを確認します。
    ../../../../_images/terminate_end_event_0029.png
    図: 「タスク一覧」 - 「個人タスク」
  4. プロセスの状態を確認します。
    「サイトマップ」→「BPM」→「プロセス一覧」画面を表示します。
  5. 「プロセス一覧」画面で対象のタスクを検索し、「icon_reference」ボタンをクリックします。

    ../../../../_images/terminate_end_event_0030.png
    図: 「プロセス一覧」
  6. 「プロセス参照」画面、または、「拡大表示」画面から、タスクが下記の状態であることを確認します。

    • ステータスが「完了」であること
    • プロセス履歴で「関連するプロセスを含めないで強制終了する」タスクと「終了イベントで終了する」タスクが中止されていること
    ../../../../_images/terminate_end_event_0031.png
    図: 「プロセス詳細」

4.3.8.1.2.2. 「コールアクティビティを使用する強制終了プロセス」の動作確認

「コールアクティビティを使用した強制終了イベント」の結果を確認します。
各動作確認の前に、「プロセス開始一覧」から「コールアクティビティを利用する強制終了プロセス」を開始してください。
../../../../_images/terminate_end_event_0032.png
図 : 「プロセス開始一覧」

4.3.8.1.2.2.1. 終了ベントルートの動作確認

実行手順、確認箇所については「終了イベントの動作確認」と同じです。

4.3.8.1.2.2.2. 「関連するプロセスもすべて含めて強制終了する」設定をしなかった強制終了イベントの動作確認

「関連するプロセスもすべて含めて強制終了する」設定をしなかった強制終了イベントに到達した場合のプロセスの状態を確認します。
上記の「終了イベント」で使用しなかったタスクを完了させたのち、再度新しくプロセスインスタンスを開始してください。
  1. タスクを確認します。
    「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
  2. 「強制終了イベント」で終了した場合を確認します。
    「個人タスク」から、「関連するプロセスを含めないで終了する」の「startable_list-start_processes」ボタンをクリックします。
    ../../../../_images/terminate_end_event_0033.png
    図: 「タスク一覧」 - 「個人タスク」
  3. 「関連するプロセスを含めないで終了する」タスクを処理することで、「全て強制終了しなかった場合のタスク」がきます。
    プロセスの状態を確認するため、「全て強制終了しなかった場合のタスク」の「icon_reference」ボタンをクリックします。
    ../../../../_images/terminate_end_event_0034.png
    図: 「タスク一覧」 - 「個人タスク」
  4. 「プロセス参照」画面、または、「拡大表示」画面から、タスクが下記の状態であることを確認します。

    • ステータスが「実行中」であること
    • プロセス図で「全て強制終了しなかった場合のタスク」と「終了イベントで終了する」タスクに「process-running」がついていること
    • プロセス履歴でも「全て強制終了しなかった場合のタスク」と「終了イベントで終了する」タスクが処理を待機していること
    ../../../../_images/terminate_end_event_0035.png
    図: 「プロセス詳細」

4.3.8.1.2.2.3. 「関連するプロセスもすべて含めて強制終了する」設定をした強制終了イベントの動作確認

「関連するプロセスもすべて含めて強制終了する」設定をした強制終了イベントに到達した場合のプロセスの状態を確認します。
上記の「関連するプロセスを含めないで終了する」で使用しなかったタスクを完了させたのち、再度新しくプロセスインスタンスを開始してください。
  1. タスクを確認します。
    「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
  2. 「関連するプロセスもすべて含めて強制終了する」を実行します。
    「個人タスク」から、「関連するプロセスもすべて含めて強制終了する」タスクの「startable_list-start_processes」ボタンをクリックします。
    ../../../../_images/terminate_end_event_0036.png
    図: 「タスク一覧」 - 「個人タスク」
  3. 「関連するプロセスもすべて含めて強制終了する」タスクを処理したことで、「タスク一覧」にあったタスクが消えることを確認します。
    ../../../../_images/terminate_end_event_0029.png
    図: 「タスク一覧」 - 「個人タスク」
  4. プロセスの状態を確認します。
    「サイトマップ」→「BPM」→「プロセス一覧」画面を表示します。
  5. 「プロセス一覧」画面で対象のタスクを検索します。
    プロセス定義キー「 terminate_end_event_with_call_activity_1 」と「 terminate_end_event_with_call_activity_2 」のステータスが「完了」になっていることを確認します。
    ../../../../_images/terminate_end_event_0037.png
    図: 「プロセス一覧」
  6. 正確な「強制終了イベント」の動きも、「プロセス詳細画面」のプロセス履歴から確認できます。

    ../../../../_images/terminate_end_event_0038.png
    図: 「プロセス詳細」