ジョブ実行制御

概要

WebOTX Batch ServerはSpring Batchをベースとしたバッチ処理の実行基盤を提供しています。
バッチ処理は、複数のステップから構成されるジョブという単位で実行されます。ステップは、処理対象のデータに対して、1.データの取得、2.処理(加工)、3.出力を繰返し行います。ジョブは、これらのステップを定義された順序に従い実行します。

機能概要図

ジョブ実行制御UIでは、WebOTX Batch Server(以降ではWebOTX BSと表記)を利用してのジョブの実行や停止、ジョブ実行状態の参照、ジョブ実行結果の参照を行うためのコマンドインタフェースとAPIを提供しています。
コマンドインタフェースは、HTTP経由でジョブを実行するためのコマンド(以降はNativeコマンドと表記)と、JMXRMI経由のJavaコマンドの2種を提供しています。

ジョブ実行機能として以下の機能を提供します。
関連

1. 共通

1.1. ジョブ状態管理機能

Batch Serverでは、ジョブの状態を JobRequestStatusBatchStatusExitStatus の3つの状態で管理しています。
JobRequestStatusは、バッチドメインエージェントが受け付けたジョブ実行要求(ジョブリクエスト)の状態を表すBatch Server独自のものです。
BatchStatus(JobExecution と StepExecution の各々が保持) と ExitStatusは、Spring Batchが備えているジョブの状態を表すものです。Batch Serverでは、ExitStatusにBatch Server独自のJobRequestStatusを加味して再定義しています。

1.1.1. JobRequestStatus

WebOTX BSがジョブリクエストを受け付けた時からジョブ実行が終了するまでの状態を表します。
各ジョブリクエストの状態についての説明は下表の通りです。

ジョブリクエストステータス一覧
状態 説明 備考
WAITING ジョブリクエストを受信した状態です。
ジョブリクエストが実行開始待ちの状態を表しています。この時、ジョブリクエストの保有者は、ジョブリクエストキューです。
STARTING ジョブリクエストをジョブリクエストキューから取得した状態です。
ジョブリクエストが実行開始待ちの状態を表しています。この時、ジョブリクエストの保有者は、ジョブリクエストキューです。
RUNNING ジョブが実行中の状態です。
バッチドメイン内のいずれかのコンテナプロセス上でジョブが実行中であることを表しています。この時、ジョブリクエストの保有者は、コンテナプロセスです。
ジョブリポジトリにJobExecutionが存在します。
COMPLETED ジョブリクエストの実行が停止した状態です。
バッチドメイン内のいずれかのコンテナプロセス上でジョブが実行され、ジョブの実行結果の如何によらずジョブの実行が停止している状態を表しています。
ジョブリポジトリにJobExecutionが存在します。
FAILED ジョブリクエストの開始に失敗した状態です。
バッチドメイン内のいずれかのコンテナプロセス上でジョブを開始するまでに、何らかの理由によりジョブが開始できなかった状態を表しています。
RUNNING→UNKNOWN→FAILEDと遷移したジョブリクエストの場合、ジョブリポジトリにJobExecutionが存在します。
UNKNOWN ドメインエージェントの障害発生後の永続化ファイルからのジョブリクエストのリカバリに失敗した状態です。
リカバリ前のジョブリクエストの状態がSTARTINGの場合、ジョブリクエストの再投入が必要です。RUNNINGの場合、ジョブの実行状態を確認の上、場合によってはジョブリポジトリのリカバリを実行した上でのジョブリクエストの再投入が必要です。
RUNNING→UNKNOWNと遷移したジョブリクエストの場合、ジョブリポジトリにJobExecutionが存在します。

各ジョブリクエスト状態の状態遷移は下図の通りです。

ジョブリクエストステータスの状態遷移図

JobRequestStatusが FAILED の状態ではジョブのリスタートではなく、通常の実行が可能です。

1.1.2. BatchStatus

Spring Batchで定義されているジョブ、ステップの状態です。ジョブ、ステップ毎に以下のいずれかのBatchStatusを持ちます。

BatchStatus
BatchStatus名 意味
STARTING ジョブまたはステップの開始処理を行っている状態です。
STARTED ジョブまたはステップが開始され、実行中の状態です。
STOPPING ユーザにより、ジョブの停止処理が実行され、ジョブまたはステップが停止待ちを行っている状態です。この状態ではジョブはまだ実行中です。
STOPPED ユーザにより、ジョブの停止処理が実行され、ジョブまたはステップが停止された状態です。この状態ではジョブは動いていません。
COMPLETED ジョブまたはステップの処理が最後まで終了した状態です。ジョブがこの状態になった場合、ジョブは動いていません。ステップがこの状態になった場合は、該当ステップは終了している状態です。
FAILED ジョブまたはステップの実行中に何らかのエラーが発生した状態です。
UNKNOWN ジョブまたはステップの実行中にジョブリポジトリの障害が発生した場合やトランザクションの状態が不正となる場合の状態です。
ABANDONED リスタート対象外となっている状態です。SpringBatchでCommandLineJobLauncherコマンドのオプションとして、-abandoneが指定された時のみ、ジョブのBatchSetatusとしてABANDONEDが設定されるので、WebOTX BSでジョブを実行した場合ジョブがこの状態になることはありません。
JobExecutionのBatchStatus

個々のジョブ実行の状態はBatchStatusで表します。WebOTX BSでは上記のようにABANDONED状態となることはありません。

StepExecutionのBatchStatus

個々のジョブ内のステップの状態はBatchStatusで表します。

1.1.3. ExitStatus

ユーザからジョブ状態の取得が行われた時に返される状態です。JobRequestStatusBatchStatusを考慮して状態が返却されます。JobRequestStatus、BatchStatus、ExitStatusの対応関係は下表を参照してください。 BatchStatusがNONEとなっている列はジョブが実行されていない状態を表しています。
ExitStatus と ジョブ開始コマンド(jobctl startstart-job)、および、ジョブ実行結果取得コマンド(jobctl resultresult-job)の戻り値の対応関係については、ExitCodeMapping機能 を参照してください。

JobRequestStatus と batchStatus の組合せとExitStatusとの対応関係
BatchStatus
NONE STARTING STARTED STOPPING STOPPED COMPLETED FAILED UNKNOW
JobRequestStatus NONE NOOP ※1 ※1 ※1 STOPPED COMPLETED FAILED UNKNOWN
WAITING QUEUEING QUEUEING QUEUEING QUEUEING QUEUEING QUEUEING QUEUEING QUEUEING
STARTING QUEUEING QUEUEING QUEUEING QUEUEING QUEUEING QUEUEING QUEUEING QUEUEING
FAILED FAILED FAILED FAILED FAILED FAILED FAILED FAILED FAILED
FAILED UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN
RUNNING FAILED EXECUTING EXECUTING EXECUTING UNKNOWON
COMPLETED FAILED STOPPED COMPLETED FAILED UNKNOWN
FAILED STOPPED ※2 ※2
※1
ドメイン名が異なる場合:EXECUTING_ON_OTHER_DOMAI
同じ場合INCONSISTENT_JOB_EXECUTIONG
※2
ユーザが指定したExitStatusが返ります。

1.2. ジョブ実行状態のリカバリ

