パラレル・ジョブ管理アプリケーションの開発

トランザクション・バッチ・アプリケーションをジョブとして作成し、そのジョブを複数の従属ジョブに分割して、従属ジョブがそれぞれ独立してパラレルに実行できるようにすることができます。 パラレル・ジョブ・マネージャーを使用して、トランザクション・バッチ・ジョブのサブミットと管理を行います。

事前処理

移行ユーザーの場合: 以前のバージョンの WebSphere Batch 用に作成されたパラレル・ジョブ管理アプリケーションは、 WebSphere® Application Server バージョン 8.5でそのまま実行できます。 ただし、2 つの SPI 実装について、2 つの xJCL ファイル、1 つの xd.spi.properties ファイル、および 1 つの共有ライブラリーを構成する場合と同じ手順に従ってください。 アプリケーションをそのまま使用する場合は、以下の手順を実行しないでください。
移行ユーザーの場合: パラレル・ジョブ管理アプリケーションを WebSphere Application Server バージョン 8.5にマイグレーションできます。 API 実装クラスをアプリケーション EAR に追加します。 以下の手順で説明されているように xJCL を再作成します。

このタスクの概要

ジョブの従属ジョブを作成して、それらの従属ジョブを独立してパラレルに稼働させることができます。 最初に、ジョブを従属ジョブに分割する基準を作成します。 次に、単純なバッチ・アプリケーションを作成し、そのアプリケーションを分割してパラレルな断片にします。 最後に、別の手順で該当手順に従ってアプリケーションをデプロイできるように、従属ジョブ用の xJCL を作成します。

手順

  1. ジョブを従属ジョブに分割する基準を作成します。

    例えば、銀行の支店に基づいてジョブを従属ジョブに分割します。つまり、各支店の場所に基づいて、支店ごとに従属ジョブがあるようにします。所定の銀行の支店で、従属ジョブによって、各口座の日次トランザクションに基づき、一日の終わりに各口座の残高を計算します。

  2. 情報を処理する単純なバッチ・アプリケーションをジョブとして作成します。
  3. アプリケーションを分割してパラレルな断片にします。

    Parameterizer API を実装して、バッチ・アプリケーションのジョブを複数の従属ジョブに分割します。

  4. オプション: 実行中の従属ジョブに関する情報を収集します。

    情報を収集するには、SubJobCollector API を使用します。

  5. オプション: 従属ジョブについて収集された情報を分析します。

    情報を分析するには、SubJobAnalyzer API を使用します。

  6. xJCL を作成します。

    単純なバッチ・アプリケーションに対して作成したジョブの xJCL で始めます。

    1. job エレメントの子として run エレメントを指定します。
      1. run エレメントの instances 属性を multiple に設定します。
      2. run エレメントの Java™ 仮想マシン (JVM) 属性を single または multipleに設定します。

        同じ JVM ですべての従属ジョブを実行する場合は、single 属性を使用します。 任意の有効な JVM で従属ジョブを実行するには、multiple 属性を使用します。

      <run instances="multiple" jvm="multiple">

      ステップの子として run エレメントを指定できます。 その場合、ステップはパラレル・ジョブとして実行されます。 ステップ xJCL の内容が、1 ステップの従属ジョブ xJCL の生成に使用されます。

    2. PJM API ごとに、run エレメントの子として 1 つの prop エレメントを指定します。
      1. name 属性に PJM API を指定します。
        PJM に対して次の API が有効です。
        • com.ibm.websphere.batch.parallel.parameterizer
        • com.ibm.websphere.batch.parallel.synchronization
        • com.ibm.websphere.batch.parallel.subjobanalyzer
        • com.ibm.websphere.batch.parallel.subjobcollector
      2. value 属性を API の名前に設定します。
    3. 従属ジョブ名を指定するための prop エレメントを組み込みます。
      1. name 属性を com.ibm.wsspi.batch.parallel.subjob.name に設定します。
      2. value 属性をジョブの名前に設定します。
    4. オプション: ジョブ・カウントを示す prop エレメントを含めます。
      1. name 属性を parallel.jobcount に設定します。
      2. value 属性をジョブ・カウントの値に設定します。
    5. その他のジョブ・レベルのプロパティーを指定します。
    <run instances="multiple" jvm="multiple">
        <props>
            <prop name="com.ibm.websphere.batch.parallel.parameterizer" 
             value="com.ibm.websphere.samples.spi.MailerParameterizer"/>
            <prop name="com.ibm.websphere.batch.parallel.synchronization" 
             value="com.ibm.websphere.samples.spi.MailerTXSynchronization"/>
            <prop name="com.ibm.websphere.batch.parallel.subjobanalyzer" 
             value="com.ibm.websphere.samples.spi.MailerSubJobAnalyzer"/>
            <prop name="com.ibm.websphere.batch.parallel.subjobcollector" 
             value="com.ibm.websphere.samples.spi.MailerSubJobCollector"/>
            
            <prop name="com.ibm.wsspi.batch.parallel.subjob.name" 
             value="MailerSampleSubJob" />
    			
            <!-- The count of parallel sub jobs to be submitted -->
            <prop name="parallel.jobcount" value="3" />
    
        </props>
      </run>
  7. xJCL 内の各ステップに、ステップ・レベルの同じ 3 つのプロパティーを組み込みます。
    <prop name="com.ibm.wsspi.batch.parallel.jobname" value="${parallel.jobname}" />
    <prop name="com.ibm.wsspi.batch.parallel.logicalTXID" value="${logicalTXID}" />
    <prop name="com.ibm.wsspi.batch.parallel.jobmanager" value="${parallel.jobmanager}" />

結果

独立してパラレルに実行可能な従属ジョブからなるジョブを作成しました。

次の作業

他のバッチ・アプリケーションと同様に、作成したアプリケーションをデプロイします。