DAL

データアクセス階層 (DAL) を使用すると、開発者はデータについてルールを記述できます。DAL はセッションではなくテーブルに関連付けられます。したがって、テーブルにアクセスすると、DAL が使用されます。この方法により、さまざまなセッションが同じルールを使用することでテーブルを更新できます。また、統合機能でも DAL を使用して、更新が同じルールで処理されるようにします。

データアクセス階層 (DAL) スクリプトはアプリケーションのビジネスルールを実装して、データベースの論理的な整合性を維持しています。DAL スクリプトは、ソフトウェア構成要素であり、特定のテーブルと連携したライブラリです。これらのスクリプトはオブジェクトにコンパイルされます。セッションがテーブルに処理を実行すると、そのテーブルの DAL が読み込まれます。

LN には、DAL 1、DAL 2 という 2 種類のデータアクセス階層スクリプトがあります。

ビジネスルール

ビジネスルールは、ビジネスの側面や運営を定義または制約するステートメントです。ビジネスの運営方法を管理したり、それに影響を与えたりするために作成されます。ビジネスルールは論理的な整合性ルールであり、データベースでの参照の整合性ルールとは異なります。

ビジネスルール - 例

以下は、購買システムのビジネスルールの例です。

  • 品目はその発注先からしかオーダできない
  • 品目の総重量と正味重量は同じ場合、梱包しない
  • オーダのシステム入力後に発注先は購買オーダの到着日を知らせる
  • 手持在庫がある場合は品目を削除できない
  • 品目のオーダを入力するとオーダ中の品目数量が増える
  • オーダが到着すると、手持の品目数量が増えてオーダ中の品目数量が減る

参照の整合性ルール - 例

一方、購買システムの整合性ルールは以下のようになります。

  • 品目を発注するにはその品目が存在しなければならない
  • 品目に発注先がある場合は、システムがその発注先を認識する必要がある
  • 品目レコードがシステムの他の場所で使用されている場合は、品目を削除できない

ビジネスルールはフックとして実装されます。「フック」とはデータアクセス階層スクリプトで作成する事前定義の関数名です。4GL エンジンは、ユーザインタフェースを実行するときと、DAL が適用されるテーブルにデータベース関連の処理を実行するときに、この関数を呼び出します。

ビジネスルールは、DAL でのビジネスルールの実装方法によって分類されます。

DAL スクリプトの種類によって、以下のように分類されます。

  • プロパティフックまたはフィールドフック
  • オブジェクトフック
  • フィールド依存情報
  • ビジネスメソッド
DAL 1

DAL 1 スクリプトは Infor Baan 5.0.0 で導入されました。DAL 1 スクリプトはデータベースロジック (例: 論理的な整合性ルール) を含みますが、通常、属するテーブルのすべてのビジネスロジックを含むわけではありません。多くの場合、ビジネスロジックは DAL 1 スクリプトと UI スクリプトにまたがっています。

多くの UI スクリプトにもビジネスロジックが含まれます。たとえば以下のようなロジックが含まれます。

  • フィールドを読取専用にする
  • 列挙型フィールドでどの列挙定数が選択可能であるか決定する
  • フィールドの変更後に関連フィールドを更新する

このため、DAL 1 スクリプトを使用し、Infor LN Business Adapter を介して統合を行うことは非常に困難です。別のアプリケーションが LN テーブルに接続すると、UI スクリプトのビジネスロジックはスキップされます。したがって、接続を提供するビジネスオブジェクトインタフェースで、このロジックを再構築する必要があります。UI スクリプトでビジネスロジックを変更する場合は、該当するビジネスオブジェクトインタフェースも適応させなくてはなりません。

DAL 1 スクリプトには、以下のタイプのフックが含まれます。

  • オブジェクトフック: これらのフックは 1 つの単位として行またはレコードに作用します。オブジェクトフックは、行の処理が可能かどうかを決定し、行の処理に基づいて実行すべき追加処理を指定します。以下は、オブジェクトフックの例です。
    • 従業員を削除すると People パッケージの追加の従業員データも削除される
    • 販売オーダラインを保存すると販売オーダラインの履歴レコードが作成される
    • 計画在庫トランザクションを作成すると品目在庫が更新される
  • プロパティフック: これらのフックはフィールドレベルで作用し、テーブルフィールドの有効値の確認やデフォルト値の計算に使用されます。以下は、プロパティフックの例です。
    • 見積期日が見積入力日の後であることの有効性をチェックする
    • 従業員を追加するとき会社の言語が従業員のデフォルト言語である

DAL 1 スクリプトの詳細については、Infor ES Programmer's Guide の 「Data Access Layer」 を参照してください。

DAL 1 スクリプトを作成するには