ジョブの実行中に、ドメインエージェント、バッチコンテナ、データベースが異常終了した場合に、実行中のジョブが不正な状態となってしまう場合があります。不正な状態のジョブは通常のリスタートでは再実行することができません。本機能は不正な状態になってしまったジョブの状態をFAILEDに上書きし、再実行できるようにする機能です。ジョブリポジトリのリカバリはrepoadmin recoverコマンドとして提供されます。
ただし、不正な状態のジョブが存在する場合は、ジョブが利用する業務DBのデータも不正となっている場合があります。本機能は業務DBのリカバリなどは行いません。そのため、利用者は必要であれば業務DBのリカバリなどを行ったあとで、利用者責任で本機能によりジョブの状態を変更し、ジョブのリスタートを行ってください。

1.3. ジョブリポジトリ

ジョブリポジトリは、ジョブの実行状態、結果、履歴、および、制御情報を保持し永続化する仕組みです。ジョブを開始すると、JobExecution および StepExecution が生成され、ジョブ処理過程をジョブリポジトリに記録します。

WebOTX Batch Serverの既定値では、ジョブリポジトリとして同梱しているデータベースのDerbyを使用します。ジョブリポジトリは、サポート対象の任意のデータベースに配置することができますが、基本的には処理対象のデータと同一のデータベースインスタンス上に配置する(=所謂業務DB上に配置する)ことを推奨します。
例えば、Chunk志向スタイルでデータベース上データを更新するジョブの場合、Chunk単位のトランザクション区間内で、処理対象の業務データおよび業務テーブルの更新処理と、ジョブ実行状態や制御情報(処理件数等)およびジョブリポジトリテーブルの更新処理とが実行されます。処理対象の業務データとジョブリポジトリが、異なるデータベース上に配置する場合、Chunk単位のトランザクション区間内に、複数のデータベースとのトランザクションが含まれることになります。それぞれのデータベースとのトランザクションをChunk単位のトランザクションに参加させ、単一のトランザクションとして扱うためには、各データベースとの接続にXAドライバを使用する(=XAドライバを使用したJDBCデータソースを使用する)必要があります。

ジョブリポジトリ ER図

ジョブリポジトリ テーブル一覧
論理テーブル名 物理ID 説明
1 ジョブインスタンス BATCH_JOB_INSTANCE 全階層の頂点としての役割を持つ JobInstance に関する全ての情報を保持するテーブルです
2 ジョブパラメータ BATCH_JOB_EXECUTION_PARAMS JobParameters オブジェクトに関する全ての情報を保持するテーブルです
3 ジョブ実行 BATCH_JOB_EXECUTION JobExecution オブジェクトに関する全ての情報を保持するテーブルです
4 ジョブ実行コンテキスト BATCH_JOB_EXECUTION_CONTEXT ジョブの ExecutionContext に関する全ての情報を保持するテーブルです
5 ステップ実行 BATCH_STEP_EXECUTION StepExecution オブジェクトに関する全ての情報を保持するテーブルです
6 ステップ実行コンテキスト BATCH_STEP_EXECUTION_CONTEXT ステップの ExecutionContext に関する全ての情報を保持するテーブルです
7 ジョブインスタンスID用順序 BATCH_JOB_SEQ ジョブインスタンスIDを採番するシーケンス。
8 ジョブ実行ID用順序 BATCH_JOB_EXECUTION_SEQ ジョブ実行IDを採番するシーケンス。
9 ステップ実行ID用順序 BATCH_STEP_EXECUTION_SEQ ステップ実行IDを採番するシーケンス。

ジョブインスタンス - BATCH_JOB_INSTANCE

全階層の頂点としての役割を持つ JobInstance に関する全ての情報を保持するテーブルです。

ジョブインスタンス テーブル定義
項目名 項目ID 説明
1 ジョブインスタンスID JOB_INSTANCE_ID ジョブインスタンスを識別する一意な主キー。この値はJobInstanceオブジェクトのgetId()メソッドを使用して得られる
2 バージョン VERSION
3 ジョブ名 JOB_NAME Jobオブジェクトから得られるジョブの名前。ジョブインスタンスを識別することに必要であるため、nullは許容されない。
4 ジョブキー JOB_KEY ジョブインスタンスを一意に識別する文字列。ジョブ名とジョブパラメータを直列化した一意な文字列であり、ジョブ名とジョブパラメータのセットが一致するジョブは、同じジョブであると識別する。

ジョブパラメータ - BATCH_JOB_EXECUTION_PARAMS

JobParameters オブジェクトに関する全ての情報を保持するテーブルです。
このテーブルには、ジョブ実行時に指定されたパラメータが、ジョブインスタンスIDと共に、キーと値のペアとして記録されます。データ型毎の複数のカラムを持った非正規化状態のテーブルとなっている点に注意してください。

ジョブパラメータ テーブル定義
項目名 項目ID 説明
1 ジョブ実行ID JOB_EXECUTION_ID BATCH_JOB_EXECUTION テーブルのジョブ実行IDへの外部キー
2 種別コード TYPE_CD 格納されている値の種別を表す文字列string, date, long, doubleのいずれかが含まれ、空白は許容されない
3 キー名 KEY_NAME ジョブパラメータのキー
4 値(文字型) STRING_VAL ジョブパラメータの値(文字型)
5 値(日付/時刻データ型) DATE_VAL ジョブパラメータの値(日付/時刻データ型)
6 値(浮動小数点データ型) DOUBLE_VAL ジョブパラメータの値(浮動小数点データ型)
7 値(数値データ型) LONG_VAL ジョブパラメータの値(数値データ型)
8 識別フラグ IDENTIFING 再実行するジョブの識別に利用するかどうか('Y'/'N')

ジョブ実行 - BATCH_JOB_EXECUTION

JobExecutionオブジェクトに関する全ての情報を保持するテーブルです。
ジョブの実行毎に新しい JobExecution オブジェクトが生成され、このテーブルにはJobExecutionオブジェクト毎の行が追加されます

論理名 テーブル定義
項目名 項目ID 説明
1 ジョブ実行ID JOB_EXECUTION_ID ジョブ実行を識別する一意な主キー。この値はJobExecutionオブジェクトのgetId()メソッドを使用して得られる
2 バージョン VERSION
3 ジョブインスタンスID JOB_INSTANCE_ID BATCH_JOB_INSTANCE テーブルのジョブインスタンスIDへの外部キー
4 生成時刻 CREATE_TIME ジョブ実行が生成された時刻
5 開始時刻 START_TIME ジョブ実行の開始時刻
6 終了時刻 END_TIME ジョブ実行の終了時刻。ジョブ実行の結果如何によらずジョブ実行の終了時刻を示す。このカラムが空の場合、ジョブが実行中の状態にあるか、何らかの理由により終了時刻を書き込む前に異常終了した状態である。
7 状態 STATUS ジョブの実行状態を表す文字列表現。BatchStatus
8 終了コード EXIT_CODE ジョブ実行の終了コードを示す文字列表現。
9 終了メッセージ EXIT_MESSAGE ジョブ実行がどのように終了したのかをより詳細に説明する文字列。ジョブ実行が失敗した場合、格納可能な範囲のスタックトレースが含まれる場合がある。
10 最終更新時刻 LAST_UPDATED ジョブ実行の最終更新時刻

ジョブ実行コンテキスト - BATCH_JOB_EXECUTION_CONTEXT

ジョブの ExecutionContext に関する全ての情報を保持するテーブルです。
ジョブの実行毎に新しいジョブの ExecutionContext オブジェクトが生成され、このテーブルに保存されます。本テーブルには、ジョブの実行状態を永続化する為に必要な JobExecution 毎の ExecutionContext が記録されます。このテーブルに保存された情報は、再実行可能な JobInstance の再実行時に、ジョブの状態を復元する為に使用されます。

