Class BasicProcessStopHandler

java.lang.Object
nablarch.fw.handler.BasicProcessStopHandler
All Implemented Interfaces:
Initializable, Handler<Object,Object>, ProcessStopHandler

public class BasicProcessStopHandler extends Object implements ProcessStopHandler, Initializable
処理中のプロセスを停止するためのハンドラ。

本ハンドラは、LoopHandlerProcessResidentHandlerの後続ハンドラに設定することにより、 処理中に安全にプロセスを停止することが可能となる。

なお、プロセスを停止するためにProcessStopHandler.ProcessStopを送出するため、障害通知ログが出力されプロセスは異常終了する。 異常終了する際に終了コードは、setExitCode(int)によって設定することが出来る。 終了コードの設定を省略した場合のデフォルト動作として終了コードは1となる。 また、未コミットのトランザクションは全てロールバックされることに注意すること。

※処理を異常終了するかどうかは、前段に設定されたハンドラによって決定される。

処理を停止するか否かのチェックは、リクエストテーブルにて行う。 本ハンドラが使用するリクエストテーブルの定義情報を下記に示す。

 -----------------------------+----------------------------------------------------------
 カラム名                     | 説明
 -----------------------------+----------------------------------------------------------
 リクエストID                 | プロセスを特定するためのリクエストID
 処理停止フラグ               | 処理を停止するか否かの情報
                              | 本フラグの値が'1'の場合に処理を停止する。
                              |
                              | 本フラグの値は、自動的に'0'には変更されないため再実行する際には、
                              | 手動で'0'に変更する必要がある。
 -----------------------------+----------------------------------------------------------
 
  • Constructor Details

    • BasicProcessStopHandler

      public BasicProcessStopHandler()
  • Method Details

    • handle

      public Object handle(Object o, ExecutionContext context)
      入力データに対する処理を実行する。

      処理停止チェックを行う。

      Specified by:
      handle in interface Handler<Object,Object>
      Parameters:
      o - 入力データ
      context - 実行コンテキスト
      Returns:
      処理結果データ
    • isProcessStop

      public boolean isProcessStop(String requestId)
      プロセス停止可否を判定する。
      Specified by:
      isProcessStop in interface ProcessStopHandler
      Parameters:
      requestId - リクエストID
      Returns:
      プロセスを停止する必要がある場合はtrue
    • setCheckInterval

      public void setCheckInterval(int checkInterval)
      チェック間隔(handle(Object, ExecutionContext)が 何回呼び出されるごとに停止フラグを確認するか?)を設定する。

      Specified by:
      setCheckInterval in interface ProcessStopHandler
      Parameters:
      checkInterval - チェック間隔(0以下の値が設定された場合は1)
    • setDbTransactionManager

      public void setDbTransactionManager(SimpleDbTransactionManager dbTransactionManager)
      トランザクションマネージャ(SimpleDbTransactionManager)を設定する。

      本ハンドラは、ここで設定されたトランザクションマネージャを使用してデータベースアクセスを行う。

      Parameters:
      dbTransactionManager - トランザクションマネージャ
    • initialize

      public void initialize()
      初期化処理を行う。

      プロセス停止可否をチェックするためのSELECT文を構築する。

      Specified by:
      initialize in interface Initializable
    • setTableName

      public void setTableName(String tableName)
      プロセス停止可否のチェックを行うテーブルの物理名を設定する。
      Parameters:
      tableName - テーブル物理名
    • setRequestIdColumnName

      public void setRequestIdColumnName(String requestIdColumnName)
      プロセスを特定するためのリクエストIDが格納されるカラムの物理名を設定する。
      Parameters:
      requestIdColumnName - リクエストIDカラムの物理名
    • setProcessHaltColumnName

      public void setProcessHaltColumnName(String processHaltColumnName)
      プロセス停止フラグが格納されるカラムの物理名を設定する。
      Parameters:
      processHaltColumnName - プロセス停止カラムフラグの物理名
    • setExitCode

      public void setExitCode(int exitCode)
      終了コードを設定する。

      終了コードの設定がない場合、デフォルトでResult.InternalError#STATUS_CODEが使用される。

      Specified by:
      setExitCode in interface ProcessStopHandler
      Parameters:
      exitCode - 終了コード