Class ResumePointManager
- All Implemented Interfaces:
Initializable
正常に処理できたポイントは「0」が初期値となる。 よって、レジューム機能を使用する場合は、先行ジョブで対象リクエストの正常に処理できたポイントをゼロクリアしておくこと。 正常に処理できたポイントに負数を設定することは許容しない。もし負数が設定された場合は、例外をスローして処理を終了する。
本クラスは、リポジトリで管理されることを想定しており、 コンポーネント設定ファイルに設定された実行管理テーブルのスキーマ情報をもとにデータベースアクセスを行う。 また、本クラスはリポジトリの機能を用いて初期化することを想定しているので、コンポーネント設定ファイルに初期化の設定を行うこと。
レジューム機能は、デフォルトでは全リクエストに対して無効となっている。
全リクエストに対するレジューム機能を有効にする場合は、resumableプロパティにtrueを設定すること。
また、全リクエストに対するレジューム機能が有効な場合に、特定のリクエストに対するレジューム機能を無効にする場合は、excludingRequestListプロパティに無効にするリクエストIDのリストを設定すること。
(※全リクエストに対してレジューム機能を無効にする場合、実行管理テーブルを用意する必要はない)
レジューム機能を使用する場合は、必ずシングルスレッドで本クラスを実行すること。 マルチスレッドでの実行を検知した場合は、例外をスローして処理を終了する。
- Author:
- Masato Inoue
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected String正常に処理できたポイントを取得するためのSQLを取得する。protected String正常に処理できたポイントを保存するためのSQLを取得する。protected voidcheckPropertySet(String name, String value) プロパティの値が設定されていることを確認する。protected voidcheckSingleThreadExecution(String requestId) シングルスレッド実行であることを確認する。 マルチスレッドで、レジューム機能を使用しようとした場合、例外をスローするstatic ResumePointManager本クラスのインスタンスを取得する。void初期化時に、コンポーネント設定ファイルで設定されたプロパティの内容をチェックし、 問題がなければレジューム機能で使用するSQLを構築する。protected booleanisResumable(String requestId) レジューム機能が有効かどうかを取得する。intloadResumePoint(String requestId) 実行管理テーブルから正常に処理できたポイントを取得する。voidsaveResumePoint(String requestId, int resumePoint) 正常に処理できたポイントを保存する。setDbTransactionName(String dbTransactionName) データベースリソース名を設定する。setExcludingRequestList(List<String> excludingRequestList) レジューム機能を無効にするリクエストIDのリストを設定する。setRequestIdColumnName(String requestIdColumnName) リクエストIDの物理カラム名を設定する。setResumable(boolean isResumable) レジューム機能を有効にするかどうかを設定する。setResumePointColumnName(String resumePointColumnName) 正常に処理できたポイントの物理カラム名を設定する。setTableName(String tableName) 実行管理テーブルのテーブル名を設定する。
-
Constructor Details
-
ResumePointManager
public ResumePointManager()
-
-
Method Details
-
getInstance
本クラスのインスタンスを取得する。- Returns:
ResumePointManagerのインスタンス
-
initialize
public void initialize()初期化時に、コンポーネント設定ファイルで設定されたプロパティの内容をチェックし、 問題がなければレジューム機能で使用するSQLを構築する。- Specified by:
initializein interfaceInitializable
-
checkPropertySet
プロパティの値が設定されていることを確認する。- Parameters:
name- プロパティ名value- プロパティの値- Throws:
IllegalStateException- プロパティが設定されていない場合
-
loadResumePoint
実行管理テーブルから正常に処理できたポイントを取得する。レジューム機能が無効に設定されている場合は、固定で0を返却する。
正常に処理できたポイントを取得できなかった場合は、例外をスローする。
また、取得した正常に処理できたポイントが負数の場合も、例外をスローする。- Parameters:
requestId- リクエストID- Returns:
- 正常に処理できたポイント
-
checkSingleThreadExecution
シングルスレッド実行であることを確認する。 マルチスレッドで、レジューム機能を使用しようとした場合、例外をスローする- Parameters:
requestId- リクエストID- Throws:
IllegalStateException- マルチスレッド実行の場合
-
saveResumePoint
正常に処理できたポイントを保存する。レジューム機能が無効に設定されている場合は、正常に処理できたポイントの保存処理は行わない。 また、正常に処理できたポイントの保存に失敗した場合は、例外をスローする。
- Parameters:
requestId- リクエストIDresumePoint- 正常に処理できたポイント
-
isResumable
レジューム機能が有効かどうかを取得する。具体的には、以下の条件をすべて満たす場合にレジューム機能が有効だと判断する。
isResumableプロパティがtrue- 引数のリクエストIDが、
excludingRequestListプロパティに設定されたリストに含まれない
- Parameters:
requestId- リクエストID- Returns:
- isResumable レジューム機能が有効な場合、true
-
buildLoadResumePointSql
正常に処理できたポイントを取得するためのSQLを取得する。- Returns:
- 正常に処理できたポイントを読み込むためのSQL
-
buildSaveResumePointSql
正常に処理できたポイントを保存するためのSQLを取得する。- Returns:
- 正常に処理できたポイントを保存するためのSQL
-
setTableName
実行管理テーブルのテーブル名を設定する。- Parameters:
tableName- tableName テーブル名- Returns:
- このオブジェクト自体
-
setRequestIdColumnName
リクエストIDの物理カラム名を設定する。- Parameters:
requestIdColumnName- requestIdColumnName リクエストIDの物理カラム名- Returns:
- このオブジェクト自体
-
setResumePointColumnName
正常に処理できたポイントの物理カラム名を設定する。- Parameters:
resumePointColumnName- resumePointColumnName 正常に処理できたポイントの物理カラム名- Returns:
- このオブジェクト自体
-
setResumable
レジューム機能を有効にするかどうかを設定する。- Parameters:
isResumable- レジューム機能を有効にする場合、trueを設定する- Returns:
- このオブジェクト自体
-
setExcludingRequestList
レジューム機能を無効にするリクエストIDのリストを設定する。- Parameters:
excludingRequestList- レジューム機能を無効にするリクエストIDのリスト- Returns:
- このオブジェクト自体
-
setDbTransactionName
データベースリソース名を設定する。- Parameters:
dbTransactionName- データベースリソース名- Returns:
- このオブジェクト自体
-