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

4.3.2.1. マルチインスタンス を使用する

このチュートリアルでは、マルチインスタンスの定義を使用して複数のインスタンスを並列および、順次に処理する方法を解説します。
マルチインスタンス の詳細については、「IM-BPM プロセスデザイナ 操作ガイド」 - 「マルチインスタンス」も合わせて参照してください。

コラム

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

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

4.3.2.1.1. プロパティを確認する

プロパティを確認します。
../../../../_images/multi_instance_0001.png
図:プロパティ
  • 繰り返しの種別

    ループ回数か配列を選択します。
  • ループ回数

    繰り返しの種別が「ループ回数」の場合、表示されます。
    回数(数字)または、回数が保存されているオブジェクトを指定します。
  • 配列

    繰り返しの種別が「配列」の場合、表示されます。
    繰り返しに使用する配列(コレクションのオブジェクト)を指定します。
  • 順次実行

    順次で実行するか並列で実行するか設定します。
    有効の場合、順次で実行されます。
    無効の場合、並列で実行されます。
  • 要素変数

    繰り返しの種別が「配列」の場合、表示されます。
    「配列」の要素が「要素変数」に保存されます。
  • 終了条件

    終了条件を設定します。

4.3.2.1.2. ループ回数を指定して使用する

「ループ回数」を指定して使用します。
※ 並列で実行します。
../../../../_images/multi_instance_0003.png
図:実行時のイメージ
  1. 任意の方法で、multi_length の変数に回数を設定します。

    コラム

    本チュートリアルのサンプルでは、「スクリプトタスク」を使用して、multi_length の変数に回数 3 を設定しています。
  2. マルチインスタンスの「繰り返しの種別」を「ループ回数」に設定します(初期設定は「ループ回数」)。

  3. 「ループ回数」にEL式を使用して、multi_length の変数を指定します。

    ../../../../_images/multi_instance_0002.png
    図:プロパティの設定

4.3.2.1.3. 配列を指定して使用する

「配列」を指定して使用します。
※ 並列で実行します。
../../../../_images/multi_instance_0005.png
図:実行時のイメージ
  1. 任意の方法で、multi_list の変数にコレクションを設定します。

    コラム

    本チュートリアルのサンプルでは、「スクリプトタスク」を使用して、multi_list の変数にコレクションを設定しています。
    [ ‘data1’, ‘data2’, ‘data3’ ]
  2. マルチインスタンスの「繰り返しの種別」を「配列」に設定します(初期設定は「ループ回数」)。

  3. 「配列」にEL式を使用して、multi_list の変数を指定します。

    ../../../../_images/multi_instance_0004.png
    図:プロパティの設定

4.3.2.1.4. 並列、または、順次で実行する

並列、または、順次で実行します。
../../../../_images/multi_instance_0008.png
図:ユーザタスク到達時イメージ
  1. 並列で実行する場合、「順次実行」のチェックボックスを無効にします。

    ../../../../_images/multi_instance_0006.png
    図:並列
  2. 順次で実行する場合、「順次実行」のチェックボックスを有効にします。

    ../../../../_images/multi_instance_0007.png
    図:順次

4.3.2.1.5. 要素変数を利用する

マルチインスタンスの要素変数を利用し、ユーザタスクの「タスク名」と「担当者」を設定します。
※ 並列で実行します。
../../../../_images/multi_instance_0012.png
図:実行時のイメージ
  1. 任意の方法で、multi_list の変数にコレクションを設定します。

    コラム

    ※ 本チュートリアルのサンプルでは、「スクリプトタスク」を使用して、multi_list の変数にコレクションを設定しています。
    [ {‘taskName’ : ‘タスク名1’, ‘assignee’, ‘aoyagi’}, {‘taskName’ : ‘タスク名2’, ‘assignee’, ‘ueda’}, {‘taskName’ : ‘タスク名3’, ‘assignee’, ‘ikuta’} ]
  2. マルチインスタンスの「繰り返しの種別」を「配列」に設定します。(初期設定は「ループ回数」)

  3. 「配列」にEL式を使用して、multi_list の変数を指定します。

    ../../../../_images/multi_instance_0009.png
    図:プロパティの設定 - マルチインスタンス
  4. 「配列変数」に変数名 taskInfo を設定します。

  5. プロパティの「基本情報」タブから「別名」にEL式を使用して、taskInfo.taskName を指定します。

    ../../../../_images/multi_instance_0010.png
    図:プロパティの設定 - 基本情報
  6. プロパティの「メインコンフィグ」タブから、「担当者」にEL式を使用して、taskInfo.assignee を指定します。

    ../../../../_images/multi_instance_0011.png
    図:プロパティの設定 - メインコンフィグ

4.3.2.1.6. 終了条件を利用する

「終了条件」を利用します。
※ 並列で実行します。
../../../../_images/multi_instance_0013.png
図:プロパティの設定
マルチインスタンスの実行時にスコープの変数として以下の3つの変数が作成されます。
  • nrOfInstances

    マルチインスタンスの総件数が設定されます。
  • nrOfCompletedInstances

    マルチインスタンスの完了した件数が設定されます。
  • nrOfActiveInstances

    マルチインスタンスの完了していない件数が設定されます。
終了条件に設定する例です。
  • マルチインスタンスの半分以上が完了したら終了させたい場合

    ${ nrOfCompletedInstances / nrOfInstances >= 0.5 }
  • マルチインスタンスのうち、2件が完了したら終了させたい場合

    ${ nrOfCompletedInstances == 2 }
  • マルチインスタンスのうち、残り1件になったら終了させたい場合

    ${ nrOfActiveInstances == 1 }
  • 任意のフラグがtrueになったら終了させたい場合

    ${ %任意のフラグ% }
「終了条件」が満たされない場合は、全てのインスタンスが完了した場合に次のフローエレメントに遷移します。