パラレル・ジョブ・マネージャー (PJM) は、独立したパラレル・サブジョブの調整コレクションとして実行されるトランザクション・バッチ・ジョブを実行依頼し、管理するための機能およびフレームワークを提供します。
以下の 2 つの図は、PJM アーキテクチャーと、パラレル・ジョブの順序を示しています。まず、最上位のジョブがジョブ・スケジューラーに実行依頼され、ジョブ・スケジューラーは、そのジョブがパラレル・ジョブと判断し、そのジョブを PJM にディスパッチします。PJM は、パラメータライザー SPI を呼び出して、ジョブを 2 つのサブジョブに分割するのを助けます。ここで PJM は LogicalTX 同期 SPI を呼び出して、論理トランザクションの先頭を示します。次に PJM はリポジトリーに保管されているサブジョブ xJCL を使用して、サブジョブをジョブ・スケジューラーに実行依頼します。ここでジョブ・スケジューラーは、サブジョブを実行のためにバッチ・コンテナー・エンドポイントにディスパッチします。サブジョブが実行を開始したことを PJM が検出すると、PJM はライフサイクル SPI を呼び出します。他の SPI 呼び出しとは異なり、この呼び出しの一部としてコンテキスト情報が使用可能になることはありません。次にバッチ・コンテナーがサブジョブを実行します。チェックポイントが取られると、サブジョブ・コレクター SPI が呼び出されます。この SPI は、サブジョブに関する状態情報を収集します。 このデータは、解釈のためにサブジョブ・アナライザー SPI に送られます。 すべてのサブジョブが最終的な状態に達すると、同期 SPI の beforeCompletion および afterCompletion が呼び出されます。ジョブの戻りコードを計算するために、アナライザー SPI も呼び出されます。
以下の図は、PJM アーキテクチャーを要約した図で、どこで SPI が呼び出されるかを示しています。
以下の図は、パラレル・ジョブのイベントの順序を示しています。
PJM は、パラレル・サブジョブをモニターし、管理する Enterprise JavaBeans (EJB) アプリケーションです。パラレル・サブジョブは、バッチ J2EE アプリケーションです。PJM は、1 ステップのバッチ Java 2 Platform, Enterprise Edition (J2EE) です。PJM は、バッチ・データ・ストリームを処理するのではなく、ジョブ・リポジトリー内のサブジョブおよび処理対象のサブジョブのカウントを識別するステップ・プロパティーの管理下で、サブジョブを実行依頼または再開します。
パラレル・ジョブは、ParallelJobManager アプリケーションを実行する最上位のジョブと、実際のビジネス・ロジックを実行するサブジョブのセットで構成されます。サブジョブは、同じジョブ定義を実行しますが、それぞれ潜在的に異なる入力が設定されます。すべてのサブジョブは、単一の論理ジョブとしてまとめて管理されます。
最上位およびサブジョブの両方に個別の xJCL 定義が必要になります。すべてのサブジョブは、同じ xJCL 定義を使用して実行され、各サブジョブ・インスタンスは、個別の代替プロパティーでパラメーター化できます。
論理トランザクションは、パラレル・ジョブの実行を測定する作業単位区分です。そのライフサイクルは、パラレル・ジョブのサブジョブのライフサイクルを合わせた長さに一致します。拡張メカニズムによって、コミットおよびロールバック目的で、アプリケーション管理のリソースをこの作業単位の有効範囲で制御できるようにカスタマイズできます。
パラレル・ジョブのジョブ名は、最上位ジョブを定義する xJCL で指定されます。 最上位ジョブの xJCL は、ファイル・システムまたは Compute Grid ジョブ・リポジトリーを起点とすることができます。ジョブ名は、標準置換プロパティー表記を使用してパラメーター化できます: <job name="${jobname}"… >。
ジョブ ID は、ジョブ名にシステム生成のシーケンス番号を連結して形成されます。ジョブ名とシーケンス番号との間は、コロンで区切ります。サブジョブのジョブ名は、パラレル・ジョブのジョブ ID になります。サブジョブの xJCL の起点とできるのは、Compute Grid ジョブ・リポジトリーに限られます。サブジョブの xJCL では、ジョブ名代替プロパティーを指定する必要があります: <job name=”${jobname}” … >