- はじめに
- 基本情報
- BPMN を使用したプロセス モデリング
- ケース管理を使用したプロセス モデリング
- フローを使用したプロセス モデリング
- プロセスの実装
- プロセスの操作
- プロセスの監視
- プロセスの最適化
- 参考情報
コレクションを反復処理するためのループ ノードで、[並列] オプションと [中断] オプションを使用します。
機能
コレクションを反復処理し、項目ごとにループ本体内のノードを 1 回ずつ実行します。
使用すべき状況
ループは、API によって返されるレコードのリスト、ファイルのリスト、ID のリストなど、処理する項目のコレクションがある場合に使用します。ループは項目ごとに 1 回実行され、コレクションがなくなると停止します。
コレクションを使い果たす前に終了するには、[ 条件時を中断 ] または [繰り返しハンドル] を使用します。どちらも以下で説明します。
構成のリファレンス
| フィールド | Required | 既定 (Default) | 説明 |
|---|---|---|---|
| コレクション | はい | なし | 反復処理する配列です。配列に解決される式を入力します (例: $vars.listCustomers1.output)。 |
| 並列 (Parallel) | いいえ | Off | すべての反復処理を 1 つずつではなく同時に実行します。オフの場合、ループは順番に実行され、各反復処理が完了するまで待ってから次の反復処理を開始します。 |
| 条件一致時に中断 | いいえ | なし | 反復処理の完了後にループが true になったときに、ループを早期に終了する式。これはシーケンシャル ループに適用されます。 |
| ブレーク ハンドルを表示 | いいえ | Off | ループに ブレーク ハンドルを追加して、本体内のノードがループを早期に終了できるようにします。ノードの出力をブレークハンドルに接続して、本体内からの反復処理を停止します。 |
順次反復処理では順序が維持されます。これは、各反復処理の完了後に条件がチェックされるため、[ 条件で中断 ] が機能するために必要です。並列反復処理は、保証された順序で実行されません。
ループ本体
ループ境界の内側にノードをドラッグして、本体に追加します。本体内のノードは、現在の項目と反復処理、およびループ外のスコープ内の任意の変数を読み取ることができます。
現在の項目と反復処理
本体内で、以下の式でループの進行状況を参照します。
$vars.<loopName>.currentItemは、現在の反復処理の項目です。ドット表記を使用してフィールドにアクセスします (例:$vars.loop1.currentItem.id)。$vars.<loopName>.currentIterationは、1から始まる現在の反復処理番号です。
これらは、ループ本体内でのみ使用できます。
出力
すべての反復処理の完了後、ループの集計結果は $vars.<loopName>.outputで表示されます。ループの後、ノードから実行が続行されます。
currentItem と currentIteration には、ループ本体の外ではアクセスできません。
例
例 1 — 各項目に対して API を呼び出す
ループは を反復処理 $vars.listCustomers1.output。ループ本体には、URL が の HTTP 要求ノードが含まれます。
https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}
https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}
例 2 — 複数の反復処理にまたがって結果の配列を構築する
ループ本体内のスクリプト ノードは、各項目の値を返します。ループは、各反復処理の結果を に収集します$vars.loop1.output
return { id: $vars.loop1.currentItem.id, processed: true };
return { id: $vars.loop1.currentItem.id, processed: true };
ループの後、 $vars.loop1.output はそれらの結果の配列です。
例 3 — 一致が見つかったら早期に停止する
ループ本体内の Decision ノードが現在の項目をチェックします。ブ レーク ハンドルの表示 が有効化されている場合、判断の一致する分岐はループのブレーク ハンドルに接続され、一致が見つかったらすぐに反復処理を停止します。
一般的な問題
ループ本体は実行されません。コレクションが空であるか、 undefinedです。実行トレースでアップストリーム ノードの出力を調べて、配列に項目が含まれていることを確認します。空のコレクションは本文をスキップし、ループの後に続行します。
[条件の完了時] は、並列ループではトリガーされません。[中断時の条件] は各反復処理が順番に完了した後に評価されるため、シーケンシャル ループに適用されます。実行中の状態で中断する必要がある場合は、[ 並列 ] をオフにします。
本体内でコレクションを編集しても、反復処理される内容は変更されません。コレクションはループの開始時にキャプチャされます。本体内の配列変数を変更しても、反復処理される項目は変更されません。これは仕様です。