[
|../../index.htm#lansa/l4wdev04_0220.htm]
現在地:
「バッチ制御」は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 |
次のトピックも参照してください。
バッチ制御の例
[
|../../index.htm#lansa/l4wdev04_0220.htm]