5.4.3 ロット制御
- 〈この項の構成〉
(1) ロットの構成
OBMが業務プログラムのトランザクション起動の制御をする単位であるロットは,最大3階層で構成できます。最上位のロットは,OBMと1対1で対応しています。上位のロットと下位のロットは,1対nで対応しています。データ型OBMは,バッチデータを格納した表と1対1で対応しています。
最下位ロットが,トランザクションを起動する単位となります。上位のロットでは,下位のロットのスケジュール方法,同時起動数などを定義することで,業務内容に応じたバッチ処理を行えます。
ロット構成は,OBM開始時に定義情報を複写して使用します。1つのロット構成を複数のOBMで共用できます。また,OBM開始時に起動する開始UOCでは,その日のデータ量など業務の都合に応じて効率良くバッチ処理を行うために,ロットの順番を並べ替えることができます。
データ型OBMのロット構成例を次の図に示します。
(2) ロットの状態遷移
ロットの状態は,OBMの状態に伴い遷移します。OBMの状態が実行中となると,ロットのスケジュール形態に応じてロットをスケジュールしロット状態を変更してバッチ処理を実行します。イベント型のOBMでは,コマンド,APIによって最下位ロットの状態を個別に変更することもできます。
ロットの状態と,OBMの状態遷移を次に示します。
(a) データ型
図5-11の状態の意味を次の表に示します。
状態 |
意味 |
---|---|
未実行 |
バッチ処理を開始していない状態です。 |
実行待ち |
ロットのスケジュールを待っている状態です。 |
実行中 |
ロットを実行している状態です。最下位ロットの場合は,ノーマルトランザクションを実行している状態です。 |
実行済み |
ロットの全データの処理が終了した状態です。 |
強制停止 |
ノーマルトランザクションからの強制停止要求によってロットを強制停止した状態です※。 |
図5-11の状態遷移の説明を次の表に示します。項番は図の番号に対応しています。
項番 |
状態遷移 |
---|---|
1. |
OBM開始コマンドを実行しOBMの状態が初期化中状態になると,ロットの状態が実行待ち状態に遷移します。 |
2. |
OBMの状態が実行中の場合,ロットのスケジュール形態に応じてロットの実行スケジュールを行います。実行スケジュールされたロットの状態は,実行中に遷移します。 |
3. |
全データの処理が終了するとノーマルトランザクションを実行している再下位ロットの状態は,実行済みに遷移します。上位のロットは,ほかに実行可能な下位ロットがあれば実行中のまま続行します。上位ロットは,下位ロットがすべて実行済みになると実行済みに遷移します。 |
4. |
OBMの状態が次の要因によって未実行になると,ロットの状態も未実行に遷移します。
|
5. |
OBMの状態が,次の要因によって強制停止状態になると,ロットの状態は実行待ちに遷移します。
また,ロットの同時実行数を減少させると,上位ロットの同時実行数の上限を超える実行中の下位ロットは,実行待ちに遷移します。 |
6. |
実行中のノーマルトランザクションからAPIによるロットの強制停止要求を受けると,ノーマルトランザクションを実行している最下位ロットの状態は,強制停止に遷移します。上位のロットは,ほかに実行可能な下位ロットがあれば実行中のまま続行します。実行できる下位ロットがなくなると強制停止に遷移します。 |
7. |
OBM開始コマンドを実行し再開始UOCが正常終了すると実行待ち状態に遷移します。 |
8. |
OBMの状態が次の要因によって未実行になると,ロットの状態も未実行に遷移します。
|
9. |
OBMの状態が次の要因によって未実行になると,ロットの状態も未実行に遷移します。
|
(b) イベント型
図5-12の状態の意味を次の表に示します。
状態 |
意味 |
---|---|
未実行 |
バッチ処理を開始していない状態です。 |
実行待ち |
ロットのスケジュールを待っている状態です。 |
実行中 |
ロットを実行している状態です。最下位ロットの場合は,ノーマルトランザクションを実行している状態です。 |
実行済み |
APIによるロットの正常終了要求を受付た状態です。 |
強制停止 |
ノーマルトランザクションからの強制停止要求によってロットを強制停止した状態です※。 |
計画停止 |
次のどれかの要因で計画的にロットを停止した状態です。
|
図5-12の状態遷移の説明を次の表に示します。項番は図の番号に対応しています。
項番 |
状態遷移 |
---|---|
1. |
OBM開始コマンドを実行しOBMの状態が初期化中状態になると,ロットの状態が実行待ち状態に遷移します。 |
2. |
OBMの状態が実行中の場合,ロットのスケジュール形態に応じてロットの実行スケジュールを行います。実行スケジュールされたロットの状態は,実行中に遷移します。 |
3. |
実行中のノーマルトランザクションからAPIによるロットの正常終了要求を受けるとノーマルトランザクションを実行している再下位ロットの状態は,実行済みに遷移します。上位のロットは,ほかに実行可能な下位ロットがあれば実行中のまま続行します。上位ロットは,下位ロットがすべて実行済みになると実行済みに遷移します。 |
4. |
OBMの状態が次の要因によって未実行になると,ロットの状態も未実行に遷移します。
|
5. |
OBMの状態が,次の要因によって強制停止状態になると,ロットの状態は実行待ちに遷移します。
また,ロットの同時実行数を減少させると,上位ロットの同時実行数の上限を超える実行中の下位ロットは,実行待ちに遷移します。 |
6. |
実行中のノーマルトランザクションからAPIによるロットの強制停止要求を受けると,ノーマルトランザクションを実行している最下位ロットの状態は,強制停止に遷移します。上位のロットは,ほかに実行可能な下位ロットがあれば実行中のまま続行します。実行できる下位ロットがなくなると強制停止に遷移します。 |
7. |
OBM開始コマンドを実行し再開始UOCが正常終了すると実行待ち状態に遷移します。 |
8. |
OBMの状態が次の要因によって未実行になると,ロットの状態も未実行に遷移します。
|
9. |
OBMの状態が次の要因によって未実行になると,ロットの状態も未実行に遷移します。
|
10. |
実行中のノーマルトランザクションからAPIによるロットの計画停止要求を受けると,ノーマルトランザクションを実行している最下位ロットの状態は,計画停止に遷移します。上位のロットは,ほかに実行可能な下位ロットがあれば実行中のまま続行します。実行できる下位ロットがなくなると計画停止に遷移します。ただし,強制停止状態の下位ロットがある場合は,強制停止に遷移します。 また,OBMの状態が次の要因によって計画停止状態になると,ロットの状態は計画停止に遷移します。
|
11. |
OBM開始コマンドを実行し再開始UOCが正常終了すると実行待ち状態に遷移します。 |
12. |
OBMの状態が次の要因によって計画停止状態になると,ロットの状態は計画停止状態に遷移します。
|
13. |
OBMの状態が次の要因によって未実行になると,ロットの状態も未実行に遷移します。
|
14. |
ロット名を指定したOBM開始コマンドを実行しOBMの状態が初期化中状態になると,コマンドで指定したロット以外は,計画停止状態に遷移します。 |
(3) ロットのスケジュール形態
ロットを2階層,あるいは3階層で構成した場合は,下位ロットのスケジュール方式を選択できます。下位ロットのスケジュール方式は,次の方式から選択できます。
-
シリアルスケジュール
-
優先スケジュール
(a) シリアルスケジュール
シリアルスケジュールは,実行中のロットが正常終了してから,次のロットをスケジュールする形態です。シリアルスケジュールの設定をしたロットの下位ロットは,定義した順番(開始UOCで並べ替えた場合は,並べ替えた順番)に処理されます。ロットの同時実行数に余裕があっても,先に定義した下位ロットが正常終了するまでは,あとに定義した下位ロットは処理されません。
先に定義した下位ロットが計画停止,あるいは強制停止した場合は,あとに定義した下位ロットは処理しないで,上位ロットも停止します。
ロットの定義順番どおりに必ず処理を実行したい場合に使用します。
(b) 優先スケジュール
優先スケジュールは,先に定義した下位ロットから優先してスケジュールする形態です。優先スケジュールを設定したロットの下位ロットは,定義した順番(開始UOCで並べ替えた場合は,並べ替えた順番)に処理されます。ロットの同時実行数に余裕がある場合は,先に定義した下位ロットが正常終了していなくても,あとに定義した下位ロットを並列に処理します。
先に定義した下位ロットが計画停止,あるいは障害停止した場合は,あとに定義した下位ロットの処理を行います。実行可能な下位ロットがなくなった時点で上位のロットが停止します。
また,優先スケジュールを使用する場合,ロットの同時実行数を制御することで,複数のロットを並列して処理できます。ロットの同時実行数の制御については,「(4) ロットの同時実行数の制御」を参照してください。
(4) ロットの同時実行数の制御
順番に処理する必要のないデータは,並列に処理することでバッチ処理全体の実行時間を短縮できます。
ロットごとの同時実行数を制御することで,複数のロットのトランザクションを起動して並列に処理できます。
1つのロットに処理を集中すると,バッチデータの配置によっては,データベースへの負荷が集中して,全体の処理効率が悪くなることがあります。このような場合は,ロットごとの同時実行数を均等にすることで,効率良く処理できます。
逆に,データ量が多いロットと,データ量が少ないロットを均等にスケジュールするとデータ量が多いロットの処理終了まで時間が掛かり,バッチ業務全体の終了時間が遅れることがあります。このような場合は,データ量が多いロットの同時実行数をほかのロットより多くすることで,全体の処理時間を短くできます。
ロットの同時実行数は,eeobmchgtrnコマンドによって変更できます。なお最下位ロットの同時実行数は,1固定のためeeobmchgtrnコマンドで変更できません。
また,下位ロットのスケジュールをロット構成が2階層の最上位ロット,もしくはロット構成が3階層で2階層目のロットをシリアルスケジュールとした場合に同時実行数に2以上を指定しても同時に実行されるロットは1つとなります。
(5) ロットのスケジュール形態と同時実行数を使用したロット構成の例
- (例1)
-
-
店群Aと店群Bの店を2店ずつ均等に処理します。
図5‒16 ロット構成の例1
-
- (例2)
-
-
店群Aと店群Bの店をできるだけ均等に処理します。
-
同時に処理する上限を3店とします。
図5‒17 ロット構成の例2
-
- (例3)
-
-
店群Aと店群Bの店を並行して均等に処理します。
-
店群内の店は定義した順番でシリアライズします。
図5‒18 ロット構成の例3
-
(6) ロットの同時実行数の自動増加
実行中のロット数の合計が,最上位ロットの同時実行数未満の場合,下位ロット(最下位ロットの同時実行数は1で固定のため,中間のロット)の同時実行数を自動的に増加できます。一部のロットの処理が終了した場合などに,最上位ロットの同時実行数を有効に利用しバッチ業務を効率良く実行するために,処理が終了したロット以外のロットの同時実行数を自動的に増加します。
同時実行数の自動増加は,ロット構造が3階層の場合に使用できます。2階層目の同時実行数を最上位ロットの同時実行数に応じて増加させます。
2階層目のロットをスケジュール形態と同時実行数に従いスケジュールした場合に,
最上位ロットの同時実行数 > 実行中のロット数 |
となっているときに,同時実行数の増加上限に達していない2階層目のロットがあれば,同時実行数を増加してロットをスケジュールします。複数のロットが同時実行数を増加可能な場合は,ロットのスケジュール形態に従い先に定義したロットの同時実行数を増加させます。先に定義したロットの同時実行数を増加させても実行可能なロットがない場合は,次に定義したロットの同時実行数を増加させます。