目次 > 第2章 バッチフレームワークチュートリアル > 2.2 データベースアクセス機能を用いた単純なジョブ > 2.2.6 ジョブ後処理の実装
2.2.6 ジョブ後処理の実装
本節では、ジョブ後処理の実装方法について説明する。
処理内容
- ジョブコンテキストより運用日付と処理件数を取得する。
- “残高履歴テーブル”に履歴情報を追加する。
設計情報例
ジョブ定義例
サポート処理定義例
手順
1. “ZandakaRirekiData.java”を作成
SQLのパラメータを格納するクラスを作成する。
- パッケージエクスプローラビューで、“jp.terasoluna.batch.tutoral.uc0001.jb0001”パッケージを右クリックする。
- 「新規」→「クラス」を選択し、名前に“ZandakaRirekiData”を入力し、「終了」を押下する。
- “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”を指定する。
- パッケージエクスプローラビューで、“jp.terasoluna.batch.tutorial.uc0001.jb0001”パッケージを右クリックする。
- 「新規」→「クラス」を選択し、名前に“DBJobPostLogic”を入力し、「終了」を押下する。
- “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 ビジネスロジック実行機能』