Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[ Image Removed |../../index.htm#lansa/l4wdev04_0220.htm]
現在地:

...

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

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

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

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

Info

...

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

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

  • ある「バッチ・トランザクション」データ入力アプリケーションで、次のような構成の、3つの制御テーブルを使っているとします。

    日次集計テーブル

    バッチ集計テーブル

    入力データ・テーブル

    DATE

    DATE

    DATE

    DDEBIT

    BATCH

    BATCH

    DCREDIT

    BDEBIT

    TRANSACTION

     


    BCREDIT

    ACCOUNT

     

     



    DESCRIPTION

     

     



    DEBIT

     

     



    CREDIT

  • ここでBDEBIT(バッチ借方合計)およびBCREDIT(バッチ貸方合計)は、あるDATE(日付)、BATCH(バッチ処理単位番号)のDEBIT(借方)およびCREDIT(貸方)の合計値を表します。
  • 同様に、DDEBIT(日次借方)およびDCREDIT(日次貸方)は、あるDATE(日付)のDEBIT(借方)およびCREDIT(貸方)の合計値です。

...

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

「頭書き」テーブル

「明細行」テーブル

ORDNUM

ORDNUM

CUSTNO

ORDLIN

DATE

PRODNO

TOTDUE

QUANTY

 


VALUE

  • 「頭書き」テーブルのTOTDUE(合計)は、「明細行」テーブルの、該当するレコードのすべてのVALUE(金額)を集計して求めます。TOTDUEは関連するすべての請求書明細行の合計です。



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

バッチ制御の例
[ Image Removed |../../index.htm#lansa/l4wdev04_0220.htm]