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

ジョブ実行制御UIでは、WebOTX Batch Server(以降ではWebOTX BSと表記)を利用してのジョブの実行や停止、ジョブ実行状態の参照、ジョブ実行結果の参照を行うためのコマンドインタフェースとAPIを提供しています。
コマンドインタフェースは、HTTP経由でジョブを実行するためのコマンド(以降はNativeコマンドと表記)と、JMXRMI経由のJavaコマンドの2種を提供しています。
Batch Serverでは、ジョブの状態を JobRequestStatus, BatchStatus, ExitStatus の3つの状態で管理しています。
JobRequestStatusは、バッチドメインエージェントが受け付けたジョブ実行要求(ジョブリクエスト)の状態を表すBatch Server独自のものです。
BatchStatus(JobExecution と StepExecution の各々が保持) と ExitStatusは、Spring Batchが備えているジョブの状態を表すものです。Batch Serverでは、ExitStatusにBatch Server独自のJobRequestStatusを加味して再定義しています。
WebOTX BSがジョブリクエストを受け付けた時からジョブ実行が終了するまでの状態を表します。
各ジョブリクエストの状態についての説明は下表の通りです。
| 状態 | 説明 | 備考 |
|---|---|---|
| WAITING | ジョブリクエストを受信した状態です。 ジョブリクエストが実行開始待ちの状態を表しています。この時、ジョブリクエストの保有者は、ジョブリクエストキューです。 |
|
| STARTING | ジョブリクエストをジョブリクエストキューから取得した状態です。 ジョブリクエストが実行開始待ちの状態を表しています。この時、ジョブリクエストの保有者は、ジョブリクエストキューです。 |
|
| RUNNING | ジョブが実行中の状態です。 バッチドメイン内のいずれかのコンテナプロセス上でジョブが実行中であることを表しています。この時、ジョブリクエストの保有者は、コンテナプロセスです。 |
ジョブリポジトリにJobExecutionが存在します。 |
| COMPLETED | ジョブリクエストの実行が停止した状態です。 バッチドメイン内のいずれかのコンテナプロセス上でジョブが実行され、ジョブの実行結果の如何によらずジョブの実行が停止している状態を表しています。 |
ジョブリポジトリにJobExecutionが存在します。 |
| FAILED | ジョブリクエストの開始に失敗した状態です。 バッチドメイン内のいずれかのコンテナプロセス上でジョブを開始するまでに、何らかの理由によりジョブが開始できなかった状態を表しています。 |
RUNNING→UNKNOWN→FAILEDと遷移したジョブリクエストの場合、ジョブリポジトリにJobExecutionが存在します。 |
| UNKNOWN | ドメインエージェントの障害発生後の永続化ファイルからのジョブリクエストのリカバリに失敗した状態です。 リカバリ前のジョブリクエストの状態がSTARTINGの場合、ジョブリクエストの再投入が必要です。RUNNINGの場合、ジョブの実行状態を確認の上、場合によってはジョブリポジトリのリカバリを実行した上でのジョブリクエストの再投入が必要です。 |
RUNNING→UNKNOWNと遷移したジョブリクエストの場合、ジョブリポジトリにJobExecutionが存在します。 |
各ジョブリクエスト状態の状態遷移は下図の通りです。

