Package nablarch.fw.reader
Class ResumeDataReader<TData>
java.lang.Object
nablarch.fw.reader.ResumeDataReader<TData>
- Type Parameters:
TData
- このクラスが読み込んだデータの型
- All Implemented Interfaces:
DataReader<TData>
ファイルを読み込むデータリーダをラップして、レジューム機能を追加するデータリーダ。
本クラスは、ラップしたデータリーダのread
メソッドの実行回数を、
正常に処理できたポイントとして実行管理テーブルに保存する。
正常に処理できたポイントは業務処理がコミットされるタイミングで保存される。
業務処理が失敗しトランザクションがロールバックされる場合、正常に処理できたポイントの保存は行われない。
障害発生時などに処理を再実行する場合、本クラスは正常に処理できたポイントまでのファイル読み込み(業務処理)をスキップし、
再開ポイント(正常に処理できたポイントの次のポイント)からファイル読み込みを再開する。
そのため、再開ポイント以前のデータに対してパッチを当てた際は、正常に処理できたポイントを0クリアする必要がある。
なお、FileBatchAction
を継承したバッチ業務アクションを作成する場合は、
FileBatchAction
がデフォルトでValidatableFileDataReader
をラップしたResumeDataReader
を生成するので、
アプリケーションプログラマが上記2つのオブジェクトを生成するコードを実装する必要はない。
- Author:
- Masato Inoue
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface nablarch.fw.DataReader
DataReader.NoMoreRecord
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close
(ExecutionContext ctx) このリーダの利用を停止し、内部的に保持している各種リソースを解放する。boolean
hasNext
(ExecutionContext ctx) 次に読み込むデータが存在するかどうかを返却する。protected int
正常に処理できたポイントを取得する。read
(ExecutionContext ctx) レジューム機能を追加するデータリーダからデータを読み込む。protected void
レジューム機能が有効になっている場合、正常に処理できたポイントまでのレジュームを行う。protected void
正常に処理できたポイントを保存する。setSourceReader
(DataReader<TData> sourceReader) レジューム機能を追加するデータリーダを設定する。
-
Constructor Details
-
ResumeDataReader
public ResumeDataReader()
-
-
Method Details
-
read
レジューム機能を追加するデータリーダからデータを読み込む。 データを読み込んだ回数を正常に処理できたポイントとして実行管理テーブルに保存し、 処理再開時にはその次のポイントから読み込みを再開する。
トランザクションループ制御ハンドラの設定により一定件数ごとにコミットを行なっている場合は、 コミット前の最後の処理で正常に処理できたポイントを実行管理テーブルに保存する。
次に読み込むデータが存在しない場合はnull
を返す。- Specified by:
read
in interfaceDataReader<TData>
- Parameters:
ctx
- 実行コンテキスト- Returns:
- 入力データオブジェクト
-
hasNext
次に読み込むデータが存在するかどうかを返却する。- Specified by:
hasNext
in interfaceDataReader<TData>
- Parameters:
ctx
- 実行コンテキスト- Returns:
- 次に読み込むデータが存在する場合は
true
-
close
このリーダの利用を停止し、内部的に保持している各種リソースを解放する。- Specified by:
close
in interfaceDataReader<TData>
- Parameters:
ctx
- 実行コンテキスト
-
readToResumePoint
レジューム機能が有効になっている場合、正常に処理できたポイントまでのレジュームを行う。- Parameters:
ctx
- 実行コンテキスト- Throws:
IllegalStateException
- 次に読み込むデータが存在しない場合
-
loadResumePoint
protected int loadResumePoint()正常に処理できたポイントを取得する。 レジューム機能が無効になっている場合は0を返す。- Returns:
- 正常に処理できたポイント
-
saveResumePoint
protected void saveResumePoint()正常に処理できたポイントを保存する。 レジューム機能が無効になっている場合は何もしない。 -
setSourceReader
レジューム機能を追加するデータリーダを設定する。- Parameters:
sourceReader
- レジューム機能を追加するデータリーダ- Returns:
- このオブジェクト自体
-