機械翻訳について

For-Eachアクションを使用した繰返し要素のループ

for-eachアクションを使用すると、繰返し要素をループして、for-eachアクションの範囲内の1つ以上のアクションを処理できます。 ループの繰返し回数は、ユーザー選択の繰返し要素に基づきます。 たとえば、複数のファイルをダウンロードし、ファイルの出力をループ・オーバーする統合がある場合があります。 for-eachアクションにより、このタスクを実行できます。

For-Eachアクションの作成

ノート:

  • for-eachアクションでは、修飾されていない繰返し要素は使用できません。
  • for-eachアクション内に停止アクションを構成すると、for-eachアクションが最初に処理されたときに統合全体が終了します。 for-eachアクションは複数回処理できません。 停止アクションは、設計時にこの動作を説明するメッセージを表示しません。
  1. 次のいずれかの方法で、for-eachアクションを統合に追加します:

    • キャンバスの右側で、「アクション」 統合アクション・アイコンをクリックし、For Eachアクションを適切なロケーションにドラッグします。
    • for-eachアクションを追加するロケーションで「追加」アイコンをクリックし、For Eachを選択します。

    「それぞれの構成」パネルが開きます。 これには、要素の「ソース」ツリーが含まれます。

  2. 「それぞれの構成」の下にある「編集」 「編集」アイコンをクリックして、for-eachアクションの名前とオプションの説明を入力します。

  3. 「ソース」ツリーを展開して要素を選択します。

  4. 繰返し可能な要素を「Repeating Element」フィールドにドラッグします。 これが、ループ処理する要素です。

    ノート:

    次の制限に注意してください。
    • 選択した要素は繰返し可能である必要があります。 繰返し要素は、要素名の左側にある3つのボックス・アイコンによって識別できます。
      プロセス要素が展開されて繰返し要素が表示されます。

    • 選択した要素の親はすべて、繰返し可能でない必要があります。

    • 選択した要素のデータ型はスカラーである必要があります。

    • 繰り返されたグローバルおよび非グローバルの要素を選択できます。

    • 別の繰返し要素内に繰返し要素がある場合(つまり、リスト内にリストがある場合)、最初にfor-eachアクションを作成して親リストをループ処理する必要があります。 これにより、毎回の繰返し時に子リストにアクセスできます。 これで、最初のfor-eachアクションのスコープ内に2つ目のfor-eachアクションを作成して子リストをループ処理できます。

    この例の場合、ループ処理する要素はICSFileです。

    毎回のループの繰返しで、繰返し要素(ICSFile)に対する単一の参照があります。 このアクションを起こさせるには、現在の要素名ファイルが必要です。

  5. 繰返しの現在のファイルの別名を「Current Element Name」フィールドに入力します。


    ソースの下の繰返し可能な要素は、「繰返し要素」フィールドにドラッグされます。 この下にある「現在の要素名」フィールドには、currentFileの値が表示されます。 この下にあるアイテムを並列処理チェック・ボックスが選択されています。

    ノート:

    for-eachアクションをスケジュール統合にドラッグすると、ダイアログの下部に「アイテムを並行して処理」という追加フィールドが表示されます。
    アイテムを並行処理チェック・ボックス

    選択すると、for-eachアクションの反復がパラレルに実行されます。 たとえば、統合がすべてのファイルに対してfor-eachループが作成されたファイルのリストを処理する場合、ファイル全体の処理はすべてのファイルに対してパラレルに実行されます。 for-eachループの外部で変数が宣言され、for-eachループ内で「並列処理アイテム」が選択されて更新される場合、その変数の最終更新値はループの外部で利用できます。 また、並列度(DOP)は、同時実行性の問題を回避するために1に設定されています。

  6. 「保存」をクリックします。

    for-eachアクションはキャンバスに表示されます。 ループする矢印は、このアクションが反復ループを実行することを示します。

  7. for-eachアクション内の+をクリックして、アクションを追加します。 これらのアクションは、ループの各反復中に何が起こるかを定義します。 この例では、スコープおよびスイッチ・アクションはfor-eachアクション内で定義されます。


    oic3_for_each2.pngの説明は以下のとおりです
    図oic3_for_each2.pngの説明

For-Eachループでのグローバル変数の使用

グローバル変数をfor-eachループ(ロギング目的など)で使用すると、不良または無効なデータが変数に関連付けられている場合に、次の実行時例外が発生する可能性があります:

FORG0001: invalid value for cast/constructor, Cikey=13695578,
FlowId=10025204, Current Activity Key=13695578-BpAss43-BpSeq8.240-4, Current
Activity Label=assignment_ics_api_internal_variable23,

推奨事項として:

  • for-eachループでのグローバル変数の使用を制限します。

  • グローバル変数処理にはデータベース・アクセスが必要であるため、パフォーマンス・オーバーヘッドが増加します。

  • ローカル変数は、ローカル・スコープに固有のロジックに使用できます。

実行時のFor-Eachアクションのステータスのトラッキング

インスタンス・ページの各アクションのステータスは、アクティブ化された統合のトラッキング図およびアクティビティ・ストリームを介して追跡できます。

  1. ナビゲーション・ペインで、「可観測性」「インスタンス」の順にクリックします。
  2. 追跡する統合のビジネス識別子値をクリックします。

    統合フロー(for-eachアクションを含む)が表示されます。 for-eachアクションの失敗はすべて赤色の矢印で識別されます。 アクティビティ・ストリームが右側に表示されます。

関連ドキュメント
次の項では、統合でfor-eachアクションを使用する例を示します: