バッチ・アプリケーションは、Enterprise Java Beans (EJB) ベースの Java 2 Platform Enterprise Edition (J2EE) アプリケーションです。 これらのアプリケーションは、 バッチ実行環境がアプリケーションを宛先とするバッチ・ジョブの実行を 管理できるようにする幾つかの明確に定義されたインターフェースに準拠します。
バッチ・ジョブは 1 つまたは複数のバッチ・ステップで構成されます。 バッチ・アプリケーションを複数のステップに分割すると、バッチ・アプリケーションで個別のタスクの分離が可能になります。 バッチ・ステップは、WebSphere 提供のホーム、ビジネスおよびキーのインターフェースを使用する、 ローカルのコンテナー管理パーシスタンス・エンティティー Bean として実装されます。 バッチ・ステップ EJB のビジネス・インターフェース com.ibm.websphere.batch.BatchJobStepLocalInterface は、バッチ実行環境がバッチ・アプリケーションを制御するために呼び出すメソッドを提供します。
バッチ・アプリケーションは、そのデプロイメント記述子で、特別のステートレス・セッション Bean を宣言する必要があります。 この Bean は、バッチ・ジョブ・コントローラーとして機能します。 また、バッチ・アプリケーションで使用されているすべてのバッチ・ステップ・エンタープライズ Bean へのエンタープライズ Bean 参照を含まなければなりません。 この Bean の実装はバッチ・アプリケーションではなく、WebSphere によって提供されます。 唯一必要なのは、バッチ・アプリケーションのデプロイメント記述子で宣言することだけです。 各バッチ・アプリケーションにつき 1 つのコントローラー Bean のみ定義できます。
1 つのバッチ・ステップは、それに関連したゼロまたはそれ以上のバッチ・データ・ストリームを持つことができます。 バッチ・データ・ストリーム (BDS) は、com.ibm.websphere.batch.BatchDataStream インターフェースを実装する Java クラスです。 BDS は、バッチ・ステップで処理されるデータを含む入力ストリームを読み取る Java オブジェクトです。 BDS はさらに、データを読み取るのではなく、データを書き込む出力ストリームにもなります。
BatchDataStream インターフェースのメソッドにより、バッチ実行環境が、バッチ・ステップによって使用 されているデータ・ストリームを管理することが可能になります。 例えば、メソッドの 1 つは、現在のカーソルの情報をストリームから取得し、 どれだけの量のデータがバッチ・ステップによって処理されたかの追跡を続けます。
バッチ実行環境は、バッチ・ステップが呼び出されるグローバル・トランザクションをどの程度の頻度 でコミットするかを判定するために、チェックポイント・アルゴリズムを使用します。 バッチ・ジョブの xJCL 定義で、使用されるチェックポイント・アルゴリズムを定義します。 xJCL のチェックポイント・アルゴリズムに指定されるプロパティーにより、 トランザクションのタイムアウトやチェックポイントの間隔などのチェックポイントの振る舞いをバッチ・ステップ 用にカスタマイズできます。 WebSphere Extended Deployment には、時間ベースおよび記録ベースのチェックポイント・アルゴリズムが用意されています。 追加のカスタム・チェックポイント・アルゴリズムの構築用として、チェックポイント・アルゴリズム SPI も提供されています。
パッケージ化
バッチ・アプリケーションは、 J2EE EAR ファイル内の標準 J2EE EJB アプリケーションとしてパッケージされます。 バッチ・ステップで使用されるバッチ・ステップ・エンティティー・エンタープライズ Bean およびバッチ・データ・ストリームのクラスは、このアプリケーションとともにパッケージする必要があります。 また、バッチ・ジョブ・コントローラー Bean も、あらゆるバッチ・アプリケーションのエンタープライズ Bean デプロイメント記述子で宣言する必要があります。 標準の J2EE 開発ツールを使用して、バッチ・アプリケーション EAR の開発とパッケージを行うことができます。
結果アルゴリズムはバッチ・プログラミング・モデルのオプショナル機能です。 結果アルゴリズムは、それらの戻りコードを基にしてバッチ・ステップに適用され、 そのアルゴリズムは、バッチ・ジョブの戻りコードを操作するために使用されます。 さらに、結果アルゴリズムはステップ戻りコードに基づくトリガーのプレースホルダーとしても動作します。
Related concepts
長時間実行アプリケーションの開発