チェックポイント・アルゴリズム
グリッド・エンドポイントでは、チェックポイント・アルゴリズムを使用して、バッチ・ステップが呼び出されるグローバル・トランザクションをいつコミットするかを判別します。 これらのアルゴリズムは、XML ジョブ制御言語 (xJCL) 定義によってバッチ・ジョブに適用されます。 xJCL のチェックポイント・アルゴリズムに指定されたプロパティーによって、チェックポイントの動作 (トランザクションのタイムアウトやチェックポイント間隔など) をバッチ・ステップ用にカスタマイズできます。 製品では、時間ベースのチェックポイント・アルゴリズムとレコード・ベースのアルゴリズムの両方が提供され、さらに追加のカスタム・チェックポイント・アルゴリズムを作成するためのサービス・プロバイダー・インターフェース (SPI) が定義されています。
processJobStep メソッドのバッチ・ステップの反復ごとに、共通バッチ・コンテナーは、そのステップに適用されたチェックポイント・アルゴリズムを参照して、グローバル・トランザクションをコミットするかどうかを判別します。 チェックポイント・アルゴリズムのコールバック・メソッドにより、共通バッチ・コンテナーは、グローバル・トランザクションがコミットまたは開始される時期をアルゴリズムに通知できます。 この動作により、アルゴリズムがグローバル・トランザクションのライフサイクルを追跡できるようになります。 processJobStep メソッドの反復ごとに、共通バッチ・コンテナーはアルゴリズムの ShouldCheckpointBeExecuted コールバック・メソッドを呼び出して、トランザクションがコミットされるかどうかを判別します。 アルゴリズムは、このメソッドを使用してチェックポイント間隔を制御します。
カスタム・チェックポイント・アルゴリズムの作成に使用可能なチェックポイント・アルゴリズム SPI については、インフォメーション・センターのリファレンス・セクションにあるチェックポイント・アルゴリズム SPI のバッチ API を確認してください。 クラス名は com.ibm.wsspi.batch.CheckpointPolicyAlgorithm です。
本製品は、時間ベースのアルゴリズムとレコード・ベースのアルゴリズムの 2 つのチェックポイント・アルゴリズムをサポートしています。 これらの両方について、以下のセクションで説明します。
時間ベースのアルゴリズム
<checkpoint-algorithm name="timebased">
<classname>com.ibm.wsspi.batch.checkpointalgorithms.timebased</classname>
<props>
<prop name="interval" value="15" />
<prop name="TransactionTimeOut" value="30" />
</props>
</checkpoint-algorithm>
上の例で、interval プロパティーおよび TransactionTimeOut プロパティーは秒単位で表されています。
レコード・ベースのアルゴリズム
レコード・ベースのチェックポイント・アルゴリズムは、バッチ・ステップの processJobStep メソッドが指定回数だけ反復されるとグローバル・トランザクションをコミットします。 processJobStep メソッドへの各呼び出しが、1 つのレコードの繰り返しとして取り扱われます。 processJobStep メソッドは、各呼び出しでバッチ・データ・ストリームから複数のレコードを取得できます。 しかし、このチェックポイント・アルゴリズムでは、1 つのレコードが processJobStep メソッドへの 1 回の呼び出しに相当します。
<checkpoint-algorithm name="recordbased">
<classname>com.ibm.wsspi.batch.checkpointalgorithms.recordbased</classname>
<props>
<prop name="recordcount" value="1000" />
<prop name="TransactionTimeOut" value="60" />
</props>
</checkpoint-algorithm>
上の例で、TransactionTimeOut プロパティーは秒単位で表されています。
xJCL に指定がない場合、デフォルトのトランザクション・タイムアウトは 60 秒、デフォルトのレコード・カウントは 10000 です。
バッチ・ステップへのチェックポイント・アルゴリズムの適用
チェックポイント・アルゴリズムは、xJCL によってバッチ・ジョブに適用されます。 xJCL では複数のチェックポイント・アルゴリズムを宣言でき、各バッチ・ステップには別々のアルゴリズムを適用できます。 1 つのバッチ・ステップに適用できるチェックポイント・アルゴリズムは 1 つのみです。
以下に示すのは、xJCL によるチェックポイント・アルゴリズムの適用例です。
<job name="PostingsSampleEar">
<checkpoint-algorithm name="timebased">
<classname>com.ibm.wsspi.batch.checkpointalgorithms.timebased</classname>
<props>
<prop name="interval" value="15" />
<prop name=" TransactionTimeOut" value="30" />
</props>
</checkpoint-algorithm>
<checkpoint-algorithm name="recordbased">
<classname>com.ibm.wsspi.batch.checkpointalgorithms.recordbased</classname>
<props>
<prop name="recordcount" value="1000" />
<prop name="TransactionTimeOut" value="60" />
</props>
</checkpoint-algorithm>
<job-step name="Step1">
<checkpoint-algorithm-ref name="timebased" />
</job-step>
<job-step name="Step2">
<checkpoint-algorithm-ref name="recordbased" />
</job-step>
</job>