目次 > 第2章 バッチフレームワークチュートリアル > 2.2 データベースアクセス機能を用いた単純なジョブ > 2.2.6 ジョブ後処理の実装

2.2.6 ジョブ後処理の実装

本節では、ジョブ後処理の実装方法について説明する。

処理内容

2.2.6 ジョブ後処理の実装

  1. ジョブコンテキストより運用日付と処理件数を取得する。
  2. “残高履歴テーブル”に履歴情報を追加する。

設計情報例

ジョブ定義例

ジョブ後処理

サポート処理定義例

ジョブサポートロジック(後処理)

手順

1. “ZandakaRirekiData.java”を作成

SQLのパラメータを格納するクラスを作成する。

  1. パッケージエクスプローラビューで、“jp.terasoluna.batch.tutoral.uc0001.jb0001”パッケージを右クリックする。
  2. 「新規」→「クラス」を選択し、名前に“ZandakaRirekiData”を入力し、「終了」を押下する。
  3. “ZandakaRirekiData.java”を以下のように作成する。
/* 
 * Copyright (c) 2007 NTT DATA Corporation
 * 
 */
package jp.terasoluna.batch.tutorial.uc0001.jb0001;

import java.util.Date;

/**
 * “残高履歴テーブル”の結果格納クラス
 */
public class ZandakaRirekiData {

   /**
    * 処理日
    */
   private Date syoribi = null;
   
   /**
    * 処理件数
    */
   private int syorikensu = 0;
   
   /**
    * 処理日を返却する。
    * @return 処理日
    */
   public Date getSyoribi() {
       return syoribi;
   }
    
   /**
    * 処理日を設定する。
    * @param syoribi 処理日
    */
   public void setSyoribi(Date syoribi) {
       this.syoribi = syoribi;
   }
   
   /**
    * 処理件数を返却する。
    * @return 処理件数
    */
   public int getSyorikensu() {
       return syorikensu;
   }
   
   /**
    * 処理件数を設定する。
    * @param syorikensu 処理件数
    */
   public void setSyorikensu(int syorikensu) {
       this.syorikensu = syorikensu;
   }
   
}

2. “UC0001_sqlMap.xml”を編集

“残高履歴テーブル”にレコードを追加するSQLを定義する。
“parameterClass”には手順1で作成した“ZandakaRirekiData”を指定する。以下の定義を<sqlMap></sqlMap>内に追加する。

<insert id="insertZandakaRireki" parameterClass="jp.terasoluna.batch.tutorial.uc0001.jb0001.ZandakaRirekiData">
    INSERT INTO ZANDAKARIREKITABLE(SYORIBI, SYORIKENSU) VALUES (#syoribi#, #syorikensu#)
</insert>

3. “DBJobPostLogic.java”を作成

ジョブ後処理クラスを作成する。必ず、“jp.terasoluna.fw.batch.openapi.SupportLogic”インタフェースを実装すること。
また、型パラメータには「2.2.2 ジョブコンテキストの実装」の手順1で作成した“JB0001JobContext”を指定する。

  1. パッケージエクスプローラビューで、“jp.terasoluna.batch.tutorial.uc0001.jb0001”パッケージを右クリックする。
  2. 「新規」→「クラス」を選択し、名前に“DBJobPostLogic”を入力し、「終了」を押下する。
  3. “DBJobPostLogic.java”を以下のように作成する。
/* 
 * Copyright (c) 2007 NTT DATA Corporation
 * 
 */
package jp.terasoluna.batch.tutorial.uc0001.jb0001;

import java.util.Date;

import jp.terasoluna.batch.tutorial.uc0001.JB0001JobContext;
import jp.terasoluna.fw.batch.openapi.BLogicResult;
import jp.terasoluna.fw.batch.openapi.ReturnCode;
import jp.terasoluna.fw.batch.openapi.SupportLogic;
import jp.terasoluna.fw.dao.UpdateDAO;

/**
 * ジョブ後処理クラス。
 */
public class DBJobPostLogic implements SupportLogic<JB0001JobContext> {
   
    /**
     * DAOクラス。
     * Springによりインスタンス生成され設定される。
     */
    private UpdateDAO updateDAO = null;
    
    /**
     * ジョブ後処理を実行する。
     * @param jobContext ジョブコンテキスト
     */
    public BLogicResult execute(JB0001JobContext jobContext) {

        //“残高履歴テーブル”にレコードを追加する。
        Date unyohiduke = jobContext.getUnyohiduke();
        int count = jobContext.getCount();
        
        ZandakaRirekiData rireki = new ZandakaRirekiData();
        rireki.setSyoribi(unyohiduke);
        rireki.setSyorikensu(count);
    
        updateDAO.execute("UC0001.insertZandakaRireki", rireki);
    
        //ビジネスロジック処理結果オブジェクトを返却する。
        BLogicResult result = new BLogicResult(ReturnCode.NORMAL_CONTINUE);
        return result;
    }

    /**
     * UpdateDAOを設定する。
     * @param updateDAO 設定するUpdateDAO
     */
    public void setUpdateDAO(UpdateDAO updateDAO) {
        this.updateDAO = updateDAO;
    }

}

4. “JB0001.xml”を編集

“JB0001.xml”にジョブ後処理の定義を追加する。
手順3で作成した“DBJobPostLogic”を指定するため、以下の定義を<beans></beans>内に追加する。

<!-- ジョブ後処理 -->
<util:list id="jobPostLogicList">
    <bean class="jp.terasoluna.batch.tutorial.uc0001.jb0001.DBJobPostLogic">
        <property name="updateDAO" ref="updateDAO" />
    </bean>
</util:list>

“jobPostLogicList”はBatch版が規定する固定のBeanであり、ジョブ後処理クラスは“sourceList”のリストプロパティとして定義する。

参考資料
  • 『BB-01 データベースアクセス機能』
  • 『BD-01 ビジネスロジック実行機能』

次項:2.2.7 起動と確認

Copyright (C) 2007 NTT DATA CORPORATION