バッチ・データ・ストリーム
バッチ・データ・ストリーム (BDS) は、バッチ・ステップによって処理されるデータ・ストリームの抽象化を提供する Java™ オブジェクトです。 バッチ・ステップには、1 つ以上の BDS オブジェクトを関連付けることができます。 グリッド・エンドポイントにより、バッチ・ステップと関連付けられた BDS が実行時に使用可能になります。 また、グリッド・エンドポイントは、バッチに固有のコールバックを呼び出すことで、BDS のライフサイクルを管理します。
BDS オブジェクトは、com.ibm.websphere.batch.BatchDataStream インターフェースを実装します。このインターフェースはサーバーに左右されません。 実装する側のオブジェクトは、ファイルやデータベースなど、任意のタイプのデータ・ソースからデータを取得できます。 BatchDataStream インターフェースのコールバック・メソッドにより、グリッド・エンドポイントは実行時に BDS を管理できます。 BDS の主要フィーチャーの 1 つは、ストリーム内の現在位置をグリッド・エンドポイントに伝達し、データ・ストリーム内の指定位置まで自身を移動させる機能です。 このフィーチャーにより、グリッド・エンドポイントは、バッチ・ステップがどれだけのデータを処理したかを (グリッド・エンドポイント・データベースに) 記録できます。 この情報は、チェックポイントごとに記録されます。 そのため、ジョブが取り消されたり、リカバリー可能な方法で失敗したりした場合に、グリッド・エンドポイントはデータ・ストリーム内の記録された位置からバッチ・ジョブを再開できます。
BatchDataStream インターフェース用に存在している主なメソッドを以下に示します。追加情報については、BatchDataStream インターフェースの API を参照してください。
- void open()
- BDS を開くために、グリッド・エンドポイントによって呼び出されます。
- void close()
- BDS を閉じるために、グリッド・エンドポイントによって呼び出されます。
- void initialize(String ilogicalname, String ijobstepid)
- BDS を初期化し、BDS にその論理名およびバッチ・ステップ ID を通知するために、グリッド・エンドポイントによって呼び出されます。
- String externalizeCheckpointInformation()
- BDS の現在のカーソルを記録するために、チェックポイントの前に、グリッド・エンドポイントによって呼び出されます。
- void internalizeCheckpointInformation(String chkpointInfo()
- 以前に記録されたカーソル (chkpointInfo) を BDS に通知するために、グリッド・エンドポイントによって呼び出されます。通常は、この呼び出しの後に positionAtCurrentCheckpoint が呼び出され、BDS がこのカーソルまで移動されます。
- void positionAtCurrentCheckpoint()
- internalizeCheckpointInformation を呼び出した後でグリッド・エンドポイントによって呼び出され、internalizeCheckpointInformation 呼び出しを介して渡された chkpointInfo が示すカーソルまで BDS を移動します。
BatchDataStream インターフェースに、データを取得するメソッドおよびデータを書き込むメソッドはありません。 バッチ・ステップが BDS オブジェクトの読み取りまたは書き込みを行うために呼び出す getNextRecord メソッドおよび putNextRecord メソッドは、このインターフェースに定義されていません。 バッチ・ステップと BDS オブジェクトの間でデータを受け渡すためのメソッドは、BDS オブジェクトの実装側が担当します。バッチ・データ・ストリームの実装例については、この製品がサポートしているバッチのサンプルを確認してください。
- トランザクション環境
- BDS オブジェクトのすべてのメソッドは、グローバル・トランザクションで呼び出されます。 BDS オブジェクトに対して行われる連続したメソッド呼び出しが、同じトランザクション内で実行されるという保証はありません。これは、トランザクションが BDS オブジェクトではなく、グリッド・エンドポイントによって所有されているためです。