webMethods Integration Server フロー サービスでは、反復するリストを識別するための 2 つのプロパティがループに含まれます。必須の入力配列とオプションの出力配列です。
ループ ステップが機能する方法は、入力配列と出力配列のアイテムに加えられた変更のみを保持することです。パイプライン内の他のリストの項目を変更すると、それらの変更はループ ステップの終了時に失われます。これがまさにその仕組みです。
webMethods Developer User's Guide の198 ページからの引用:
入力配列の指定
LOOP ステップでは、LOOP 内の 1 つ以上のステップへの入力として使用される個々の要素を含む入力配列を指定する必要があります。実行時に、LOOP ステップは、指定された配列内の各メンバーに対してループの 1 つのパスを実行します。たとえば、発注書に格納されている各明細に対して LOOP を実行する場合、注文の明細が格納されているドキュメント リストを LOOP の入力配列として使用します。
LOOP ステップの [プロパティ] パネルで、入力配列の名前を指定します。指定する配列は、次のデータ型のいずれかです。 * 文字列リスト * 文字列テーブル * ドキュメント リスト * オブジェクト リスト
LOOP ステップは、入力配列で指定された配列のメンバーごとに 1 回実行されます。
フローを設計するときは、ループ内のサービスは指定された入力配列の個々の要素に対して動作するため、配列全体ではなく、配列の要素を入力として受け取るように設計する必要があることに注意してください。

たとえば、Item、Qty、および UnitPrice という名前の子を含む LineItems というドキュメント リストに対して LOOP を実行する場合、LOOP ステップの入力配列として LineItems を指定しますが、ループ内のサービスは LineItems の個々の要素を取得します (たとえば、Item、Qty、UnitPrice など) を入力として使用します。
LOOP ステップからの出力の収集
LOOP ステップが出力変数を生成する場合、サーバーはその出力をパイプラインの配列に収集できます。
これを行うには、Output 配列パラメーターを使用して、サーバーがループの反復ごとに出力を収集する配列変数の名前を指定します。たとえば、ループが発注書の各品目の在庫状況をチェックし、実行するたびに InventoryStatus という文字列を生成する場合、InventoryStatus を Output 配列の値として指定します。実行時に、サーバーは InventoryStatus をループの各反復からの出力を含む配列変数に自動的に変換します。
ループの各パスから出力を収集するには、反復ごとにサーバーに収集させる出力変数の名前を指定します。
これらすべてを考えると、実際に問題に取り組むにはいくつかの異なる方法があります。
ループ ステップの出力配列プロパティで、2 番目のドキュメント リスト変数名を指定します。これを行うと、ループ ステップの終了時に 2 番目のドキュメント リストに加えた変更が保持されます。
ループ ステップの前のマップ ステップで最初のドキュメント リスト (XOPObject オブジェクトを含むもの) のコピーを取得し、元の代わりにコピーをループして、コピーのアイテムをインラインで変更します。
pub.list:appendToDocumentList
またはを使用pub.list:appendToStringList
して、ループ ステップで新しいドキュメント リストまたは文字列リストをそれぞれ作成します。これにはより多くのコードが必要であり、出力リストに入力リスト内のすべてのアイテムのアイテムを含める必要があるため、この場合は必要ありませんが、入力リストアイテムをフィルタリングする場合に役立ちます (つまり、結果の出力リストは入力リストのサブセットである)。