Skip to main content
バッチグループメッセージのメンバーを反復処理し、呼び出し本体の実行中は各メンバーを_message として公開します。このオペレーションはScript コネクタのテンプレートでのみサポートされます。

必要なパラメータ

  • messageId: 反復処理するバッチグループメッセージのId。通常は[MessageId] として参照されます。

オプションのパラメータ

  • messageType: バッチメンバーを読み取る際に使用するメッセージタイプ。使用可能な値はAuto、Input、Output、Temp です。デフォルトはAuto ですが、ベストプラクティスの推奨事項についてはmessageType は常にInput に設定するを参照してください。Output とTemp は、それぞれスクリプトのアウトプットメッセージストアと一時メッセージストアを対象としており、必要になることはほとんどありません。

アウトプット属性

呼び出し本体内で、各バッチメンバーに対して_message 上で次の属性が使用できます:
  • _message.body: バッチメンバーメッセージの内容。
  • _message.header:*: バッチメンバーのメッセージヘッダー。例えば、[_message.header:filename] はfilename ヘッダーを返します。

関連属性

  • _message.isBatchGroup: Script コンテキスト内のあらゆる_message で使用できます。現在のメッセージがバッチグループの場合はtrue を返し、通常のメッセージの場合はfalse を返します。受信メッセージがバッチグループの場合にのみconnectorBatchGroupRead を条件付きで呼び出す際に便利です。

Script コネクタでの使用方法

messageType は常にInput に設定する

Script コネクタでconnectorBatchGroupRead を呼び出す場合は、常にmessageType を明示的にInput に設定してください:
messageType を省略すると、このオペレーションはインプットメッセージと、スクリプトが現在の実行中に作成しているアウトプットメッセージの両方からメッセージId を検索します。呼び出しが完了する前にスクリプトがbatchGroupKey を指定してアウトプットをプッシュすると、アウトプットのバッチグループにインプットと同じメッセージId が割り当てられる場合があります。この場合、オペレーションはどちらのメッセージを指しているか判断できず、次のようなエラーで失敗します:
このエラーが発生するかどうかはアウトプットのプッシュ順序に依存するため、テストでは問題なく通過したスクリプトが、実データでは失敗することがあります。

プッシュごとにアウトプットアイテムをクリアする

アウトプット属性はarc:pushによってクリアされず、次のプッシュに引き継がれます。予期しない動作を避けるため、各プッシュの前に<arc:unset item="output" /> を呼び出してください。 クリアしない場合、あるプッシュで設定された値が次のプッシュに影響することがあります: arc:unset はoutput.batchGroupKey もクリアします。output.isBatchGroup=true でバッチグループをファイナライズするプッシュでは、arc:unset の後にoutput.batchGroupKey を再度設定してください。

アウトプットでバッチグループを生成する

アウトプットをバッチグループとして送信するには、各メンバーのプッシュでoutput.batchGroupKey を設定します。同じキーを共有するメンバーはグループ化されます。明示的なファイナライザプッシュが行われない場合、Script コネクタは実行の終了時にバッチグループを自動的に作成します。 グループレベルのプロパティ(グループのファイル名やヘッダーなど)を定義するには、同じbatchGroupKey とともにoutput.isBatchGroup をtrue に設定して、明示的なファイナライザプッシュを行います。ファイナライザは、実行の最後ではなく、その時点でグループを出力します。 ファイナライザプッシュの制約:
  • output.batchGroupKey は、既存の空でない保留中のグループのキーと一致する必要があります。
  • グループの内容はそのメンバーによって定義されるため、output.data とoutput.filepath は無効でエラーを返します。output.filename やその他のメッセージメタデータは引き続き有効です。

出力順序

  • 通常のアウトプットメッセージは、プッシュした順序で出力されます。
  • 明示的なisBatchGroup=true プッシュは、実行中のその時点でグループを出力します。
  • 残りの暗黙的なグループは、実行の最後に出力されます。

例

バッチメンバーを通常のメッセージとして読み取る

インプットバッチグループの各メンバーを読み取り、通常のアウトプットメッセージとして出力します:

メンバーを新しいバッチグループに再グループ化する

各メンバーを読み取り、名前を変更して、すべてのメンバーをbatch01 という名前の1つの新しいバッチグループとして出力します:
ファイナライザプッシュ(最後のブロック)を省略した場合でも、スクリプトが終了するとバッチグループはそのbatchGroupKey にちなんだ名前で出力されます。