第58章 ガイド付きルールテンプレートの作成
ガイド付きルールテンプレートを使用して、データテーブルに定義した値に対応するプレースホルダー値 (テンプレートキー) を持つルール構造を定義できます。ガイド付きルールテンプレートは、構造が同じ多数のガイド付きルールセットを個別に定義するのに利用できる効率的な方法です。
手順
-
Business Central で、Menu
Design Projects に移動して、プロジェクト名をクリックします。 -
Add Asset
Guided Rule Template をクリックします。 - 参考となる ガイド付きルールテンプレート 名を入力し、適切な パッケージ を選択します。指定するパッケージは、必要なデータオブジェクトが割り当てられている、またはこれから割り当てるパッケージにする必要があります。
OK をクリックして、ルールテンプレートを作成します。
新しいガイド付きルールテンプレートが、Project Explorer の Guided Rule Templates パネルに追加されます。
- Data Objects タブをクリックして、ルールに必要なデータオブジェクトがすべてリストされていることを確認します。リストされていない場合は、New item をクリックして、他のパッケージからデータオブジェクトをインポートするか、パッケージに データオブジェクトを作成 します。
データオブジェクトをすべて配置したら、Model タブに戻り、ウィンドウの右側のボタンから、利用可能なデータオブジェクトに、ルールテンプレートの WHEN (条件) セクションおよび THEN (アクション) セクションを追加して定義します。ルールごとに変更するフィールド値については、ルールデザイナーで
$key
形式、または (DRL を使用している場合は) free form DRL の@{key}
形式のテンプレートキーを使用します。図58.1 ガイド付きルールテンプレートの例
テンプレートキーに関する注記テンプレートキーは、ガイド付きルールテンプレートの基本となるものです。テンプレートキーは、同じテンプレートから異なるルールを生成するために、対応するデータテーブルで定義する実際の値と入れ替えるテンプレートのフィールド値を有効にするものです。リテラル や 式 などの値を使用することもできますが、その値は、そのテンプレートに基づいたすべてのルールのルール構造の一部となります。ただし、ルール間で異なる値については、特定のキーを使用した テンプレートキー フィールドタイプを使用します。ガイド付きルールテンプレートでテンプレートキーを使用しない場合、対応するデータテーブルはテンプレートデザイナーに生成されず、テンプレートは、個々のガイド付きルールとして機能します。
ルールテンプレートの WHEN 部分は、アクションを実行するのに必要な条件が含まれます。たとえば、電話会社が、顧客が契約したサービス内容 (インターネット、電話、およびテレビ番組) に基づいて利用代金を請求する場合、WHEN 条件の 1 つは
internetService | equal to | $hasInternetService
となります。テンプレートキー$hasInternetService
は、そのテンプレートのデータテーブルに定義した実際のブール値 (true
またはfalse
) に置き換えられます。ルールテンプレートの THEN 部分には、ルールの条件部分に一致したときに実行するアクションが含まれます。たとえば、顧客がインターネットサービスだけを契約した場合は、
RecurringPayment
の$amount
テンプレートキーを使用した THEN アクションに、データテーブルのインターネットサービス料金に定義した整数値が実際の月額に設定されます。- ルールのコンポーネントをすべて定義したら、ガイド付きルールテンプレートデザイナーで Save をクリックして、設定した内容を保存します。
58.1. ガイド付きルールテンプレートへの WHEN 条件の追加
ルールの WHEN 部分は、アクションを実行するのに必要な条件が含まれます。たとえば、電話会社が、顧客が契約したサービス内容 (インターネット、電話、およびテレビ番組) に基づいて利用代金を請求する場合、WHEN 条件の 1 つは internetService | equal to | $hasInternetService
となります。テンプレートキー $hasInternetService
は、そのテンプレートのデータテーブルに定義した実際のブール値 (true
または false
) に置き換えられます。
前提条件
- ルールに必要なデータオブジェクトがすべて作成、またはインポートされていて、ガイド付きルールテンプレートデザイナーの Data Objects タブにリストされている。
手順
ガイド付きルールテンプレートデザイナーで、
WHEN
セクションの右側のプラスアイコン ( ) をクリックします。利用可能な条件要素が追加された Add a condition to the rule ウィンドウが開きます。
図58.2 ルールへの条件の追加
このリストには、ガイド付きルールテンプレートデザイナーの Data Objects タブのデータオブジェクトと、パッケージに定義した DSL オブジェクトと、以下の標準オプションが含まれます。
- The following does not exist: 存在すべきでないファクトと制約を指定します。
- The following exists: 存在すべきファクトと制約を指定します。このオプションは、最初に一致したものだけが適用され、その後一致するものは無視されます。
- Any of the following are true: true であるファクトと制約をリストします。
-
From: ルールの
From
条件要素を定義します。 -
From Accumulate: ルールの
Accumulate
条件要素を定義します。 -
From Collect: ルールの
Collect
条件要素を定義します。 -
From Entry Point: パターンの
Entry Point
を定義します。 -
Free form DRL: ガイド付きルールデザイナーを使用せずに条件要素を自由に定義できる free form DRL フィールドを挿入します。free form DRL のテンプレートキーには、
@{key}
形式を使用します。
- 条件要素 (Customer など) を選択し、OK をクリックします。
ガイド付きルールテンプレートデザイナーで条件要素をクリックし、Modify constraints for Customer ウィンドウで、フィールドへの制限の追加、複数のフィールド制約の適用、新しい数式表現の追加、式エディターの適用、または変数名の設定を行います。
図58.3 条件の変更
注記変数名を使用すると、ガイド付きルールの別の設定でファクトまたはフィールドを指定できます。たとえば、
Customer
の変数をc
にし、Customer
がApplicant
であることを指定する別のApplicant
制約で、c
を参照します。c : Customer() Applicant( this == c )
制約を選択したら、ウィンドウが自動的に閉じます。
-
追加した制約の隣にあるドロップダウンメニューから、制限の演算子 (
equal to
など) を選択します。 - 編集アイコン ( ) をクリックして、フィールド値を定義します。
-
このテンプレートに基づいたルール間で値が異なる場合は、テンプレートキー を選択し、
$key
形式でテンプレートキーを追加します。これにより、フィールド値を、対応するデータテーブルに定義する実際の値と入れ替えて、同じテンプレートから異なるルールを生成します。ルールテンプレートの中で、ルール間で変更しないフィールド値については、別の型の値を使用できます。 フィールド制約を複数適用するには、条件をクリックし、Modify constraints for Customer ウィンドウで、Multiple field constraint ドロップダウンメニューから All of(And) または Any of(Or) を選択します。
図58.4 複数のフィールド制約の追加
- ガイド付きルールテンプレートデザイナーで制約をクリックして、フィールド値をさらに定義します。
- 条件要素をすべて定義したら、ガイド付きルールテンプレートデザイナーで Save をクリックして、設定した内容を保存します。