JobRequestStatusが FAILED の状態ではジョブのリスタートではなく、通常の実行が可能です。
Spring Batchで定義されているジョブ、ステップの状態です。ジョブ、ステップ毎に以下のいずれかのBatchStatusを持ちます。
| BatchStatus名 | 意味 |
|---|---|
| STARTING | ジョブまたはステップの開始処理を行っている状態です。 |
| STARTED | ジョブまたはステップが開始され、実行中の状態です。 |
| STOPPING | ユーザにより、ジョブの停止処理が実行され、ジョブまたはステップが停止待ちを行っている状態です。この状態ではジョブはまだ実行中です。 |
| STOPPED | ユーザにより、ジョブの停止処理が実行され、ジョブまたはステップが停止された状態です。この状態ではジョブは動いていません。 |
| COMPLETED | ジョブまたはステップの処理が最後まで終了した状態です。ジョブがこの状態になった場合、ジョブは動いていません。ステップがこの状態になった場合は、該当ステップは終了している状態です。 |
| FAILED | ジョブまたはステップの実行中に何らかのエラーが発生した状態です。 |
| UNKNOWN | ジョブまたはステップの実行中にジョブリポジトリの障害が発生した場合やトランザクションの状態が不正となる場合の状態です。 |
| ABANDONED | リスタート対象外となっている状態です。SpringBatchでCommandLineJobLauncherコマンドのオプションとして、-abandoneが指定された時のみ、ジョブのBatchSetatusとしてABANDONEDが設定されるので、WebOTX BSでジョブを実行した場合ジョブがこの状態になることはありません。 |
個々のジョブ実行の状態はBatchStatusで表します。WebOTX BSでは上記のようにABANDONED状態となることはありません。
個々のジョブ内のステップの状態はBatchStatusで表します。
ユーザからジョブ状態の取得が行われた時に返される状態です。JobRequestStatus、BatchStatusを考慮して状態が返却されます。JobRequestStatus、BatchStatus、ExitStatusの対応関係は下表を参照してください。
BatchStatusがNONEとなっている列はジョブが実行されていない状態を表しています。
ExitStatus と ジョブ開始コマンド(jobctl start, start-job)、および、ジョブ実行結果取得コマンド(jobctl result, result-job)の戻り値の対応関係については、ExitCodeMapping機能 を参照してください。
| 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 | − | ||
ジョブの実行中に、ドメインエージェント、バッチコンテナ、データベースが異常終了した場合に、実行中のジョブが不正な状態となってしまう場合があります。不正な状態のジョブは通常のリスタートでは再実行することができません。本機能は不正な状態になってしまったジョブの状態をFAILEDに上書きし、再実行できるようにする機能です。ジョブリポジトリのリカバリはrepoadmin recoverコマンドとして提供されます。
ただし、不正な状態のジョブが存在する場合は、ジョブが利用する業務DBのデータも不正となっている場合があります。本機能は業務DBのリカバリなどは行いません。そのため、利用者は必要であれば業務DBのリカバリなどを行ったあとで、利用者責任で本機能によりジョブの状態を変更し、ジョブのリスタートを行ってください。
ジョブリポジトリは、ジョブの実行状態、結果、履歴、および、制御情報を保持し永続化する仕組みです。ジョブを開始すると、JobExecution および StepExecution が生成され、ジョブ処理過程をジョブリポジトリに記録します。
WebOTX Batch Serverの既定値では、ジョブリポジトリとして同梱しているデータベースのDerbyを使用します。ジョブリポジトリは、サポート対象の任意のデータベースに配置することができますが、基本的には処理対象のデータと同一のデータベースインスタンス上に配置する(=所謂業務DB上に配置する)ことを推奨します。
例えば、Chunk志向スタイルでデータベース上データを更新するジョブの場合、Chunk単位のトランザクション区間内で、処理対象の業務データおよび業務テーブルの更新処理と、ジョブ実行状態や制御情報(処理件数等)およびジョブリポジトリテーブルの更新処理とが実行されます。処理対象の業務データとジョブリポジトリが、異なるデータベース上に配置する場合、Chunk単位のトランザクション区間内に、複数のデータベースとのトランザクションが含まれることになります。それぞれのデータベースとのトランザクションをChunk単位のトランザクションに参加させ、単一のトランザクションとして扱うためには、各データベースとの接続にXAドライバを使用する(=XAドライバを使用したJDBCデータソースを使用する)必要があります。

