バッチ処理とバッチ サーバー
バッチ フレームワークは、Application Object Server (AOS) の複数のインスタンスにわたってタスクを処理できる、非同期でサーバーベースのバッチ処理環境を提供します。 AOS は、クライアント アプリケーション (ブラウザーなど) と財務と運用アプリ データベースとの間のインターフェイスです。
通知と繰り返しを含むバッチ ジョブを作成できるほか、サーバーベースのバッチ処理を使用して AOS の複数のインスタンスにわたるタスクを処理できます。 サーバーベースのバッチ処理を使用することには、いくつかの利点があります。 2 つのバッチ タスク間や 3 つ以上のタスク間での複雑な依存関係を追加できます。 ビジネスのニーズに応じて、タスクを連続ステップと並列ステップのいずれかで実行することもできます。 依存関係がないタスクは並列タスクとみなされることを覚えておくことが重要です。
次の図は、複数のタスクおよびタスクの依存関係があるジョブの例です。 このシナリオでは、ジョブの一部である 7 つのタスクがあります。 図は、依存タスクの結果に応じてタスクがどのように完了されるかを示しています。
バッチ フレームワークの次の側面について詳しく見てみましょう。
バッチ ジョブ は 1 つ以上のバッチ タスクで構成されます。
バッチ タスク はバッチ ジョブで実行されるアクティビティです。 バッチ ジョブに対して複数のタイプの依存関係を持つバッチ タスクを追加できます。 AOS インスタンスを設定して、それぞれでタスクを実行する複数のスレッドを実行することもできます。 実行を待機しているすべてのバッチ タスクは、バッチ サーバーとして設定されている利用可能な任意の AOS インスタンスによって実行できます。 スループットを改善し、全体的な実行時間を削減するために、バッチ ジョブを多数のタスクとして定義してから、バッチ サーバーを使用して、使用可能なすべての AOS インスタンスに対してタスクを実行することができます。
バッチ グループ はバッチ タスクの属性です。 バッチ グループを使うと、管理者は、タスクを実行する AOS インスタンスを決めたり指定したりできます。 新しいタスクを作成すると、そのタスクはデフォルトのバッチ グループに入れられます。 すべてのバッチ サーバーは、デフォルトのバッチ グループとすべてのジョブの待機中タスクを処理するよう設定されています。
バッチ サーバーのトポロジ計画
バッチ サーバーの能力は、AOS インスタンス上で同時に実行できる最大スレッド数に基づきます。 各スレッドはバッチ タスクを 1 つ実行します。 2 つまたは 3 つ以上のタスク間に複雑な依存関係を追加できます。 これらのタスクは、ビジネス ロジックとビジネスの要件に応じて、シリアル ステップか並列ステップで実行できます。 依存関係がないタスクはすべて並列タスクとみなされます。 バッチ サーバーとして設定される AOS インスタンスでは、処理を待機しているタスクを定期的にチェックします。 バッチ サーバーは各並列タスクをスレッドに割り当て、スレッドの処理を開始します。
複数の AOS インスタンスにわたる複数のスレッドを実行できます。 各 AOS インスタンスでは、設定で定義されたキャパシティに応じて、複数のスレッドを自動実行します。 つまり、1 つのジョブの並列タスクは、複数の AOS インスタンスにわたる複数のスレッドで実行できます。
バッチ サーバーでは、利用可能なスレッドを 1 分間に 1 回チェックします。 したがって、利用可能なスレッドによって待機中のタスクがピックアップされたことを確認できるまで、1 分間待機しなければならない場合があります。
バッチ サーバーの管理計画
すべてのバッチ サーバーは 1 か所で管理できます。 バッチ サーバーの一般的な使用方法の 1 つは、複数のサーバーにわたってジョブを負荷分散することです。 バッチ サーバーで処理するスレッドの数を設定できます。
バッチ サーバーは財務と運用アプリ クライアントやその他の関連コンポーネントからのリクエストを処理するアクティブな AOS インスタンスでもあるため、一括処理に AOS インスタンスを使用可能にするタイミングは慎重に決定する必要があります。
優先順位に基づくバッチ スケジューリング
機能管理ワークスペースで優先順位に基づくバッチ スケジューリング機能を有効にすることで、バッチ サーバーにバッチ ジョブを割り当てるプロセスを省略できます。 優先順位に基づくスケジューリングにより、バッチ グループをバッチ サーバーから分離して、バッチ グループの優先順位を定義できます。 ビジネス要件によって決定される相対的なスケジューリングの優先順位は、タスクが実行される順序を決定するために使用されます。 相対的な優先順位を宣言し、ジョブおよびビジネス プロセスの処理順序を決定するには、スケジューリングの優先順位の分類を使用できます。
スケジューリングの優先順位に使用可能な値は次のとおりです。
- 低
- 通常
- 高
- 重大
- 引当済み能力
この機能が有効になっている場合、通常は既定値であり、既存のすべてのバッチ グループに適用されます。 引当済み能力は最も高い優先順位を表します。 バッチ引当済み能力レベルを設定するには、システム管理>設定>システム パラメータに移動し、バッチ グローバル設定タブを選択します。バッチ スケジューリングの優先順位を有効にすることで、バッチ ジョブ レベルまで優先順位が導入され、バッチ ジョブは特定のサーバーに関連付けられなくなり、ほぼゼロのダウンタイム サービスの前提条件となります。