All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nablarch.fw.action.BatchAction Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
package nablarch.fw.action;

import nablarch.core.util.annotation.Published;
import nablarch.fw.DataReader;
import nablarch.fw.DataReaderFactory;
import nablarch.fw.ExecutionContext;
import nablarch.fw.Handler;
import nablarch.fw.Result;

/**
 * 標準的なバッチ処理における業務処理の基本実装クラス。
 * 

* バッチ処理方式では、以下のインタフェースを実装する必要がある。 *

 * 1. {@link Handler} or doXXXX() メソッド (Method-Binding使用時)
 * 2. {@link DataReaderFactory}(必須)
 * 3. {@link nablarch.fw.handler.ExecutionHandlerCallback}(任意)
 * 
* 以下の擬似コードは、本クラスの各メソッドが * フレームワークによって呼び出される順序を表したものである。 * *
 * CommandLine      command;   // バッチ起動時のコマンドライン
 * ExecutionContext ctx;       // 実行コンテキスト
 * 
 * initialize(command, ctx);                       // バッチ処理開始前に一度だけ呼ばれる。
 * DataReader reader = createReader(ctx);   // バッチ処理開始前に一度だけ呼ばれる。
 * 
 * Result result = null;
 * 
 * try {
 *     while(reader.hasNext()) {               // データリーダ上のレコードが終端に達するまで繰り返す。
 * 
 *         TData data = reader.read(ctx);      // 業務トランザクション1件分の入力データを読み込む。
 * 
 *        try {
 *             result = handle(data, ctx);     // 入力データ1件毎に繰り返し呼ばれる。
 *             commit();                       // 業務トランザクションをコミット
 *             transactionSuccess(data, ctx);  // 業務トランザクションがコミットされた後で呼ばれる。
 * 
 *         } catch(e) {
 *             rollback();                     // 業務トランザクションをロールバック
 *             transactionFailure(data, ctx);  // 業務トランザクションがロールバックされた後で呼ばれる。
 *             throw e;
 *         }
 *     }
 * 
 * } catch(e) {
 *     error(e, ctx);                           // バッチがエラー終了した場合に、一度だけ呼ばれる。
 * 
 * } finally {
 *     terminate(result, ctx)                   // バッチが終了した後、一度だけ呼ばれる。
 * }
 * 
* * また、DBアクセス処理に関するテンプレートメソッドを実装した {@link nablarch.core.db.support.DbAccessSupport} * を本クラスが継承している{@link BatchActionBase}が実装しているため、簡便に業務処理を実装することができる。 * * @param 業務処理が処理する入力データの型 * * @author Iwauo Tajima */ @Published public abstract class BatchAction extends BatchActionBase implements Handler, DataReaderFactory { /** * {@code BatchAction}を生成する。 */ @Published public BatchAction() { super(); } // -------------------------------------------------- Required to implement /** * データリーダによって読み込まれた1件分の入力データに対する業務処理を実行する。 *

* ここで実行される業務処理は原子性を保証される。 * * @param ctx 実行コンテキスト * @param inputData 入力データ * @return 処理結果情報オブジェクト */ public abstract Result handle(D inputData, ExecutionContext ctx); /** * このタスクの入力データを読み込むデータリーダを生成して返す。 * @param ctx 実行コンテキスト * @return データリーダ */ public abstract DataReader createReader(ExecutionContext ctx); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy