第52章 ガイド付きルールの作成
ガイド付きルールを使用すると、そのルールに関連するデータオブジェクトに基づいて、構造化フォーマットでビジネスルールを定義できるようになります。プロジェクトに個別にルールを作成および定義することができます。
手順
-
Business Central で、Menu
Design Projects に移動して、プロジェクト名をクリックします。 -
Add Asset
Guided Rule をクリックします。 参考となる ガイド付きルール 名を入力し、適切な パッケージ を選択します。指定するパッケージは、必要なデータオブジェクトが割り当てられている、またはこれから割り当てるパッケージにする必要があります。
ドメイン固有言語 (DSL) アセットがプロジェクトに定義されている場合は、Show declared DSL sentences を選択することもできます。この DSL アセットは、ガイド付きルールデザイナーで定義する条件およびアクションに使用できるオブジェクトです。
OK をクリックして、ルールアセットを作成します。
新しいガイド付きルールが、Project Explorer の Guided Rules パネルに追加されます。Show declared DSL sentences オプションを選択している場合は Guided Rules (with DSL) パネルに追加されます。
- Data Objects タブをクリックして、ルールに必要なデータオブジェクトがすべてリストされていることを確認します。リストされていない場合は、New item をクリックして、他のパッケージからデータオブジェクトをインポートするか、パッケージに データオブジェクトを作成 します。
データオブジェクトをすべて配置したら、ガイド付きルールデザイナーの Model タブに戻り、ウィンドウの右側のボタンから、利用可能なデータオブジェクトに、ルールの WHEN (条件) セクションおよび THEN (アクション) セクションを追加して定義します。
図52.1 ガイド付きルールデザイナー
ルールの WHEN 部分は、アクションを実行するのに必要な条件が含まれます。たとえば、銀行のローン申し込みに年齢制限 (21 歳以上) が必要な場合、
Underage
ルールの WHEN 条件はAge | less than | 21
となります。ルールの THEN 部分には、ルールの条件部分に一致したときに実行するアクションが含まれます。たとえば、ローンの申込者が 21 歳に満たない場合は、THEN アクションの
approved
がfalse
になり、年齢が基準に達していないためローンの申し込みが承認されません。例外を設定して、より複雑なルールを指定することもできます。たとえば、申込者の年齢が達していなくても、保護者の承認があれば承認されるようにすることもできます。この場合は、guarantor データオブジェクトを作成またはインポートして、そのフィールドをガイド付きルールに追加します。
- ルールのコンポーネントをすべて定義したら、ガイド付きルールデザイナーの右上のツールバーで Validate をクリックして、ガイド付きルールの妥当性を確認します。ルールの妥当性確認に失敗したら、エラーメッセージに記載された問題に対応し、ルールの全コンポーネントを見直し、エラーが表示されなくなるまでルールの妥当性確認を行います。
- ガイド付きルールデザイナーで Save をクリックして、設定した内容を保存します。
52.1. ガイド付きルールへの WHEN 条件の追加
ルールの WHEN 部分は、アクションを実行するのに必要な条件が含まれます。たとえば、銀行のローン申し込みに年齢制限 (21 歳以上) が必要な場合、Underage
ルールの WHEN 条件は Age | less than | 21
となります。ルールをいつ、どのように適用するかを決定するために、単純または複雑な条件を設定できます。
前提条件
- ルールに必要なデータオブジェクトはすべて作成、またはインポートされており、ガイド付きルールデザイナーの Data Objects タブにリストされている。
手順
ガイド付きルールデザイナーで、
WHEN
セクションの右側のプラスアイコン ( ) をクリックします。利用可能な条件要素が追加された Add a condition to the rule ウィンドウが開きます。
図52.2 ルールへの条件の追加
このリストには、ガイド付きルールデザイナーの Data Objects タブのデータオブジェクトと、パッケージに定義した DSL オブジェクト (このガイド付きルールを作成したときに Show declared DSL sentences を選択した場合) と、以下の標準オプションが含まれます。
- 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 フィールドを挿入します。
- 条件要素 (LoanApplication など) を選択し、OK をクリックします。
ガイド付きルールデザイナーで条件要素をクリックし、Modify constraints for LoanApplication ウィンドウで、フィールドへの制限の追加、複数のフィールド制約の適用、新しい数式表現の追加、式エディターの適用、または変数名の設定を行います。
図52.3 条件の変更
注記変数名を使用すると、ガイド付きルールの別の設定でファクトまたはフィールドを指定できます。たとえば、
LoanApplication
の変数をa
とし、倒産の根拠になっている申し込みを指定するBankruptcy
制約でa
を参照します。a : LoanApplication() Bankruptcy( application == a ).
制約を選択したら、ウィンドウが自動的に閉じます。
-
追加した制約の隣にあるドロップダウンメニューから、制限の演算子 (
greater than
など) を選択します。 - 編集アイコン ( ) をクリックして、フィールド値を定義します。フィールド値はリテラル値、式、または完全な MVEL 表現にすることができます。
フィールド制約を複数適用するには、条件をクリックし、Modify constraints for LoanApplication ウィンドウで、Multiple field constraint ドロップダウンメニューから All of(And) または Any of(Or) を選択します。
図52.4 複数のフィールド制約の追加
- ガイド付きルールデザイナーで制約をクリックして、フィールド値をさらに定義します。
- ルールの条件コンポーネントをすべて定義したら、ガイド付きルールデザイナーの右上のツールバーで Validate をクリックして、ガイド付きルール条件の妥当性を確認します。ルールの妥当性確認に失敗したら、エラーメッセージに記載された問題に対応し、ルールの全コンポーネントを見直し、エラーが表示されなくなるまでルールの妥当性確認を行います。
- ガイド付きルールデザイナーで Save をクリックして、設定した内容を保存します。