@Published(tag="architect") public class ResumePointManager extends java.lang.Object implements Initializable
正常に処理できたポイントは「0」が初期値となる。 よって、レジューム機能を使用する場合は、先行ジョブで対象リクエストの正常に処理できたポイントをゼロクリアしておくこと。 正常に処理できたポイントに負数を設定することは許容しない。もし負数が設定された場合は、例外をスローして処理を終了する。
本クラスは、リポジトリで管理されることを想定しており、 コンポーネント設定ファイルに設定された実行管理テーブルのスキーマ情報をもとにデータベースアクセスを行う。 また、本クラスはリポジトリの機能を用いて初期化することを想定しているので、コンポーネント設定ファイルに初期化の設定を行うこと。
レジューム機能は、デフォルトでは全リクエストに対して無効となっている。
全リクエストに対するレジューム機能を有効にする場合は、resumableプロパティにtrueを設定すること。
また、全リクエストに対するレジューム機能が有効な場合に、特定のリクエストに対するレジューム機能を無効にする場合は、excludingRequestListプロパティに無効にするリクエストIDのリストを設定すること。
(※全リクエストに対してレジューム機能を無効にする場合、実行管理テーブルを用意する必要はない)
レジューム機能を使用する場合は、必ずシングルスレッドで本クラスを実行すること。 マルチスレッドでの実行を検知した場合は、例外をスローして処理を終了する。
Initializable
Modifier and Type | Method and Description |
---|---|
protected java.lang.String |
buildLoadResumePointSql()
正常に処理できたポイントを取得するためのSQLを取得する。
|
protected java.lang.String |
buildSaveResumePointSql()
正常に処理できたポイントを保存するためのSQLを取得する。
|
protected void |
checkPropertySet(java.lang.String name,
java.lang.String value)
プロパティの値が設定されていることを確認する。
|
protected void |
checkSingleThreadExecution(java.lang.String requestId)
シングルスレッド実行であることを確認する。
マルチスレッドで、レジューム機能を使用しようとした場合、例外をスローする
|
static ResumePointManager |
getInstance()
本クラスのインスタンスを取得する。
|
void |
initialize()
初期化時に、コンポーネント設定ファイルで設定されたプロパティの内容をチェックし、
問題がなければレジューム機能で使用するSQLを構築する。
|
protected boolean |
isResumable(java.lang.String requestId)
レジューム機能が有効かどうかを取得する。
|
int |
loadResumePoint(java.lang.String requestId)
実行管理テーブルから正常に処理できたポイントを取得する。
|
void |
saveResumePoint(java.lang.String requestId,
int resumePoint)
正常に処理できたポイントを保存する。
|
ResumePointManager |
setDbTransactionName(java.lang.String dbTransactionName)
データベースリソース名を設定する。
|
ResumePointManager |
setExcludingRequestList(java.util.List excludingRequestList)
レジューム機能を無効にするリクエストIDのリストを設定する。
|
ResumePointManager |
setRequestIdColumnName(java.lang.String requestIdColumnName)
リクエストIDの物理カラム名を設定する。
|
ResumePointManager |
setResumable(boolean isResumable)
レジューム機能を有効にするかどうかを設定する。
|
ResumePointManager |
setResumePointColumnName(java.lang.String resumePointColumnName)
正常に処理できたポイントの物理カラム名を設定する。
|
ResumePointManager |
setTableName(java.lang.String tableName)
実行管理テーブルのテーブル名を設定する。
|
public static ResumePointManager getInstance()
ResumePointManager
のインスタンスpublic void initialize()
initialize
in interface Initializable
protected void checkPropertySet(java.lang.String name, java.lang.String value)
name
- プロパティ名value
- プロパティの値java.lang.IllegalStateException
- プロパティが設定されていない場合public int loadResumePoint(java.lang.String requestId)
レジューム機能が無効に設定されている場合は、固定で0を返却する。
正常に処理できたポイントを取得できなかった場合は、例外をスローする。
また、取得した正常に処理できたポイントが負数の場合も、例外をスローする。
requestId
- リクエストIDprotected void checkSingleThreadExecution(java.lang.String requestId)
requestId
- リクエストIDjava.lang.IllegalStateException
- マルチスレッド実行の場合public void saveResumePoint(java.lang.String requestId, int resumePoint)
レジューム機能が無効に設定されている場合は、正常に処理できたポイントの保存処理は行わない。 また、正常に処理できたポイントの保存に失敗した場合は、例外をスローする。
requestId
- リクエストIDresumePoint
- 正常に処理できたポイントprotected boolean isResumable(java.lang.String requestId)
具体的には、以下の条件をすべて満たす場合にレジューム機能が有効だと判断する。
ResumePointManager.isResumable
プロパティがtrueResumePointManager.excludingRequestList
プロパティに設定されたリストに含まれないrequestId
- リクエストIDprotected java.lang.String buildLoadResumePointSql()
protected java.lang.String buildSaveResumePointSql()
public ResumePointManager setTableName(java.lang.String tableName)
tableName
- tableName テーブル名public ResumePointManager setRequestIdColumnName(java.lang.String requestIdColumnName)
requestIdColumnName
- requestIdColumnName リクエストIDの物理カラム名public ResumePointManager setResumePointColumnName(java.lang.String resumePointColumnName)
resumePointColumnName
- resumePointColumnName 正常に処理できたポイントの物理カラム名public ResumePointManager setResumable(boolean isResumable)
isResumable
- レジューム機能を有効にする場合、trueを設定するpublic ResumePointManager setExcludingRequestList(java.util.List excludingRequestList)
excludingRequestList
- レジューム機能を無効にするリクエストIDのリストpublic ResumePointManager setDbTransactionName(java.lang.String dbTransactionName)
dbTransactionName
- データベースリソース名