論理名 テーブル定義
項目名 項目ID 説明
1 ジョブ実行ID JOB_EXECUTION_ID BATCH_JOB_EXECUTION テーブルのジョブ実行IDへの外部キー
2 SHORT_CONTEXT SHORT_CONTEXT SERIALIZED_CONTEXT の文字列表現
3 SERIALIZED_CONTEXT SERIALIZED_CONTEXT 直列化したContext

ステップ実行 - BATCH_STEP_EXECUTION

StepExecution オブジェクトに関する全ての情報を保持するテーブルです。
JobExecution が生成される毎に少なくとも1つの StepExecution オブジェクトが生成され、このテーブルには StepExecution オブジェクト毎の行が追加されます。
このテーブルは、様々な面でBATCH_JOB_EXECUTIONに類似しています。

論理名 テーブル定義
項目名 項目ID 説明
1 ステップ実行ID STEP_EXECUTION_ID ステップ実行を識別する一意な主キー。この値はStepExecutionオブジェクトのgetId()メソッドを使用して得られる
2 バージョン VERSION
3 ステップ名 STEP_NAME ステップ名
4 ジョブ実行ID JOB_EXECUTION_ID BATCH_JOB_EXECUTION テーブルのジョブ実行IDへの外部キー
5 開始時刻 START_TIME ステップ実行の開始時刻
6 終了時刻 END_TIME ステップ実行の終了時刻。ステップ実行の結果如何によらずステップ実行の終了時刻を示す。このカラムが空の場合、ステップが実行中の状態にあるか、何らかの理由により終了時刻を書き込む前に異常終了した状態である。
7 状態 STATUS ステップの実行状態を表す文字列表現。BatchStatus
8 コミット回数 COMMIT_COUNT コミット実行回数
9 読込アイテム数 READ_COUNT 読み込み済みのアイテム数
10 絞込アイテム数 FILTER_COUNT フィルタリングしたアイテム数
11 書込アイテム数 WRITE_COUNT 書き込み済みのアイテム数
12 読込スキップアイテム数 READ_SKIP_COUNT 読み込み(read)処理中にスキップしたアイテム数
13 書込スキップアイテム数 WRITE_SKIP_COUNT 書き込み(write)処理中にスキップしたアイテム数
14 処理スキップアイテム数 PROCESS_SKIP_COUNT (process)処理中にスキップしたアイテム数
15 ロールバック回数 ROLLBACK_COUNT ロールバック実行回数。ただし、本値にはリトライ対象のロールバック、および、ステップのリカバリ処理によるロールバックの実行回数が含まれる
16 終了コード EXIT_CODE ステップ実行の終了コードを示す文字列表現。
17 終了メッセージ EXIT_MESSAGE ステップ実行がどのように終了したのかをより詳細に説明する文字列。ステップ実行が失敗した場合、格納可能な範囲のスタックトレースが含まれる場合がある。
18 最終更新時刻 LAST_UPDATED ステップ実行の最終更新時刻

ステップ実行コンテキスト - BATCH_STEP_EXECUTION_CONTEXT

ステップの ExecutionContext に関する全ての情報を保持するテーブルです。
ステップの実行毎に新しいステップの ExecutionContext オブジェクトが生成され、このテーブルに保存されます。本テーブルには、ステップの実行状態を永続化する為に必要な StepExecution 毎の ExecutionContext が記録されます。このテーブルに保存された情報は、再実行可能な JobInstance の再実行時に、ステップの状態を復元する為に使用されます。

論理名 テーブル定義
項目名 項目ID 説明
1 ステップ実行ID STEP_EXECUTION_ID BATCH_STEP_EXECUTION テーブルのステップ実行IDへの外部キー
2 SHORT_CONTEXT SHORT_CONTEXT SERIALIZED_CONTEXT の文字列表現
3 SERIALIZED_CONTEXT SERIALIZED_CONTEXT 直列化したContext

1.3.1. Derby テーブル定義

ジョブインスタンス - BATCH_JOB_INSTANCE
ジョブインスタンス - BATCH_JOB_INSTANCE テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブインスタンスID JOB_INSTANCE_ID BIGINT 8
2 バージョン VERSION BIGINT 8
3 ジョブ名 JOB_NAME VARCHAR 100
4 ジョブキー JOB_KEY VARCHAR 32
BATCH_JOB_INSTANCE_INDEX

JOB_NAME、JOB_KEY 列に対するインデックスです。

ジョブパラメータ - BATCH_JOB_EXECUTION_PARAMS
ジョブパラメータ - BATCH_JOB_EXECUTION_PARAMS テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブインスタンスID JOB_INSTANCE_ID BIGINT 8
2 種別コード TYPE_CD VARCHAR 6
3 キー名 KEY_NAME VARCHAR 100
4 値(文字型) STRING_VAL VARCHAR 250
5 値(日付/時刻データ型) DATE_VAL TIMESTAMP 8 ナノ秒(小数点以下9桁)
6 値(浮動小数点データ型) DOUBLE_VAL DOUBLE PRECISION 8 倍精度
7 値(数値データ型) LONG_VAL BIGINT 8
8 識別フラグ IDENTIFYING CHAR 1
ジョブ実行 - BATCH_JOB_EXECUTION
ジョブ実行 - BATCH_JOB_EXECUTION テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブ実行ID JOB_EXECUTION_ID BIGINT 8
2 バージョン VERSION BIGINT 8
3 ジョブインスタンスID JOB_INSTANCE_ID BIGINT 8
4 生成時刻 CREATE_TIME TIMESTAMP 8 ナノ秒(小数点以下9桁)
5 開始時刻 START_TIME TIMESTAMP 8 ナノ秒(小数点以下9桁)
6 終了時刻 END_TIME TIMESTAMP 8 ナノ秒(小数点以下9桁)
7 状態 STATUS VARCHAR 10
8 終了コード EXIT_CODE VARCHAR 100
9 終了メッセージ EXIT_MESSAGE VARCHAR 2500
10 最終更新時刻 LAST_UPDATED TIMESTAMP 8 ナノ秒(小数点以下9桁)
BATCH_JOB_EXECUTION_INDEX

JOB_INSTANCE_ID 列に対するインデックスです。

ジョブ実行コンテキスト - BATCH_JOB_EXECUTION_CONTEXT
ジョブ実行コンテキスト - BATCH_JOB_EXECUTION_CONTEXT テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブ実行ID JOB_EXECUTION_ID BIGINT 8
2 SHORT_CONTEXT SHORT_CONTEXT VARCHAR 2500
3 SERIALIZED_CONTEXT SERIALIZED_CONTEXT CLOB 可変(*)
BATCH_JOB_EXECUTION_CONTEXT_INDEX

JOB_EXECUTION_ID 列に対するインデックスです。

ステップ実行 - BATCH_STEP_EXECUTION
ステップ実行 - BATCH_STEP_EXECUTION テーブル定義
項目名 項目ID 属性 長さ 精度
1 ステップ実行ID STEP_EXECUTION_ID BIGINT 8
2 バージョン VERSION BIGINT 8
3 ステップ名 STEP_NAME VARCHAR 100
4 ジョブ実行ID JOB_EXECUTION_ID BIGINT 8
5 開始時刻 START_TIME TIMESTAMP 8 ナノ秒(小数点以下9桁)
6 終了時刻 END_TIME TIMESTAMP 8 ナノ秒(小数点以下9桁)
7 状態 STATUS VARCHAR 10
8 コミット回数 COMMIT_COUNT BIGINT 8
9 読込アイテム数 READ_COUNT BIGINT 8
10 絞込アイテム数 FILTER_COUNT BIGINT 8
11 書込アイテム数 WRITE_COUNT BIGINT 8
12 読込スキップアイテム数 READ_SKIP_COUNT BIGINT 8
13 書込スキップアイテム数 WRITE_SKIP_COUNT BIGINT 8
14 処理スキップアイテム数 PROCESS_SKIP_COUNT BIGINT 8
15 ロールバック回数 ROLLBACK_COUNT BIGINT 8
16 終了コード EXIT_CODE VARCHAR 100
17 終了メッセージ EXIT_MESSAGE VARCHAR 2500
18 最終更新時刻 LAST_UPDATED TIMESTAMP 8 ナノ秒(小数点以下9桁)
BATCH_STEP_EXECUTION_INDEX1

VERSION 列に対するインデックスです。

BATCH_STEP_EXECUTION_INDEX2

STEP_NAME、JOB_EXECUTION_ID 列に対するインデックスです。

ステップ実行コンテキスト - BATCH_STEP_EXECUTION_CONTEXT
ステップ実行コンテキスト - BATCH_STEP_EXECUTION_CONTEXT テーブル定義
項目名 項目ID 属性 長さ 精度
1 ステップ実行ID STEP_EXECUTION_ID BIGINT 8
2 SHORT_CONTEXT SHORT_CONTEXT VARCHAR 2500
3 SERIALIZED_CONTEXT SERIALIZED_CONTEXT CLOB 可変(*)
BATCH_STEP_EXECUTION_CONTEXT_INDEX

STEP_EXECUTION_ID 列に対するインデックスです。

ジョブインスタンスID用順序 - BATCH_JOB_SEQ

ジョブインスタンスID を採番するシーケンスを実現するためのテーブルです。

項目名 項目ID 属性 長さ 精度
1 最終採番値 ID BIGINT 8
2 DUMMY DUMMY VARCHAR 1
ジョブ実行ID用順序 - BATCH_JOB_EXECUTION_SEQ

ジョブ実行ID を採番するシーケンスを実現するためのテーブルです。

項目名 項目ID 属性 長さ 精度
1 最終採番値 ID BIGINT 8
2 DUMMY DUMMY VARCHAR 1
ステップ実行ID用順序 - BATCH_STEP_EXECUTION_SEQ

ステップ実行ID を採番するシーケンスを実現するためのテーブルです。

項目名 項目ID 属性 長さ 精度
1 最終採番値 ID BIGINT 8
2 DUMMY DUMMY VARCHAR 1

1.3.2. PostgreSQL テーブル定義

ジョブインスタンス - BATCH_JOB_INSTANCE
ジョブインスタンス - BATCH_JOB_INSTANCE テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブインスタンスID JOB_INSTANCE_ID BIGINT 8
2 バージョン VERSION BIGINT 8
3 ジョブ名 JOB_NAME VARCHAR 100
4 ジョブキー JOB_KEY VARCHAR 32
BATCH_JOB_INSTANCE_INDEX

JOB_NAME、JOB_KEY 列に対するインデックスです。

ジョブパラメータ - BATCH_JOB_EXECUTION_PARAMS
ジョブパラメータ - BATCH_JOB_EXECUTION_PARAMS テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブインスタンスID JOB_INSTANCE_ID BIGINT 8
2 種別コード TYPE_CD VARCHAR 6
3 キー名 KEY_NAME VARCHAR 100
4 値(文字型) STRING_VAL VARCHAR 250
5 値(日付/時刻データ型) DATE_VAL TIMESTAMP 8 1μ秒、14桁
6 値(浮動小数点データ型) DOUBLE_VAL DOUBLE PRECISION 8 15
7 値(数値データ型) LONG_VAL BIGINT 8
8 識別フラグ IDENTIFYING CHAR 1
ジョブ実行 - BATCH_JOB_EXECUTION
ジョブ実行 - BATCH_JOB_EXECUTION テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブ実行ID JOB_EXECUTION_ID BIGINT 8
2 バージョン VERSION BIGINT 8
3 ジョブインスタンスID JOB_INSTANCE_ID BIGINT 8
4 生成時刻 CREATE_TIME TIMESTAMP 8 1μ秒、14桁
5 開始時刻 START_TIME TIMESTAMP 8 1μ秒、14桁
6 終了時刻 END_TIME TIMESTAMP 8 1μ秒、14桁
7 状態 STATUS VARCHAR 10
8 終了コード EXIT_CODE VARCHAR 100
9 終了メッセージ EXIT_MESSAGE VARCHAR 2500
10 最終更新時刻 LAST_UPDATED TIMESTAMP 8 1μ秒、14桁
BATCH_JOB_EXECUTION_INDEX

JOB_INSTANCE_ID 列に対するインデックスです。

ジョブ実行コンテキスト - BATCH_JOB_EXECUTION_CONTEXT
ジョブ実行コンテキスト - BATCH_JOB_EXECUTION_CONTEXT テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブ実行ID JOB_EXECUTION_ID BIGINT 8
2 SHORT_CONTEXT SHORT_CONTEXT VARCHAR 2500
3 SERIALIZED_CONTEXT SERIALIZED_CONTEXT TEXT(*) (1 or 4) + n
BATCH_JOB_EXECUTION_CONTEXT_INDEX

JOB_EXECUTION_ID 列に対するインデックスです。

ステップ実行 - BATCH_STEP_EXECUTION
ステップ実行 - BATCH_STEP_EXECUTION テーブル定義
項目名 項目ID 属性 長さ 精度
1 ステップ実行ID STEP_EXECUTION_ID BIGINT 8
2 バージョン VERSION BIGINT 8
3 ステップ名 STEP_NAME VARCHAR 100
4 ジョブ実行ID JOB_EXECUTION_ID BIGINT 8
5 開始時刻 START_TIME TIMESTAMP 8 1μ秒、14桁
6 終了時刻 END_TIME TIMESTAMP 8 1μ秒、14桁
7 状態 STATUS VARCHAR 10
8 コミット回数 COMMIT_COUNT BIGINT 8
9 読込アイテム数 READ_COUNT BIGINT 8
10 絞込アイテム数 FILTER_COUNT BIGINT 8
11 書込アイテム数 WRITE_COUNT BIGINT 8
12 読込スキップアイテム数 READ_SKIP_COUNT BIGINT 8
13 書込スキップアイテム数 WRITE_SKIP_COUNT BIGINT 8
14 処理スキップアイテム数 PROCESS_SKIP_COUNT BIGINT 8
15 ロールバック回数 ROLLBACK_COUNT BIGINT 8
16 終了コード EXIT_CODE VARCHAR 100
17 終了メッセージ EXIT_MESSAGE VARCHAR 2500
18 最終更新時刻 LAST_UPDATED TIMESTAMP 8 1μ秒、14桁
BATCH_STEP_EXECUTION_INDEX1

VERSION 列に対するインデックスです。

BATCH_STEP_EXECUTION_INDEX2

STEP_NAME、JOB_EXECUTION_ID 列に対するインデックスです。

ステップ実行コンテキスト - BATCH_STEP_EXECUTION_CONTEXT
ステップ実行コンテキスト - BATCH_STEP_EXECUTION_CONTEXT テーブル定義
項目名 項目ID 属性 長さ 精度
1 ステップ実行ID STEP_EXECUTION_ID BIGINT 8
2 SHORT_CONTEXT SHORT_CONTEXT VARCHAR 2500
3 SERIALIZED_CONTEXT SERIALIZED_CONTEXT TEXT(*) (1 or 4) + n
BATCH_STEP_EXECUTION_CONTEXT_INDEX

STEP_EXECUTION_ID 列に対するインデックスです。

ジョブインスタンスID用順序 - BATCH_JOB_SEQ

ジョブインスタンスIDを採番するシーケンスです。

ジョブ実行ID用順序 - BATCH_JOB_EXECUTION_SEQ

ジョブ実行IDを採番するシーケンスです。

ステップ実行ID用順序 - BATCH_STEP_EXECUTION_SEQ

ステップ実行IDを採番するシーケンスです。

1.3.3. Oracle Database

ジョブインスタンス - BATCH_JOB_INSTANCE
ジョブインスタンス - BATCH_JOB_INSTANCE テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブインスタンスID JOB_INSTANCE_ID NUMBER 11 19桁(小数点以下0桁)
2 バージョン VERSION NUMBER 11 19桁(小数点以下0桁)
3 ジョブ名 JOB_NAME VARCHAR2 100
4 ジョブキー JOB_KEY VARCHAR2 32
ジョブパラメータ - BATCH_JOB_EXECUTION_PARAMS
ジョブパラメータ - BATCH_JOB_EXECUTION_PARAMS テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブインスタンスID JOB_INSTANCE_ID NUMBER 11 19桁(小数点以下0桁)
2 種別コード TYPE_CD VARCHAR2 6
3 キー名 KEY_NAME VARCHAR2 100
4 値(文字型) STRING_VAL VARCHAR2 250
5 値(日付/時刻データ型) DATE_VAL TIMESTAMP 7〜11 μ秒
6 値(浮動小数点データ型) DOUBLE_VAL NUMBER 20 38桁(小数点以下0桁)
7 値(数値データ型) LONG_VAL NUMBER 11 19桁(小数点以下0桁)
8 識別フラグ IDENTIFYING CHAR 1
ジョブ実行 - BATCH_JOB_EXECUTION
ジョブ実行 - BATCH_JOB_EXECUTION テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブ実行ID JOB_EXECUTION_ID NUMBER 11 19桁(小数点以下0桁)
2 バージョン VERSION NUMBER 11 19桁(小数点以下0桁)
3 ジョブインスタンスID JOB_INSTANCE_ID NUMBER 11 19桁(小数点以下0桁)
4 生成時刻 CREATE_TIME TIMESTAMP 7〜11 μ秒
5 開始時刻 START_TIME TIMESTAMP 7〜11 μ秒
6 終了時刻 END_TIME TIMESTAMP 7〜11 μ秒
7 状態 STATUS VARCHAR2 10
8 終了コード EXIT_CODE VARCHAR2 100
9 終了メッセージ EXIT_MESSAGE VARCHAR2 2500
10 最終更新時刻 LAST_UPDATED TIMESTAMP 7〜11 μ秒
BATCH_JOB_EXECUTION_INDEX

JOB_INSTANCE_ID 列に対するインデックスです。

ジョブ実行コンテキスト - BATCH_JOB_EXECUTION_CONTEXT
ジョブ実行コンテキスト - BATCH_JOB_EXECUTION_CONTEXT テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブ実行ID JOB_EXECUTION_ID NUMBER 11 19桁(小数点以下0桁)
2 SHORT_CONTEXT SHORT_CONTEXT VARCHAR2 2500
3 SERIALIZED_CONTEXT SERIALIZED_CONTEXT CLOB 可変(*)
ステップ実行 - BATCH_STEP_EXECUTION
ステップ実行 - BATCH_STEP_EXECUTION テーブル定義
項目名 項目ID 属性 長さ 精度
1 ステップ実行ID STEP_EXECUTION_ID NUMBER 11 19桁(小数点以下0桁)
2 バージョン VERSION NUMBER 11 19桁(小数点以下0桁)
3 ステップ名 STEP_NAME VARCHAR2 100
4 ジョブ実行ID JOB_EXECUTION_ID NUMBER 11 19桁(小数点以下0桁)
5 開始時刻 START_TIME TIMESTAMP 7〜11 μ秒
6 終了時刻 END_TIME TIMESTAMP 7〜11 μ秒
7 状態 STATUS VARCHAR2 10
8 コミット回数 COMMIT_COUNT NUMBER 11 19桁(小数点以下0桁)
9 読込アイテム数 READ_COUNT NUMBER 11 19桁(小数点以下0桁)
10 絞込アイテム数 FILTER_COUNT NUMBER 11 19桁(小数点以下0桁)
11 書込アイテム数 WRITE_COUNT NUMBER 11 19桁(小数点以下0桁)
12 読込スキップアイテム数 READ_SKIP_COUNT NUMBER 11 19桁(小数点以下0桁)
13 書込スキップアイテム数 WRITE_SKIP_COUNT NUMBER 11 19桁(小数点以下0桁)
14 処理スキップアイテム数 PROCESS_SKIP_COUNT NUMBER 11 19桁(小数点以下0桁)
15 ロールバック回数 ROLLBACK_COUNT NUMBER 11 19桁(小数点以下0桁)
16 終了コード EXIT_CODE VARCHAR2 100
17 終了メッセージ EXIT_MESSAGE VARCHAR2 2500
18 最終更新時刻 LAST_UPDATED TIMESTAMP 7〜11 μ秒
BATCH_STEP_EXECUTION_INDEX1

VERSION 列に対するインデックスです。

BATCH_STEP_EXECUTION_INDEX2

STEP_NAME、JOB_EXECUTION_ID 列に対するインデックスです。

ステップ実行コンテキスト - BATCH_STEP_EXECUTION_CONTEXT
ステップ実行コンテキスト - BATCH_STEP_EXECUTION_CONTEXT テーブル定義
項目名 項目ID 属性 長さ 精度
1 ステップ実行ID STEP_EXECUTION_ID NUMBER 11 19桁(小数点以下0桁)
2 SHORT_CONTEXT SHORT_CONTEXT VARCHAR2 2500
3 SERIALIZED_CONTEXT SERIALIZED_CONTEXT CLOB 可変(*)
ジョブインスタンスID用順序 - BATCH_JOB_SEQ

ジョブインスタンスIDを採番するシーケンスです。

ジョブ実行ID用順序 - BATCH_JOB_EXECUTION_SEQ

ジョブ実行IDを採番するシーケンスです。

ステップ実行ID用順序 - BATCH_STEP_EXECUTION_SEQ

ステップ実行IDを採番するシーケンスです。

1.3.4. Microsoft SQL Server

ジョブインスタンス - BATCH_JOB_INSTANCE
ジョブインスタンス - BATCH_JOB_INSTANCE テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブインスタンスID JOB_INSTANCE_ID BIGINT
2 バージョン VERSION BIGINT
3 ジョブ名 JOB_NAME VARCHAR 100
4 ジョブキー JOB_KEY VARCHAR 32
ジョブパラメータ - BATCH_JOB_EXECUTION_PARAMS
ジョブパラメータ - BATCH_JOB_EXECUTION_PARAMS テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブインスタンスID JOB_INSTANCE_ID BIGINT
2 種別コード TYPE_CD VARCHAR 6
3 キー名 KEY_NAME VARCHAR 100
4 値(文字型) STRING_VAL VARCHAR 250
5 値(日付/時刻データ型) DATE_VAL DATE_TIME
6 値(浮動小数点データ型) DOUBLE_VAL DOUBLE
7 値(数値データ型) LONG_VAL BIGINT
8 識別フラグ IDENTIFYING CHAR 1
ジョブ実行 - BATCH_JOB_EXECUTION
ジョブ実行 - BATCH_JOB_EXECUTION テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブ実行ID JOB_EXECUTION_ID BIGINT
2 バージョン VERSION BIGINT
3 ジョブインスタンスID JOB_INSTANCE_ID BIGINT
4 生成時刻 CREATE_TIME DATETIME
5 開始時刻 START_TIME DATETIME
6 終了時刻 END_TIME DATETIME
7 状態 STATUS VARCHAR 10
8 終了コード EXIT_CODE VARCHAR 100
9 終了メッセージ EXIT_MESSAGE VARCHAR 2500
10 最終更新時刻 LAST_UPDATED DATETIME
BATCH_JOB_EXECUTION_INDEX

