メイン コンテンツをスキップする 補完的コンテンツへスキップ

ループを展開

ループを展開し、ループしない個別のエレメントを作成します。

始める前に

入力ストラクチャーと出力ストラクチャーを持つマップを作成済みであること。この例では、[Other Projects] (他のプロジェクト) > [Examples] (例) > [Structures] (ストラクチャー) > [Recursive] (再帰) > [Component] (コンポーネント)を入力として、[Other Projects] (他のプロジェクト) > [Examples] (例) > [Structures] (ストラクチャー) > [CSV] > [FlatComponents]を出力として使います。

このタスクについて

この例では、再帰SubComponentsループが含まれているComponentエレメントが入力ストラクチャーに存在します。出力では、SubComponentsループがComponentsと同じレベルのシンプルループであることが必要です。

このマップは、[Other Projects] (他のプロジェクト) > [Examples] (例) > [Maps] (マップ) > [Looping] (ルーピング) > [LoopRecursiveToFlat]にあります。

手順

  1. 入力ストラクチャーで、SubComponentsループを右クリックして[Expand Recursive Elements] (再帰的エレメントの展開)をクリックし、もう一度右クリックして[Expand All] (すべて展開)をクリックして子を表示させます。
    同じステップを子SubComponentsエレメントで繰り返せば、必要な数だけレベルを表示できます。
  2. 出力ストラクチャーでComponentsループを右クリックし、[Unroll From Loop] (ループから展開)をクリックします。
    これによって、ルーピングしないComponentsエレメントが子と共に新しく作成されます。
  3. 入力Componentエレメントを出力Components (ループから展開済み)にドラッグ&ドロップします。
    両方のストラクチャーで同じ名前のエレメントが自動的にマッピングされます。
  4. 入力SubComponentsループを出力Components[2]ループにドラッグします。
    エレメントがマッピングされ、SimpleLoopファンクションが出力ルーピングエレメントに追加されます。
  5. 出力Rowエレメントをクリックし、[Functions] (ファンクション)タブからFixedLoopファンクションをドラッグして[Loop] (ループ)タブにドロップします。
    Rowエレメントはループなので、ループ式が必要です。ただし、入力Componentはループしないので、出力にRowを複数回出現させる必要はありません。FixedLoopファンクションは返す回数を示しています(デフォルトでは1に設定されています)。

タスクの結果

ループがマッピングされます。サンプル入力ファイルに基づいて出力を確認する場合は、[Test Run] (テスト実行)ボタンを使います。この例での出力は次のようになります。
<FlatComponents>
  <Row>
    <Components>
      <Id>1</Id>
      <PartNumber>45I1122</PartNumber>
      <Quantity>1</Quantity>
      <Description>Main Component</Description>
    </Components>
    <Components>
      <Id>102</Id>
      <PartNumber>12ZSSS</PartNumber>
      <Quantity>5</Quantity>
      <Description>Door Assembly</Description>
    </Components>
    <Components>
      <Id>302</Id>
      <PartNumber>12IQWO</PartNumber>
      <Quantity>14</Quantity>
      <Description>Window Assembly</Description>
    </Components>
  </Row>
</FlatComponents>

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。