バッチ制御の考え方

「バッチ制御」はLANSAリポジトリの特殊機能です。あるファイルの数値フィールドの合計値を、別のファイルのフィールドに合計する場合に使います。レコードの挿入/更新/削除の都度、自動的に合計値も更新されます。バッチ制御に使うフィールドがキー・フィールドを含んでいてもかまいません。

データ入力にあたって、合計値を検証する手段としてよく使われます。例えば注文の「頭書き」ファイルで、注文金額の合計を求める、という使い方ができます。該当する注文明細レコードの「金額」フィールドを合算して「合計」を求めるのです。同様に、注文明細レコードの個数を数えるためにも使えます。

ファイル内でバッチ制御を使用すると、データベースI/Oの量を減らすことにより、パフォーマンスを改善できます。また、計算を集中管理し、必要な時点で自動的に計算することで、アプリケーションのロジックが簡潔になるという効果もあります。バッチ制御はファイル単位で定義します。また、その実装にはOAM (オブジェクト・アクセス・モジュール) が使われています。

バッチ制御と同等の処理を行うファンクションを用意し、ファイル単位のトリガーにより起動する、という実装方法も考えられます。この方法は、トリガー・ファンクションを手入力で記述する必要があります。しかしどのような処理でも記述でき、適応性の面でも優れているので、可能であればこの方針で実装するようお勧めします。

重要:バッチ制御ロジックや、これをサポートするために使用するリポジトリのフィールドは、論理データ・モデリングの使い方と整合しない場合があるので注意してください。

バッチ制御の例を示します。

日次集計ファイル

バッチ集計ファイル

入力データ・ファイル

DATE

DATE

DATE

DDEBIT

BATCH

BATCH

DCREDIT

BDEBIT

TRANSACTION

 

BCREDIT

ACCOUNT

 

 

DESCRIPTION

 

 

DEBIT

 

 

CREDIT

 

「入力データ」ファイルを定義に、バッチ制御ロジック・コンポーネントを使って次のように指定します。

次の簡単な例を考えてみましょう。注文の「頭書き」ファイルと「明細行」ファイルには次のようなフィールドがあるとします。

「頭書き」ファイル

「明細行」ファイル

ORDNUM

ORDNUM

CUSTNO

ORDLIN

DATE

PRODNO

TOTDUE

QUANTY

 

VALUE

 

次のトピックも参照してください。

バッチ制御の例