JOB_INSTANCE_ID 列に対するインデックスです。

ジョブ実行コンテキスト - BATCH_JOB_EXECUTION_CONTEXT
ジョブ実行コンテキスト - BATCH_JOB_EXECUTION_CONTEXT テーブル定義
項目名 項目ID 属性 長さ 精度
1 ジョブ実行ID JOB_EXECUTION_ID BIGINT
2 SHORT_CONTEXT SHORT_CONTEXT VARCHAR 2500
3 SERIALIZED_CONTEXT SERIALIZED_CONTEXT TEXT
ステップ実行 - BATCH_STEP_EXECUTION
ステップ実行 - BATCH_STEP_EXECUTION テーブル定義
項目名 項目ID 属性 長さ 精度
1 ステップ実行ID STEP_EXECUTION_ID BIGINT
2 バージョン VERSION BIGINT
3 ステップ名 STEP_NAME VARCHAR 100
4 ジョブ実行ID JOB_EXECUTION_ID BIGINT
5 開始時刻 START_TIME DATETIME
6 終了時刻 END_TIME DATETIME
7 状態 STATUS VARCHAR 10
8 コミット回数 COMMIT_COUNT BIGINT
9 読込アイテム数 READ_COUNT BIGINT
10 絞込アイテム数 FILTER_COUNT BIGINT
11 書込アイテム数 WRITE_COUNT BIGINT
12 読込スキップアイテム数 READ_SKIP_COUNT BIGINT
13 書込スキップアイテム数 WRITE_SKIP_COUNT BIGINT
14 処理スキップアイテム数 PROCESS_SKIP_COUNT BIGINT
15 ロールバック回数 ROLLBACK_COUNT BIGINT
16 終了コード EXIT_CODE VARCHAR 100
17 終了メッセージ EXIT_MESSAGE VARCHAR 2500
18 最終更新時刻 LAST_UPDATED DATETIME
BATCH_STEP_EXECUTION_INDEX1

VERSION 列に対するインデックスです。

BATCH_STEP_EXECUTION_INDEX2

STEP_NAME、JOB_EXECUTION_ID 列に対するインデックスです。

ステップ実行コンテキスト - BATCH_STEP_EXECUTION_CONTEXT
ステップ実行コンテキスト - BATCH_STEP_EXECUTION_CONTEXT テーブル定義
項目名 項目ID 属性 長さ 精度
1 ステップ実行ID STEP_EXECUTION_ID BIGINT
2 SHORT_CONTEXT SHORT_CONTEXT VARCHAR 2500
3 SERIALIZED_CONTEXT SERIALIZED_CONTEXT TEXT
ジョブインスタンスID用順序 - BATCH_JOB_SEQ

ジョブインスタンスID を採番するシーケンスを実現するためのテーブルです。

項目名 項目ID 属性 長さ 精度
1 最終採番値 ID BIGINT
ジョブ実行ID用順序 - BATCH_JOB_EXECUTION_SEQ

ジョブ実行ID を採番するシーケンスを実現するためのテーブルです。

項目名 項目ID 属性 長さ 精度
1 最終採番値 ID BIGINT
ステップ実行ID用順序 - BATCH_STEP_EXECUTION_SEQ

ステップ実行ID を採番するシーケンスを実現するためのテーブルです。

項目名 項目ID 属性 長さ 精度
1 最終採番値 ID BIGINT

2. ジョブの開始

WebOTX BSはジョブを開始する機能を持っています。
ジョブの実行自体はSpring Batchを利用します。ジョブは複数同時に実行することができます。

2.1. UI

2.1.1. コマンド

ジョブ開始コマンド(jobctl startstart-job)は、運用者がジョブ実行処理を開始する、もしくは再実行処理を開始するためのコマンドです。 ジョブ開始コマンドは、指定されたドメインエージェントに対し開始要求を行います。
全てのジョブの実行要求(開始、再実行)は、リクエストキューにキューイングされ、ジョブの実行が可能になり次第処理が実行されます。

ジョブ開始コマンドでは、対象となるジョブが終了するのを待ち合わせ、コマンドが終了します。
コマンドプロセスが何らかの原因で異常終了したとしても、実行されているジョブの処理には影響されません。ジョブの実行結果を取得する必要がある場合は、ジョブの結果取得コマンドを実行してください。

戻り値

ユーザからジョブ状態の取得が行われた時に返される状態です。ExitStatusBatchStatusを考慮して状態が返却されます。JobRequestStatus、BatchStatus、ExitStatusの対応関係は下表を参照してください。 BatchStatusがNONEとなっている列はジョブが実行されていない状態を表しています。
ExitStatus と ジョブ開始コマンド(jobctl startstart-job)、および、ジョブ実行結果取得コマンド(jobctl resultresult-job)の戻り値の対応関係については、ExitCodeMapping機能 を参照してください。

ExitStatus と batchStatus の組合せと戻り値との対応関係
BatchStatus
COMPLETED STARTING STARTED STOPPING STOPPED FAILED UNKNOW ABANDONED
ExitStatus *(定義なし) 255 255 255 255 255 255 255 255
COMPLETED 0 0 0 0 0 0 0 0
COMPLETED WITH SKIPS 102 102 102 102 102 102 102 102
STOPPED 106 106 106 106 106 106 106 106
NOOP 108 108 108 108 108 108 108 108
UNKNOWN 109 109 109 109 109 109 109 109
FAILED 1 1 1 1 1 107 1 1
利用者定義 任意 任意 任意 任意 任意 任意 任意 任意
関連

2.1.2. API

Batch Serverは、ジョブ制御用のJava APIを提供しています。
本APIを利用することで、任意のJavaアプリケーションからBatch Server上で実行するジョブの制御を行うことができます。本APIは、Stand Alone Javaアプリケーションの他、Java EE Application Server上で実行されるWebアプリケーションや、EJB内で利用することが可能です。
本APIを利用したジョブ実行を行う場合、下記のjarファイルをクラスパスに追加する必要があります。それぞれのファイルは、BSがインストールされている環境では表に記載する場所に格納されています。必要に応じてコピーするなどして利用してください。

クラスパスに追加する必要があるjarファイル一覧
ディレクトリ jarファイル名
${AS_INSTALL}/modules common-util.jar
jmx-remote-client.jar
jmx-remote-server.jar
log4otx.jar
wo-logging-util.jar
${AS_INSTALL}/batch/lib bs-runtime.jar
spring-batch-core-2.2.2.RELEASE.jar
spring-beans-3.2.5.RELEASE.jar
spring-core-3.2.5.RELEASE.jar
spring-jdbc-3.2.5.RELEASE.jar
${AS_INSTALL}/batch/modules bs-common.jar
bs-jmx-modules.jar
関連

2.1.3. WebSAM JobCenter 連携

