Package nablarch.fw.action
Class BatchAction<D>
java.lang.Object
nablarch.core.db.support.DbAccessSupport
nablarch.fw.action.BatchActionBase<D>
nablarch.fw.action.BatchAction<D>
- Type Parameters:
D
- 業務処理が処理する入力データの型
- All Implemented Interfaces:
DataReaderFactory<D>
,Handler<D,
,Result> ExecutionHandlerCallback<CommandLine,
,Result> TransactionEventCallback<D>
- Direct Known Subclasses:
AsyncMessageReceiveAction
,AsyncMessageSendAction
,MailSender
,NoInputDataBatchAction
@Published
public abstract class BatchAction<D>
extends BatchActionBase<D>
implements Handler<D,Result>, DataReaderFactory<D>
標準的なバッチ処理における業務処理の基本実装クラス。
バッチ処理方式では、以下のインタフェースを実装する必要がある。
1.以下の擬似コードは、本クラスの各メソッドが フレームワークによって呼び出される順序を表したものである。Handler
or doXXXX() メソッド (Method-Binding使用時) 2.DataReaderFactory
(必須) 3.ExecutionHandlerCallback
(任意)
CommandLine command; // バッチ起動時のコマンドライン ExecutionContext ctx; // 実行コンテキスト initialize(command, ctx); // バッチ処理開始前に一度だけ呼ばれる。 DataReaderまた、DBアクセス処理に関するテンプレートメソッドを実装した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) // バッチが終了した後、一度だけ呼ばれる。 }
DbAccessSupport
を本クラスが継承しているBatchActionBase
が実装しているため、簡便に業務処理を実装することができる。-
Nested Class Summary
Nested classes/interfaces inherited from interface nablarch.fw.TransactionEventCallback
TransactionEventCallback.Provider<TData>
-
Field Summary
Fields inherited from interface nablarch.fw.TransactionEventCallback
REQUEST_DATA_REQUEST_SCOPE_KEY
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract DataReader<D>
このタスクの入力データを読み込むデータリーダを生成して返す。abstract Result
handle
(D inputData, ExecutionContext ctx) データリーダによって読み込まれた1件分の入力データに対する業務処理を実行する。Methods inherited from class nablarch.fw.action.BatchActionBase
error, errorInExecution, initialize, postExecution, preExecution, terminate, transactionAbnormalEnd, transactionFailure, transactionNormalEnd, transactionSuccess, writeErrorLog, writeFatalLog, writeLog
Methods inherited from class nablarch.core.db.support.DbAccessSupport
countByParameterizedSql, countByStatementSql, getParameterizedSqlStatement, getParameterizedSqlStatement, getSqlCStatement, getSqlPStatement, search
-
Constructor Details
-
BatchAction
BatchAction
を生成する。
-
-
Method Details
-
handle
データリーダによって読み込まれた1件分の入力データに対する業務処理を実行する。 ここで実行される業務処理は原子性を保証される。 -
createReader
このタスクの入力データを読み込むデータリーダを生成して返す。- Specified by:
createReader
in interfaceDataReaderFactory<D>
- Parameters:
ctx
- 実行コンテキスト- Returns:
- データリーダ
-