反復処理(イテレーション)とは、タスクを数回実行することを意味します。
1つのタスクのいくつかのインスタンスを同時に開始できます。これを「マルチインスタンスのコール」と云います。あるいは、先行のタスクが終了したときに、そのタスクの別のインスタンスを開始できます。これを「ループ」と云います。1つのタスクまたはコールアクティビティを繰り返して処理できます。 連続的に繰り返しが必要ないくつかのタスクがある場合、それらをサブプロセスにグループ化し、サブプロセスをコールする「コールアクティビティ」で反復処理を定義します。
マルチインスタンス
1つのタスクのいくつかのインスタンスをパラレル(並行)に実行させたい場合は、マルチインスタンスを使用します。例えば、ドキュメントのレビューに関するプロセスで、すべてのレビュアーにドキュメントを同時に発行し、彼らのすべてのフィードバックを次のステップに移動する前に収集する場合です。
マルチインスタンスを構成設定するためには、ダイアグラムの要素を選択し、[詳細] パネル -> [全般] タブ -> [反復処理] ペインに進みます。次の手順で指定します:
- 「パラレル(並行処理)のマルチ インスタンス」、または「シーケンシャル(順次処理)のマルチ インスタンス」のいずれかを選択します。
- 希望するタスクのインスタンス数を次の方法で指定できます。
- インスタンス数を直接指定する: 「定義したインスタンス数を作成します」をクリックし、「作成するインスタンス数:」に数値を入力します。この数値は定数の他、パラメータ、変数でも設定できます。
- 式を定義する: 「定義したインスタンス数を作成します」をクリックし、式エディタを開き、式のタイプをスクリプトにセットし、スクリプトを定義します。 これは繰り返し数をプロセス内のある情報で条件付けする場合に有益です。このスクリプトは integer を返します。
- リストで繰り返し数を指定する: 「リストからインスタンスを作成します」をクリックし、既存のリストまたは複数データから該当するリストを選択します。
- リストを使用する場合は、付随するインスタンスを作成するためにリスト内の item 数を取得するイテレータ参照値、 multiInstanceIterator の名前を編集することもできます。この場合、このイテレータは選択したリストのitem と同じデータ型を持つようしなければいけません。
- すべてのインスタンスを通じてユーザーの活動結果を保存したい場合は、「出力結果を保存」をチェックし、次の項目を指定します:
- 出力リストに格納されるべき各インスタンスからの結果データ
- 結果データがアペンドされた最終の結果リスト
- 早期完了の条件を指定します。 これは反復処理を終了させるかどうか判断するブーリアンです。例えば、タスクのインスタンスが最大10可能で、最低8で終了させたい場合、completed_instances と呼ぶカウンターを定義してcompleted_instances の値が8に達した、あるいは超えたときにその完了条件を true にセットします。この式で次の事前定義済み変数にアクセスできます:
numberOfActiveInstances
: 現在アクティブで未だ完了していないインスタンス数(シーケンシャル(順次処理)のマルチ インスタンスの場合は常に1になります)。numberOfTerminatedInstances
: 終了したインスタンス数(正常、失敗を問わない)。numberOfCompletedInstances
: 正常に終了したインスタンス数numberOfInstances
: 総インスタンス数
ループ
1つのタスクを数回遂行させたい場合、ループを使用します。このループは条件が成立するまで1回ずつ、結果データを返さずに繰り返されます。条件は反復数を指定するか、または式で設定できます。条件の評価は繰り返しの終わり、または始めに行われます。
ループを構成設定するためには、ダイアグラムの要素を選択し、[詳細] パネル -> [全般] タブ -> [反復処理] ペインに進みます。次の手順で指定します:
- 「標準的なループ」を選択します。
- このループの終了判定をタスクが実行される前(「最初に条件を評価」)、実行された後(「最後に条件を評価」)のいずれで行うか指定します。
- 「Loop while」のフィールドにループを継続する条件を指定します。式でその条件を定義します。 ここでは
loopCounter
と名付けた事前定義済みの変数を使用することができます。 - 「最大ループ数」のフィールドに繰り返されるべきループの最大回数を指定します。実行されるべきループの回数が事前に分かっている場合は、この最大ループ数のフィールドにその回数を設定し、「Loop while」の条件は常にtrueになるように設定します。これはオプションですが、プロセスが行き詰まらないよう、無限ループとエラーを避けるためにリミットを設定することを推奨します。