Class ResumePointManager

java.lang.Object
nablarch.fw.reader.ResumePointManager
All Implemented Interfaces:
Initializable

@Published(tag="architect") public class ResumePointManager extends Object implements Initializable
実行管理テーブルに格納されている、正常に処理できたポイントの参照・更新を行うクラス。

正常に処理できたポイントは「0」が初期値となる。 よって、レジューム機能を使用する場合は、先行ジョブで対象リクエストの正常に処理できたポイントをゼロクリアしておくこと。
正常に処理できたポイントに負数を設定することは許容しない。もし負数が設定された場合は、例外をスローして処理を終了する。

本クラスは、リポジトリで管理されることを想定しており、 コンポーネント設定ファイルに設定された実行管理テーブルのスキーマ情報をもとにデータベースアクセスを行う。 また、本クラスはリポジトリの機能を用いて初期化することを想定しているので、コンポーネント設定ファイルに初期化の設定を行うこと。

レジューム機能は、デフォルトでは全リクエストに対して無効となっている。
全リクエストに対するレジューム機能を有効にする場合は、resumableプロパティにtrueを設定すること。
また、全リクエストに対するレジューム機能が有効な場合に、特定のリクエストに対するレジューム機能を無効にする場合は、excludingRequestListプロパティに無効にするリクエストIDのリストを設定すること。
(※全リクエストに対してレジューム機能を無効にする場合、実行管理テーブルを用意する必要はない)

レジューム機能を使用する場合は、必ずシングルスレッドで本クラスを実行すること。 マルチスレッドでの実行を検知した場合は、例外をスローして処理を終了する。

See Also:
  • Constructor Details

    • ResumePointManager

      public ResumePointManager()
  • Method Details

    • getInstance

      public static ResumePointManager getInstance()
      本クラスのインスタンスを取得する。
      Returns:
      ResumePointManagerのインスタンス
    • initialize

      public void initialize()
      初期化時に、コンポーネント設定ファイルで設定されたプロパティの内容をチェックし、 問題がなければレジューム機能で使用するSQLを構築する。
      Specified by:
      initialize in interface Initializable
    • checkPropertySet

      protected void checkPropertySet(String name, String value) throws IllegalStateException
      プロパティの値が設定されていることを確認する。
      Parameters:
      name - プロパティ名
      value - プロパティの値
      Throws:
      IllegalStateException - プロパティが設定されていない場合
    • loadResumePoint

      public int loadResumePoint(String requestId)
      実行管理テーブルから正常に処理できたポイントを取得する。

      レジューム機能が無効に設定されている場合は、固定で0を返却する。

      正常に処理できたポイントを取得できなかった場合は、例外をスローする。
      また、取得した正常に処理できたポイントが負数の場合も、例外をスローする。

      Parameters:
      requestId - リクエストID
      Returns:
      正常に処理できたポイント
    • checkSingleThreadExecution

      protected void checkSingleThreadExecution(String requestId) throws IllegalStateException
      シングルスレッド実行であることを確認する。 マルチスレッドで、レジューム機能を使用しようとした場合、例外をスローする
      Parameters:
      requestId - リクエストID
      Throws:
      IllegalStateException - マルチスレッド実行の場合
    • saveResumePoint

      public void saveResumePoint(String requestId, int resumePoint)
      正常に処理できたポイントを保存する。

      レジューム機能が無効に設定されている場合は、正常に処理できたポイントの保存処理は行わない。 また、正常に処理できたポイントの保存に失敗した場合は、例外をスローする。

      Parameters:
      requestId - リクエストID
      resumePoint - 正常に処理できたポイント
    • isResumable

      protected boolean isResumable(String requestId)
      レジューム機能が有効かどうかを取得する。

      具体的には、以下の条件をすべて満たす場合にレジューム機能が有効だと判断する。

      • isResumableプロパティがtrue
      • 引数のリクエストIDが、excludingRequestListプロパティに設定されたリストに含まれない

      Parameters:
      requestId - リクエストID
      Returns:
      isResumable レジューム機能が有効な場合、true
    • buildLoadResumePointSql

      protected String buildLoadResumePointSql()
      正常に処理できたポイントを取得するためのSQLを取得する。
      Returns:
      正常に処理できたポイントを読み込むためのSQL
    • buildSaveResumePointSql

      protected String buildSaveResumePointSql()
      正常に処理できたポイントを保存するためのSQLを取得する。
      Returns:
      正常に処理できたポイントを保存するためのSQL
    • setTableName

      public ResumePointManager setTableName(String tableName)
      実行管理テーブルのテーブル名を設定する。
      Parameters:
      tableName - tableName テーブル名
      Returns:
      このオブジェクト自体
    • setRequestIdColumnName

      public ResumePointManager setRequestIdColumnName(String requestIdColumnName)
      リクエストIDの物理カラム名を設定する。
      Parameters:
      requestIdColumnName - requestIdColumnName リクエストIDの物理カラム名
      Returns:
      このオブジェクト自体
    • setResumePointColumnName

      public ResumePointManager setResumePointColumnName(String resumePointColumnName)
      正常に処理できたポイントの物理カラム名を設定する。
      Parameters:
      resumePointColumnName - resumePointColumnName 正常に処理できたポイントの物理カラム名
      Returns:
      このオブジェクト自体
    • setResumable

      public ResumePointManager setResumable(boolean isResumable)
      レジューム機能を有効にするかどうかを設定する。
      Parameters:
      isResumable - レジューム機能を有効にする場合、trueを設定する
      Returns:
      このオブジェクト自体
    • setExcludingRequestList

      public ResumePointManager setExcludingRequestList(List<String> excludingRequestList)
      レジューム機能を無効にするリクエストIDのリストを設定する。
      Parameters:
      excludingRequestList - レジューム機能を無効にするリクエストIDのリスト
      Returns:
      このオブジェクト自体
    • setDbTransactionName

      public ResumePointManager setDbTransactionName(String dbTransactionName)
      データベースリソース名を設定する。
      Parameters:
      dbTransactionName - データベースリソース名
      Returns:
      このオブジェクト自体