Batch Serverは、ジョブスケジューラ製品の WebSAM JobCenter と連携しています。
主要な連携機能は、WebSAM JobCenter から WebOTX Batch Server との連携機能オプションとして提供されています。
WebSAM JobCenterとの連携機能を利用することで、WebSAM JobCenterが備えるスケジューリング機能や、ジョブネットワーク実行制御機能、ジョブネットワークおよびジョブの実行結果管理機能等を利用することができます。
また、WebOTX Batch Server用単位ジョブ部品が利用できる為、最低限の必須項目を入力するだけでBatch Server上のジョブを実行するジョブネットワークが定義できる外、各種ジョブ制御操作を使い勝手の良いGUIから行うことが可能です。

関連

2.2. ジョブの再実行

Batch Serverでは、異常終了したジョブを再実行することができます。ただし、正常に完了したジョブはリスタートできません。
ジョブを再実行するには、ジョブの開始時に指定したパラメータと同一のパラーメータを全て指定するか、ジョブの開始時に指定したリクエストIDを指定します。ジョブ開始コマンド(jobctl startstart-job)の場合、前回実行時に指定した全てのオプションと共に、--restart オプションを付加してジョブ開始コマンドを実行します。ジョブの開始優先度やジョブの停止時間を指定するオプションは、前回実行時と異なる値を指定することが可能です。
ジョブを再実行する際に、以下のリスタート種別を指定することもできます。

ジョブのリスタート種別
単位 typeオプション 説明 前提条件
ジョブ JOB 前回の実行状態に関わらず、ジョブの先頭から処理を開始します
  • 前回実行時の結果がリスタートの実行結果に影響をあたえないジョブであること
  • 前回の途中結果を元に戻すことができるジョブであること
ステップ STEP 前回実行時に、異常終了したステップの先頭から処理を開始します
ただし、任意のステップを指定してのリスタートはできません
  • 前回実行時の結果がリスタートの実行結果に影響を与えないジョブであること
チェックポイント CHECKPOINT 前回実行時に、処理が異常終了したトランザクションから処理を開始します(既定値)
  • 前回実行時とリスタートの間に入力データの件数と、取り出すデータの順番が変わっていないこと

ジョブの状態とジョブが実行可能かどうかの対応は以下の表のようになります。
下表のジョブ実行・再実行の可否項目で、○となっている状態ではジョブ実行が可能です、×となっている状態ではジョブ実行できません。新規実行/リスタート項目はジョブが実行されるときに、新規実行として動作するのか、リスタートとして動作するのかを表します。
BatchStatusがNONEとなっている列はジョブが実行されていない状態を表しています。

JobRequestStatus BatchStatus ジョブ実行・再実行の可否 新規実行/リスタート リカバリ必要かどうか 補足
NONE NONE 新規実行 不要 通常の実行で実行可能
getStatusでNoSuchJobRequestExceptionが投げられる
STARTING × 同一ドメインの場合必要 JobRequestStatusの永続化が無効かつ、ジョブ開始中に異常終了し、ドメイン再起動でこの状態となる。
リカバリすることでNONE-FAILEDとなりリスタートできる
STARTED × 同一ドメインの場合必要 JobRequestStatusの永続化が無効かつ、ジョブ実行中に異常終了し、ドメイン再起動でこの状態となる。
リカバリすることでNONE-FAILEDとなりリスタートできる
STOPPING × 同一ドメインの場合必要 JobRequestStatusの永続化が無効かつ、ジョブの停止中に異常終了し、ドメイン再起動でこの状態となる。
リカバリすることでNONE-FAILEDとなりリスタートできる
STOPPED リスタート 不要
COMPLETED × 不要 すでに完了しているので実行できない
FAILED リスタート 不要
UNKNOWN × 不要
WAITING NONE × 不要 ジョブ2重投入となる。
投入済みのジョブはいずれ実行されるはず。
STARTING × 不要 ジョブ2重投入となる。
この状態は、1回目にSTARTINGで異常終了した後再投入した場合と、コンテナでジョブがSTARTINGとなったが、ジョブが開始した通知がジョブリクエスト制御に届く前という場合の2パターンで存在しうる。
前者ではいずれ再投入したジョブがFAILED-STARTINGになるはず。後者はいずれジョブが終了するとCOMPLETED-XXXとなるはず。
STARTED × 不要 ジョブ2重投入となる。
この状態は、1回目にSTARTEDで異常終了した後再投入した場合と、コンテナでジョブがSTARTEDとなったが、ジョブが開始した通知がジョブリクエスト制御に届く前という場合の2パターンで存在しうる。
前者はいずれ再投入したジョブがFAILED-STARTEDになるはず
STOPPING × 不要 ジョブ2重投入となる。
この状態は、1回目にSTOPPINGで異常終了した後再投入した場合に存在する。
STOPPED × 不要 ジョブ2重投入となる。
この状態は、1回目にジョブを停止した後再投入した場合に存在する。
COMPLETED × 不要 ジョブ2重投入となる。
この状態はジョブが完了した後、再投入した場合に存在する。
FAILED × 不要 ジョブ2重投入となる。
この状態はジョブがエラー終了した後、再投入した場合に存在する。
UNKNOWN × 不要 ジョブ2重投入となる。
FAILED NONE 新規実行 不要
STARTING × 不要 1回目実行時にBatchStatusがSTARTINGの時に異常終了し、2回目の実行時に振り分け失敗するとこの状態になる。
この状態ではジョブが走っていないためリカバリすべきか判断できない。
1回目実行時ではRUNNING-STARTINGなのでリカバリが必要と判断される。
STARTED × 不要 1回目実行時にBatchStatusがSTARTEDの時に異常終了し、2回目の実行時に振り分け失敗するとこの状態になる。
この状態ではジョブが走っていないためリカバリすべきか判断できない。
1回目実行時ではRUNNING-STRTEDなのでリカバリが必要と判断される。
STOPPING × 不要 1回目実行時にBatchStatusがSTOPPINGの時に異常終了し、2回目の実行時に振り分けに失敗するとこの状態になる。
この状態ではジョブが走っていないためリカバリすべきか判断できない。
1回目実行時ではRUNNING-STOPPINGなのでリカバリが必要と判断される。
STOPPED リスタート 不要
COMPLETED × 不要 すでに完了しているので実行できない
FAILED リスタート 不要
UNKNOWN × 不要
RUNNING NONE 不要 通常では存在しえない状態。getStatusでJobExecutionNotFoundExceptionが投げられる
STARTING × 不要 ジョブの実行待ちなので実行できない。
STARTED × 不要 ジョブの実行中なので実行できない
STOPPING × 不要 ジョブの停止待ちなので実行できない。停止が完了したら実行可能。
STOPPED × 不要 JobRequestStatusが永続化されていない場合、リカバリを実行後、ドメインの再起動を行うとNONE-FAILEDとなり実行できる。
getStatusでInconsistentJobExecutionExceptionが投げられる
COMPLETED × 不要 JobRequestStatusが永続化されていない場合、リカバリを実行後、ドメインの再起動を行うとNONE-FAILEDとなり実行できる。
getStatusでInconsistentJobExecutionExceptionが投げられる
FAILED × 不要 ジョブが終了したことがジョブリクエスト制御にわたる前の状態なのでリカバリの必要はない。
getStatusでInconsistentJobExecutionExceptionが投げられる
UNKNOWN × 不要
COMPLETED NONE × 不要 getStatusでJobExecutionNotFoundExceptionが投げられる
STARTING × 必要 JobRequestStatusが永続化されていない場合、リカバリを実行後、ドメインの再起動を行うとNONE-FAILEDとなり実行できる。
getStatusでInconsistentJobExecutionExceptionが投げられる
STARTED × 必要 JobRequestStatusが永続化されていない場合、リカバリを実行後、ドメインの再起動を行うとNONE-FAILEDとなり実行できる。
getStatusでInconsistentJobExecutionExceptionが投げられる
STOPPING × 必要 JobRequestStatusが永続化されていない場合、リカバリを実行後、ドメインの再起動を行うとNONE-FAILEDとなり実行できる。
getStatusでInconsistentJobExecutionExceptionが投げられる
STOPPED リスタート 不要
COMPLETED × 不要 すでに完了しているので実行できない
FAILED リスタート 不要
UNKNOWN × 不要 不正な状態