DAL 1 スクリプトの作成と編集には、プログラムスクリプト/ライブラリ (ttadv2530m000) セッションを使用します。DAL 1 スクリプトの場合、スクリプトタイプは 「DAL」 です。

DAL 2

LN には DAL 2 スクリプトが導入されています。DAL 2 スクリプトは、特定のテーブルに関連するすべてのビジネスロジック (データベースロジック + その他のロジック) を含みます。テーブルで動作するセッションの UI スクリプトは、UI ロジックのみを含みます。

したがって、DAL 2 スクリプトは Infor LN Business Adapter を介した統合に最適です。ビジネスオブジェクトを使用して、他のアプリケーションが LN テーブルに接続できます。テーブル内の DAL 2 スクリプトのビジネスロジックは、自動的に実行されます。したがって、統合を構築するために、インタフェースを提供するビジネスオブジェクトインタフェースでこのビジネスロジックを再構築する必要がありません。

LN には、統合の目的で使用できるさまざまな事前定義のビジネスオブジェクトが付属しています。DAL 2 スクリプトは、これらのビジネスオブジェクトで使用されるテーブルについてのみ使用可能です。それ以外のテーブルについては、DAL 1 スクリプトを使用できます。ビジネスオブジェクトおよび統合技術についての詳細は、Infor LN Business Adapter のマニュアルを参照してください。

DAL 2 では、さまざまな新規フックが導入されています。DAL 2 スクリプトには以下を含むことができます。

  • オブジェクトフック: これらのフックは DAL 1 スクリプトのオブジェクトフックと同じです。
  • フィールドフック: フィールドフックは、テーブルフィールドのビジネスロジックを含みます。たとえば以下のようなロジックが含まれます。
    • テーブルフィールドの有効値を確認する (論理的な整合性ルール)
    • フィールドを読取専用にするたとえば、「取引先」 の窓口フィールドの入力は必須ではなく、「取引先」 の作成時に UI で表示されるフィールドです。
    • フィールドを隠す
    • フィールドの変更後に関連フィールドを自動的に更新する「フィールド依存情報」 を参照してください。
    • フィールドへの入力を必須にする
    • 列挙リストの特定の列挙型定数を隠す
  • ビジネスメソッドフック: これらのフックは、「ビジネスメソッド」 タイプの特定のフォームコマンドを有効/無効にしたり、隠したりする場合に使用されます。

DAL 2 スクリプトの詳細については、Infor ES Programmer's Guide の 「DAL 2 Overview」 を参照してください。

DAL 2 スクリプトを作成するには

DAL 2 スクリプトの作成と編集には、プログラムスクリプト/ライブラリ (ttadv2530m000) セッションを使用します。DAL 2 スクリプトの場合、スクリプトタイプは 「DAL (バージョン 2)」 です。

フィールド依存情報

DAL 2 スクリプトでは、デフォルト値の決定に使用されるフィールド依存情報を定義できます。これらのフィールド依存情報をいったん定義すると、依存しているフィールドが更新されたときに、そのフィールドが自動的に更新されます。フィールドの更新は DAL でフィールドフックとして定義します。

依存情報はユーザインタフェースの更新にも使用されます。4GL エンジンはこれらのフィールド依存情報を使用して、フィールドを有効または無効にし、列挙値を決定します。

フィールド依存情報の例:

  • 品目の総重量と正味重量が異なる場合、品目の梱包フィールドは 「Yes」 です。フィールド依存情報は、総重量または正味重量のフィールドを変更した場合に更新されるように定義します。
  • 総重量がない品目には正味重量と梱包を定義できません。フィールド依存情報は、総重量がゼロの場合に正味重量と梱包のフィールドが無効になるように定義します。
ビジネスメソッド

ビジネスメソッドはテーブル内の行または行セットに対する処理です。ビジネスメソッドは、データベースの 1 つまたは複数のテーブルを操作またはチェックするタスクを実行する関数です。

別のテーブルの DAL のセッション、オブジェクトフック、またはプロパティフックがビジネスメソッドを呼び出すことができます。詳細は、Infor ES Programmer's Guide を参照してください。

ビジネスメソッドの例:

  • 販売オーダラインセッションは、オーダ行を削除できます。販売オーダ行を削除するためのオブジェクトフックは、ビジネスメソッドを呼び出して、未払の手数料も削除します。
  • 購買オーダ状況と取引先状況に応じて購買オーダヘッダを変更できるかどうかを 「購買オーダ」 セッションで確認します。
  • 購買オーダが構成要素を出庫する場合は、購買オーダラインのオブジェクトフックがビジネスメソッドを呼び出して、購買オーダの構成要素を出庫します。ビジネスメソッドは部品表の品目を購買オーダ構成要素テーブルに挿入します。