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

2.3.5 ジョブ後処理の実装

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

処理内容

2.3.5 ジョブ後処理の実装

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

“履歴ファイル”は“rireki.csv”として“terasoluna-batch-blank\outputfile”内に作成される。
出力先フォルダが存在しない場合は「2.1 チュートリアル学習環境の整備 (8)ファイルの出力先を作成」を参照し、 作成しておくこと。

設計情報例

ジョブ定義例

ジョブ後処理

サポート処理定義例

ジョブサポートロジック

外部I/F定義例

外部I/F定義3

手順

1. “RirekiFileData.java”を作成

“履歴ファイル”のファイル行オブジェクトクラスを作成する。
このクラスは“履歴ファイル”の出力パラメータとなる。

  1. パッケージエクスプローラビューで、“jp.terasoluna.batch.tutorial.uc0001.jb0002”パッケージを右クリックする。
  2. 「新規」→「クラス」を選択し、名前に“RirekiFileData”を入力し、「終了」を押下する。
  3. “RirekiFileData.java”を以下のように作成する。ここでは定義情報を次のように設定する。
    • カラムの囲み文字はダブルクォーテーションを使用する
    • 同名のファイルが存在する場合は同ファイルに追記する
    • “処理日”は“yyyy/MM/dd”形式で出力する
/* 
 * Copyright (c) 2007 NTT DATA Corporation
 * 
 */
package jp.terasoluna.batch.tutorial.uc0001.jb0002;

import java.util.Date;

import jp.terasoluna.fw.file.annotation.FileFormat;
import jp.terasoluna.fw.file.annotation.OutputFileColumn;

/**
 * “履歴ファイル”用ファイル行オブジェクト。
 */
@FileFormat(overWriteFlg = false, encloseChar='\"')
public class RirekiFileData {
 
    /**
     * 処理日
     */
    @OutputFileColumn(columnIndex = 0, columnFormat = "yyyy/MM/dd")
    private Date syoribi = null;
    
    /**
     * 処理件数
     */
    @OutputFileColumn(columnIndex = 1)
    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. “FileJobPostLogic.java”を作成

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

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

import java.util.Date;

import jp.terasoluna.batch.tutorial.uc0001.JB0002JobContext;
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.file.dao.FileLineWriter;
import jp.terasoluna.fw.file.dao.FileUpdateDAO;

/**
 * ジョブ後処理クラス。
 */
public class FileJobPostLogic implements SupportLogic<JB0002JobContext> {

    /**
     * DAOクラス。
     * Springによりインスタンス生成され設定される。
     */
    private FileUpdateDAO updateDAO = null;
  
    /**
     * 履歴ファイルの名前。
     * Springによりインスタンス生成され設定される。
     */
    private String outputFileName = null;
    
    /**
     * ジョブ後処理を実行する。
     * @param jobContext ジョブコンテキスト
     */
    public BLogicResult execute(JB0002JobContext jobContext) {
    
        //履歴をファイルに出力する。
        Date unyohiduke = jobContext.getUnyohiduke();
        int count = jobContext.getCount();
        
        RirekiFileData rireki = new RirekiFileData();
        rireki.setSyoribi(unyohiduke);
        rireki.setSyorikensu(count);
            
        FileLineWriter<RirekiFileData> fileLineWriter
                = updateDAO.execute(outputFileName,RirekiFileData.class);
    
        try {
            fileLineWriter.printDataLine(rireki);
        } finally {
            fileLineWriter.closeFile();
        }
        
        //ビジネスロジック処理結果オブジェクトを返却する。
        BLogicResult result = new BLogicResult(ReturnCode.NORMAL_CONTINUE);
        return result;
    }

    /**
     * FileUpdateDAOを設定する。
     * @param updateDAO 設定するFileUpdateDAO
     */
    public void setUpdateDAO(FileUpdateDAO updateDAO) {
        this.updateDAO = updateDAO;
    }
    
    /**
     * 履歴ファイル名を設定する
     * @param outputFileName ファイル名
     */
    public void setOutputFileName(String outputFileName){
        this.outputFileName = outputFileName;
    }
}

3. “JB0002.xml”を編集

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

<!-- ジョブ後処理 -->
<util:list id="jobPostLogicList">
    <bean class="jp.terasoluna.batch.tutorial.uc0001.jb0002.FileJobPostLogic">
        <property name="updateDAO" ref="csvFileUpdateDAO" />
        <property name="outputFileName" value="outputfile/rireki.csv"/>
    </bean>
</util:list>
参考資料
  • 『BC-01 ファイルアクセス機能』
  • 『BD-01 ビジネスロジック実行機能』

次項:2.3.6 起動と確認

Copyright (C) 2007 NTT DATA CORPORATION