| 論理テーブル名 | 物理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を採番するシーケンス。 |
全階層の頂点としての役割を持つ JobInstance に関する全ての情報を保持するテーブルです。
| 項目名 | 項目ID | 説明 | |
|---|---|---|---|
| 1 | ジョブインスタンスID | JOB_INSTANCE_ID | ジョブインスタンスを識別する一意な主キー。この値はJobInstanceオブジェクトのgetId()メソッドを使用して得られる |
| 2 | バージョン | VERSION | |
| 3 | ジョブ名 | JOB_NAME | Jobオブジェクトから得られるジョブの名前。ジョブインスタンスを識別することに必要であるため、nullは許容されない。 |
| 4 | ジョブキー | JOB_KEY | ジョブインスタンスを一意に識別する文字列。ジョブ名とジョブパラメータを直列化した一意な文字列であり、ジョブ名とジョブパラメータのセットが一致するジョブは、同じジョブであると識別する。 |
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') |
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 | ジョブ実行の最終更新時刻 |
ジョブの 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 |
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 | ステップ実行の最終更新時刻 |
ステップの 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 |
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | ジョブインスタンスID | JOB_INSTANCE_ID | BIGINT | 8 | |
| 2 | バージョン | VERSION | BIGINT | 8 | |
| 3 | ジョブ名 | JOB_NAME | VARCHAR | 100 | |
| 4 | ジョブキー | JOB_KEY | VARCHAR | 32 |
JOB_NAME、JOB_KEY 列に対するインデックスです。
| 項目名 | 項目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 |
| 項目名 | 項目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桁) |
JOB_INSTANCE_ID 列に対するインデックスです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | ジョブ実行ID | JOB_EXECUTION_ID | BIGINT | 8 | |
| 2 | SHORT_CONTEXT | SHORT_CONTEXT | VARCHAR | 2500 | |
| 3 | SERIALIZED_CONTEXT | SERIALIZED_CONTEXT | CLOB | 可変(*) |
JOB_EXECUTION_ID 列に対するインデックスです。
| 項目名 | 項目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桁) |
VERSION 列に対するインデックスです。
STEP_NAME、JOB_EXECUTION_ID 列に対するインデックスです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | ステップ実行ID | STEP_EXECUTION_ID | BIGINT | 8 | |
| 2 | SHORT_CONTEXT | SHORT_CONTEXT | VARCHAR | 2500 | |
| 3 | SERIALIZED_CONTEXT | SERIALIZED_CONTEXT | CLOB | 可変(*) |
STEP_EXECUTION_ID 列に対するインデックスです。
ジョブインスタンスID を採番するシーケンスを実現するためのテーブルです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | 最終採番値 | ID | BIGINT | 8 | |
| 2 | DUMMY | DUMMY | VARCHAR | 1 |
ジョブ実行ID を採番するシーケンスを実現するためのテーブルです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | 最終採番値 | ID | BIGINT | 8 | |
| 2 | DUMMY | DUMMY | VARCHAR | 1 |
ステップ実行ID を採番するシーケンスを実現するためのテーブルです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | 最終採番値 | ID | BIGINT | 8 | |
| 2 | DUMMY | DUMMY | VARCHAR | 1 |
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | ジョブインスタンスID | JOB_INSTANCE_ID | BIGINT | 8 | |
| 2 | バージョン | VERSION | BIGINT | 8 | |
| 3 | ジョブ名 | JOB_NAME | VARCHAR | 100 | |
| 4 | ジョブキー | JOB_KEY | VARCHAR | 32 |
JOB_NAME、JOB_KEY 列に対するインデックスです。
| 項目名 | 項目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 |
| 項目名 | 項目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桁 |
JOB_INSTANCE_ID 列に対するインデックスです。
| 項目名 | 項目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 |
JOB_EXECUTION_ID 列に対するインデックスです。
| 項目名 | 項目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桁 |
VERSION 列に対するインデックスです。
STEP_NAME、JOB_EXECUTION_ID 列に対するインデックスです。
| 項目名 | 項目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 |
STEP_EXECUTION_ID 列に対するインデックスです。
ジョブインスタンスIDを採番するシーケンスです。
ジョブ実行IDを採番するシーケンスです。
ステップ実行IDを採番するシーケンスです。
| 項目名 | 項目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 |
| 項目名 | 項目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 |
| 項目名 | 項目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 | μ秒 |
JOB_INSTANCE_ID 列に対するインデックスです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | ジョブ実行ID | JOB_EXECUTION_ID | NUMBER | 11 | 19桁(小数点以下0桁) |
| 2 | SHORT_CONTEXT | SHORT_CONTEXT | VARCHAR2 | 2500 | |
| 3 | SERIALIZED_CONTEXT | SERIALIZED_CONTEXT | CLOB | 可変(*) |
| 項目名 | 項目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 | μ秒 |
VERSION 列に対するインデックスです。
STEP_NAME、JOB_EXECUTION_ID 列に対するインデックスです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | ステップ実行ID | STEP_EXECUTION_ID | NUMBER | 11 | 19桁(小数点以下0桁) |
| 2 | SHORT_CONTEXT | SHORT_CONTEXT | VARCHAR2 | 2500 | |
| 3 | SERIALIZED_CONTEXT | SERIALIZED_CONTEXT | CLOB | 可変(*) |
ジョブインスタンスIDを採番するシーケンスです。
ジョブ実行IDを採番するシーケンスです。
ステップ実行IDを採番するシーケンスです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | ジョブインスタンスID | JOB_INSTANCE_ID | BIGINT | ||
| 2 | バージョン | VERSION | BIGINT | ||
| 3 | ジョブ名 | JOB_NAME | VARCHAR | 100 | |
| 4 | ジョブキー | JOB_KEY | VARCHAR | 32 |
| 項目名 | 項目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 |
| 項目名 | 項目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 |
JOB_INSTANCE_ID 列に対するインデックスです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | ジョブ実行ID | JOB_EXECUTION_ID | BIGINT | ||
| 2 | SHORT_CONTEXT | SHORT_CONTEXT | VARCHAR | 2500 | |
| 3 | SERIALIZED_CONTEXT | SERIALIZED_CONTEXT | TEXT |
| 項目名 | 項目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 |
VERSION 列に対するインデックスです。
STEP_NAME、JOB_EXECUTION_ID 列に対するインデックスです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | ステップ実行ID | STEP_EXECUTION_ID | BIGINT | ||
| 2 | SHORT_CONTEXT | SHORT_CONTEXT | VARCHAR | 2500 | |
| 3 | SERIALIZED_CONTEXT | SERIALIZED_CONTEXT | TEXT |
ジョブインスタンスID を採番するシーケンスを実現するためのテーブルです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | 最終採番値 | ID | BIGINT |
ジョブ実行ID を採番するシーケンスを実現するためのテーブルです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | 最終採番値 | ID | BIGINT |
ステップ実行ID を採番するシーケンスを実現するためのテーブルです。
| 項目名 | 項目ID | 属性 | 長さ | 精度 | |
|---|---|---|---|---|---|
| 1 | 最終採番値 | ID | BIGINT |
WebOTX BSはジョブを開始する機能を持っています。
ジョブの実行自体はSpring Batchを利用します。ジョブは複数同時に実行することができます。
ジョブ開始コマンド(jobctl start, start-job)は、運用者がジョブ実行処理を開始する、もしくは再実行処理を開始するためのコマンドです。
ジョブ開始コマンドは、指定されたドメインエージェントに対し開始要求を行います。
全てのジョブの実行要求(開始、再実行)は、リクエストキューにキューイングされ、ジョブの実行が可能になり次第処理が実行されます。
ジョブ開始コマンドでは、対象となるジョブが終了するのを待ち合わせ、コマンドが終了します。
コマンドプロセスが何らかの原因で異常終了したとしても、実行されているジョブの処理には影響されません。ジョブの実行結果を取得する必要がある場合は、ジョブの結果取得コマンドを実行してください。
ユーザからジョブ状態の取得が行われた時に返される状態です。ExitStatus、BatchStatusを考慮して状態が返却されます。JobRequestStatus、BatchStatus、ExitStatusの対応関係は下表を参照してください。
BatchStatusがNONEとなっている列はジョブが実行されていない状態を表しています。
ExitStatus と ジョブ開始コマンド(jobctl start, start-job)、および、ジョブ実行結果取得コマンド(jobctl result, result-job)の戻り値の対応関係については、ExitCodeMapping機能 を参照してください。
| 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 | |
| 利用者定義 | 任意 | 任意 | 任意 | 任意 | 任意 | 任意 | 任意 | 任意 | |
Batch Serverは、ジョブ制御用のJava APIを提供しています。
本APIを利用することで、任意のJavaアプリケーションからBatch Server上で実行するジョブの制御を行うことができます。本APIは、Stand Alone Javaアプリケーションの他、Java EE Application Server上で実行されるWebアプリケーションや、EJB内で利用することが可能です。
本APIを利用したジョブ実行を行う場合、下記のjarファイルをクラスパスに追加する必要があります。それぞれのファイルは、BSがインストールされている環境では表に記載する場所に格納されています。必要に応じてコピーするなどして利用してください。
| ディレクトリ | 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 |
Batch Serverは、ジョブスケジューラ製品の WebSAM JobCenter と連携しています。
主要な連携機能は、WebSAM JobCenter から WebOTX Batch Server との連携機能オプションとして提供されています。
WebSAM JobCenterとの連携機能を利用することで、WebSAM JobCenterが備えるスケジューリング機能や、ジョブネットワーク実行制御機能、ジョブネットワークおよびジョブの実行結果管理機能等を利用することができます。
また、WebOTX Batch Server用単位ジョブ部品が利用できる為、最低限の必須項目を入力するだけでBatch Server上のジョブを実行するジョブネットワークが定義できる外、各種ジョブ制御操作を使い勝手の良いGUIから行うことが可能です。
Batch Serverでは、異常終了したジョブを再実行することができます。ただし、正常に完了したジョブはリスタートできません。
ジョブを再実行するには、ジョブの開始時に指定したパラメータと同一のパラーメータを全て指定するか、ジョブの開始時に指定したリクエストIDを指定します。ジョブ開始コマンド(jobctl start, start-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 | × | − | 不要 | 不正な状態 |
バッチアプリケーショングループの有効化処理時に ApplicationContext を生成し記憶することができます。
本機能によって、ApplicationContextの生成と初期化処理に時間がかかる構成のバッチアプリケーションについてジョブリクエスト到着後ジョブが実行開始するまでの時間を短縮することができる場合があります。
WebOTX Batch Serverでは、ジョブ実行リクエストごとにバッチアプリケーションの ApplicationContext を生成したうえでジョブを実行し、実行終了後に破棄することにより、ジョブ実行リクエスト間におけるオブジェクト空間の分離を行っています。本設定を行う為には、ジョブ実行リクエスト間でのオブジェクト空間の分離の要件が緩和可能なバッチアプリケーショングループである必要があります。
WebOTX BSは実行中のジョブを停止することができます。
ジョブの停止方法は以下の2パターンがあります。停止したジョブは前述のリスタート機能により再度実行することが可能です。
| 停止方法 | 動作概要 |
|---|---|
| TRANSACTIONAL | 実行中のステップがチャンクの終了を待ってからジョブが停止します。 |
| FORCE | 実行中のステップがチャンクの終了を待たずにジョブを停止します。 実行中のトランザクションはロールバックされます。 WebOTX BSが提供している"ジョブの強制停止"を使用するためには、 強制停止リスナ(BSForceStopListenerまたは BSForceStopDetectionListener)が、 ジョブ定義に組み込まれている必要があります。 強制停止リスナを介した強制停止要求チェックのタイミング以外では、停止されません。 |
停止コマンド(jobctl stop ,stop-job)は、運用者がジョブを停止するためのコマンドです。
停止処理は、対象となるジョブリクエストを特定し、ジョブが開始されていなければジョブリクエストキューにキューイングされているジョブの停止要求をし、ジョブが開始されていれば開始処理時に振り分けたコンテナに対してジョブの停止要求します。
開始コマンドでは、ジョブが終了するまでコマンドが終了しませんが、停止コマンドでは、コンテナ側がジョブの停止命令を正常に受け付けたことがわかると、実際のジョブの終了は待機せずにコマンドが終了します。
WebOTX BSは利用者が指定したジョブの状態を参照する機能があります。
「2.2.2ジョブ状態管理機能」にあるようにWebOTX BSが管理するジョブの状態は、Spring Batch定義のBatchStatusとJobRequestStatusがあります。そのため、「ジョブリクエストを受け付けたが、コンテナプロセスに割り当てられる前の状態」のようにSpring Batchで表現できない状態も管理することができます。本機能では、このような状態も含めて利用者が参照できる機能を提供します。
状態確認コマンド(jobctl status, status-job)は、運用者がジョブの状態を確認するためのコマンドです。
状態確認コマンドでは、対象となるジョブがコンテナからジョブの実行状態を取得し、実行状態を表示して終了します。コマンド終了時には、ジョブ実行状態に応じてWebOTX Batch Serverがステータス値を設定し返却します。
ユーザからジョブ状態の取得が行われた時に返される状態です。ExitStatus、BatchStatusを考慮して状態が返却されます。JobRequestStatus、BatchStatus、ExitStatusの対応関係は下表を参照してください。
BatchStatusがNONEとなっている列はジョブが実行されていない状態を表しています。
| 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 | |
状態一覧コマンド(jobctl list-status)は、運用者がジョブの実行状態一覧を確認するためのコマンドです。
バッチドメインにデプロイされたジョブ毎の最後の実行結果(最後に開始されたもの)の状態一覧を表示します。ジョブリポジトリに保存されている全ての処理結果を出力します。
ジョブの実行状態に関わらず、ジョブの実行結果を取得することができます。未完了状態のジョブの場合、ジョブが完了することを待ち合わせることもできます。
Batch Server は、ジョブ実行毎に ジョブ実行ログ ファイルにメッセージを出力します。
ジョブ実行ログファイルには、ジョブ実行リソースコンテキスト毎のジョブ実行ログレベル 以上のメッセージを出力します。
ジョブ実行ログファイルに出力されたメッセージは、ジョブ開始コマンド(jobctl start, start-job)、および、ジョブ実行結果取得コマンド(jobctl result, result-job)の転送され、これらのコマンドの標準出力に出力されます。
ジョブ実行ログファイル に利用者任意のメッセージを出力することも可能です。
詳細については、運用利用ガイド ジョブ実行ログに任意のメッセージを出力する、および、機能ガイド ジョブ実行ログ出力部品 を参照してください。
${DOMAIN_HOME}/logs/batch/${ACCOUNT_NAME}/${BATCH_APP_GROUP_NAME}/${BATCH_APP_NAME}/${JOB_NAME}/${JOB_NAME}_${JOB_INSTANCE_ID}.log
本機能で出力されるログはローテートや自動削除を行いません。利用者は任意のタイミングで削除してください。削除の目安としては以下を参考にしてください。