ParallelSubFlow - パラレルサブフロー

ループの終了コンポーネントとなって、ループするごとに指定したフローを並列実行します。
このコンポーネントに対応するループ開始コンポーネントは、「ループ開始コンポーネント」プロパティで指定したコンポーネントとなります。

並列実行するフローには、このコンポーネントの入力ストリームとパラメーターを設定できます。
並列実行するフローのセッションは、呼び出し元のフローと同一のセッションとなりセッション変数は共有されます。
並列実行するフローのリクエストは、並列実行するフローごとに独立したリクエストとなります。それぞれのリクエストIDは「<呼び出し元のリクエストID>_<コンポーネント名>-<枝番>」となります。
呼び出し元のフローの次の変数は、並列実行するフローにコピーされます。 ただし、並列実行された側のフローで上記の変数を変更しても、呼び出し元のフローでは使用できません。
並列実行したフローの出力ストリームは呼び出し元のフローに戻されて、このコンポーネントの出力ストリームとなります。その時に、並列実行したフローの出力ストリームをどのようにまとめるかは出力形態 で指定することができます。

■ストリーム情報

入力フォーマットすべて
接続数1
説明

入力ストリームのフォーマットは、並列実行するフローの入力ストリームのフォーマットと同一にする必要があります。

出力フォーマットすべて
説明

出力ストリームは、並列実行されたフローの出力ストリームをまとめたストリームになります。ストリームをどのようにまとめるかは出力形態 で指定することができます。
ただし、並列実行するフローがEndコンポーネントで終了し、出力形態 が「空のストリーム」でない場合、このコンポーネントの入力ストリームを出力します。

■コンポーネントプロパティ

名前プロパティ型マッピング説明
最大並列実行数int入力&出力 並列で実行する最大数を指定します。
指定しない場合は、初期値の8になります。
CPU数(コア数)よりも大きな値や、管理コンソールで指定する並列実行スレッド最大サイズよりも大きな値を指定してもほとんど効果はありません。初期値から少しずつ増減させて効果を計測し、適切な値を設定してください。
実行するフローsubflow- 並列実行するフローを指定します。
フロー名は「<プロジェクト名>.<フロー名>」のように「.」区切りで指定します。
プロジェクト名を省略した場合、このフローが含まれているプロジェクト内にあるフローが実行されます。
ループ開始コンポーネントcomponentName- ループを開始したコンポーネントを指定します。
プルダウンリストで前に連結してきたループを開始するコンポーネント名の一覧が表示されます。
出力形態choice- 並列実行したフローの出力ストリームをまとめるかどうかを指定します。
詳しくは、下記トピック「出力形態」を参照してください。
ストリームをまとめる [true] - ストリームをまとめます。
最後のストリーム [false] - 最後のストリームのみ出力します。
コンテナ [PackStreams] - コンテナとして出力します。
空のストリーム [EmptyStream] - 空のストリームを出力します。
並列実行エラー時choice- 並列実行したフローでエラーが発生した場合の動作を指定します。
全てのリクエストを実行 [continue] - 他の並列実行フローを実行します。
すべての並列実行フローが終了した後、コンポーネントエラーが発生します。
他のリクエストをキャンセル [cancel] - 終了していない他の並列実行フローをキャンセルした後、コンポーネントエラーが発生します。
パラメーターcategory入力&出力 並列実行するフローのパラメーターです。
並列実行するフローの公開フロー変数を使用して値をやり取りすることができます。
パラメーター名と同じ名前の公開フロー変数に値が受け渡されます。パラメーター名は大文字小文字を区別します。
データ型には並列実行するフローで指定した型と同じ型を指定します。
(可能な限り自動的に型変換がおこなわれますが、特にBinary型では注意が必要です。)
このプロパティはサブフローコンポーネントと同様に自動的にストリーム変数となりますが、複数のフローが並列に実行されるため、ストリーム変数を本コンポーネントの後に連結したマッパーで使用することはできません。

■トランザクション処理

呼び出し元のフローがトランザクション化されている場合は、このコンポーネントまでの処理と、このコンポーネント以後の処理は同一トランザクションとなります。
並列実行されるフローのトランザクションは、呼び出し元のフローのトランザクションとは別のトランザクションとなります。
コミット何もしません。
ロールバック何もしません。

■エラー処理

タイプパラメーターエラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム1指定したフローが見つからない場合
並列実行エラー なし 並列実行したフローでエラーが発生した場合、エラー処理フローに渡されるストリームは空のストリームとなります。
エラー処理フローの開始コンポーネントのストリーム型を「Any」にしてください。
2まとめるストリームにフィールドが定義されていない場合
3まとめるストリームのストリーム型が異なる場合
4まとめるストリームのフィールド定義が異なる場合
5並列実行したフローの出力ストリームが空の場合
6並列実行でエラーが発生した場合

■このコンポーネントの動作について

ループ区間内に別のループを開始するコンポーネントがあった場合、そのコンポーネントのループもParallelSubFlowコンポーネントで折り返します(2重ループになります)。
複数のParallelSubFlowコンポーネントを配置してループをネストすることもできます。ループ区間の整合性を維持するように注意してください。
パラレルなどの分岐処理は、ループ区間内で完結する必要があります。ループ区間内で完結しない場合は並列実行中のフローの実行がキャンセルされる場合があります。

■並列実行エラー

並列実行されるフローでエラーが発生した場合、既に終了している並列実行された処理を元に戻すことはできません。
エラー時の対応を行うには、並列実行されるフロー側でエラー処理フローを設定する必要があります。

■制限事項

並列実行するフローの実行順序は保証されません。
並列実行するフローにこのコンポーネントを配置することはできません。

■フローの強制終了

フローを強制終了すると、通常は実行中のコンポーネントの処理が終了してから次のコンポーネントに制御が遷移する時点でフローがアボートしますが、本コンポーネントでは並列実行中のすべてフローの処理を強制的に終了した後にフローがアボートします。

■出力形態

出力形態 では、並列実行するフローに出力ストリームがある場合に、それらの出力ストリームをどのようにまとめるかを指定します。このプロパティの指定により複数レコードのストリームをひとつにまとめたり、コンテナに入れて出力することができます。

MIMEの場合は子パートがひとつのマルチパートMIMEになるのではなく元のMIMEがそのまま出力されます。XMLの場合フィールド定義がなくともエラーにはなりません。

ストリームをまとめる

「ストリームをまとめる」を指定した場合、ストリーム型によって次のようにストリームがまとめられます。

Binary, Textストリームが連結されます。
Record, CSV, FixedLengthストリーム中のレコードをすべてまとめて単一のストリームとします。
ParameterListString[]以外のデータ型のフィールドでは最後のストリームのフィールド値になります。
String[]型のフィールドではフィールド値が配列になります。
XMLフィールド定義に添ってXMLが再構成されます。
フィールド定義がされていない場合はエラーになります。
MIMEマルチパートMIMEになります。

コンテナ

「コンテナ」は、後続のフロー処理で複数のストリームを添付ファイルにする場合などに使用します。