2.3. ApplicationContextの固定化

バッチアプリケーショングループの有効化処理時に ApplicationContext を生成し記憶することができます。 本機能によって、ApplicationContextの生成と初期化処理に時間がかかる構成のバッチアプリケーションについてジョブリクエスト到着後ジョブが実行開始するまでの時間を短縮することができる場合があります。
WebOTX Batch Serverでは、ジョブ実行リクエストごとにバッチアプリケーションの ApplicationContext を生成したうえでジョブを実行し、実行終了後に破棄することにより、ジョブ実行リクエスト間におけるオブジェクト空間の分離を行っています。本設定を行う為には、ジョブ実行リクエスト間でのオブジェクト空間の分離の要件が緩和可能なバッチアプリケーショングループである必要があります。

関連
  • 機能ガイド
  • 3. ジョブの停止

    WebOTX BSは実行中のジョブを停止することができます。
    ジョブの停止方法は以下の2パターンがあります。停止したジョブは前述のリスタート機能により再度実行することが可能です。

    停止方法 動作概要
    TRANSACTIONAL 実行中のステップがチャンクの終了を待ってからジョブが停止します。
    FORCE 実行中のステップがチャンクの終了を待たずにジョブを停止します。
    実行中のトランザクションはロールバックされます。
    WebOTX BSが提供している"ジョブの強制停止"を使用するためには、 強制停止リスナ(BSForceStopListenerまたは BSForceStopDetectionListener)が、 ジョブ定義に組み込まれている必要があります。
    強制停止リスナを介した強制停止要求チェックのタイミング以外では、停止されません。

    3.1. ジョブ停止コマンド

    停止コマンド(jobctl stop ,stop-job)は、運用者がジョブを停止するためのコマンドです。
    停止処理は、対象となるジョブリクエストを特定し、ジョブが開始されていなければジョブリクエストキューにキューイングされているジョブの停止要求をし、ジョブが開始されていれば開始処理時に振り分けたコンテナに対してジョブの停止要求します。
    開始コマンドでは、ジョブが終了するまでコマンドが終了しませんが、停止コマンドでは、コンテナ側がジョブの停止命令を正常に受け付けたことがわかると、実際のジョブの終了は待機せずにコマンドが終了します。

    4. ジョブの状態参照

    WebOTX BSは利用者が指定したジョブの状態を参照する機能があります。
    「2.2.2ジョブ状態管理機能」にあるようにWebOTX BSが管理するジョブの状態は、Spring Batch定義のBatchStatusとJobRequestStatusがあります。そのため、「ジョブリクエストを受け付けたが、コンテナプロセスに割り当てられる前の状態」のようにSpring Batchで表現できない状態も管理することができます。本機能では、このような状態も含めて利用者が参照できる機能を提供します。

    4.1. ジョブ状態確認コマンド

    状態確認コマンド(jobctl statusstatus-job)は、運用者がジョブの状態を確認するためのコマンドです。
    状態確認コマンドでは、対象となるジョブがコンテナからジョブの実行状態を取得し、実行状態を表示して終了します。コマンド終了時には、ジョブ実行状態に応じてWebOTX Batch Serverがステータス値を設定し返却します。

    戻り値

    ユーザからジョブ状態の取得が行われた時に返される状態です。ExitStatusBatchStatusを考慮して状態が返却されます。JobRequestStatus、BatchStatus、ExitStatusの対応関係は下表を参照してください。 BatchStatusがNONEとなっている列はジョブが実行されていない状態を表しています。

    ExitStatus と batchStatus の組合せと戻り値との対応関係
    BatchStatus
    なし COMPLETED STARTING STARTED STOPPING STOPPED FAILED UNKNOW ABANDONED *(定義なし)
    ExitStatus QUEUEING 100
    *(定義なし) 101 103 104 105 106 107 109 110 0
    COMPLETED 101 101 101 101 101 101 101 101 101
    COMPLETED WITH SKIPS 102 102 102 102 102 102 102 102 0
    EXECUTING 101 103 104 105 106 107 109 110 0
    STOPPED 106 106 106 106 106 106 106 106 0
    NOOP 108 108 108 108 108 108 108 108 0
    UNKNOWN 109 103 104 109 109 109 109 109 0
    FAILED 1 1 1 1 1 107 1 1 0
    利用者定義 101 103 104 105 106 107 109 110 0

    4.2. ジョブの状態一覧コマンド

    状態一覧コマンド(jobctl list-status)は、運用者がジョブの実行状態一覧を確認するためのコマンドです。
    バッチドメインにデプロイされたジョブ毎の最後の実行結果(最後に開始されたもの)の状態一覧を表示します。ジョブリポジトリに保存されている全ての処理結果を出力します。

    5. ジョブの実行結果取得

    ジョブの実行状態に関わらず、ジョブの実行結果を取得することができます。未完了状態のジョブの場合、ジョブが完了することを待ち合わせることもできます。

    5.1. ジョブ実行結果取得コマンド

    結果取得コマンド(jobctl resultresult-job)は、運用者がジョブの結果を取得するためのコマンドです。 結果取得処理は、対象となるジョブリクエストを特定し、開始処理時に振り分けたコンテナに対してジョブの結果取得を要求します。 結果取得コマンドでは、開始コマンドと同様、対象となるジョブが終了するまでコマンドの終了を待ち合わせます。

    6. ジョブ実行ログ

    Batch Server は、ジョブ実行毎に ジョブ実行ログ ファイルにメッセージを出力します。
    ジョブ実行ログファイルには、ジョブ実行リソースコンテキスト毎のジョブ実行ログレベル 以上のメッセージを出力します。

    ジョブ実行ログファイルに出力されたメッセージは、ジョブ開始コマンド(jobctl startstart-job)、および、ジョブ実行結果取得コマンド(jobctl resultresult-job)の転送され、これらのコマンドの標準出力に出力されます。

    ジョブ実行ログファイル に利用者任意のメッセージを出力することも可能です。
    詳細については、運用利用ガイド ジョブ実行ログに任意のメッセージを出力する、および、機能ガイド ジョブ実行ログ出力部品 を参照してください。

    パス

    ${DOMAIN_HOME}/logs/batch/${ACCOUNT_NAME}/${BATCH_APP_GROUP_NAME}/${BATCH_APP_NAME}/${JOB_NAME}/${JOB_NAME}_${JOB_INSTANCE_ID}.log

       ${DOMAIN_HOME}
    ドメインホームディレクトリまでの絶対パス。
    例) /opt/WebOTX/domains/batchsv1
       ${ACCOUNT_NAME}
    ジョブ実行アカウント名
       ${BATCH_APP_GROUP_NAME}
    バッチアプリケーショングループ名
       ${BATCH_APP_NAME}
    バッチアプリケーション名
       ${JOB_NAME}
    ジョブ名
       ${JOB_INSTANCE_ID}
    ジョブインスタンスID

    注意事項

    本機能で出力されるログはローテートや自動削除を行いません。利用者は任意のタイミングで削除してください。削除の目安としては以下を参考にしてください。

    関連