Drools-ルール構文
.drl(ルールファイル)には独自の構文があるので、この章ではルール構文の一部について説明します。
ルールの条件
ルールには、次のような多くの条件とパターンを含めることができます。
- アカウント(残高== 200)
- 顧客(名前==「Vivek」)
上記の条件は、口座残高が200であるか、顧客名が「Vivek」であるかを確認します。
ルールの変数
Droolsの変数名は、Dollar($)記号で始まります。
- $ account − Account()
- $ accountはAccount()クラスの変数です
Droolsは、すべてのネイティブJavaタイプ、さらにはEnumでも機能します。
ルールのコメント
特殊文字#または//は、単一行コメントをマークするために使用できます。
複数行コメントの場合は、次の形式を使用します。
/*
Another line
.........
.........
*/
グローバル変数
グローバル変数は、セッションに割り当てられた変数です。次のようにさまざまな理由で使用できます-
入力パラメーターの場合(たとえば、セッションごとにカスタマイズできる定数値)。
出力パラメーターの場合(たとえば、レポート-ルールはグローバルレポート変数にメッセージを書き込むことができます)。
ルール内で使用できるロギングなどのサービスのエントリポイント。
ルールの機能
機能は便利な機能です。それらは条件と結果で使用することができます。関数は、ユーティリティ/ヘルパークラスの代替を表します。例えば、
function double calculateSquare (double value) {
return value * value;
}
方言
方言は、条件または結果にあるコード式で使用される構文を指定します。これには、戻り値、評価、インライン評価、述語、顕著性式、結果などが含まれます。デフォルト値はJava。Droolsは現在、と呼ばれるもう1つの方言をサポートしていますMVEL。デフォルトの方言は、パッケージレベルで次のように指定できます-
package org.mycompany.somePackage
dialect "mvel"
MVEL方言
MVELは、Javaベースのアプリケーション用の表現言語です。フィールドおよびメソッド/ゲッターアクセスをサポートします。これはJava構文に基づいています。
顕著性
顕著性は、ルール構文の非常に重要な機能です。Salienceは、競合解決戦略で使用され、最初に実行するルールを決定します。デフォルトでは、これが主な基準です。
顕著性を使用して、発砲ルールの順序を定義できます。Salienceには1つの属性があり、int型の数を返す式を取ります(正の数と負の数が有効です)。値が高いほど、競合解決戦略によってルールが選択されて実行される可能性が高くなります。
salience ($account.balance * 5)
デフォルトのsalience値は0です。salience値を一部のルールにのみ割り当てる場合は、このことに注意する必要があります。
ルール構文には他にも多くの機能/パラメーターがありますが、ここでは重要なものだけを取り上げました。
ルール結果キーワード
ルール結果キーワードは、「thenルールの一部。
Modify −ファクトの属性は、で変更できます。 then ルールの一部。
Insert −ある条件に基づいて、trueの場合、ルールエンジンの現在のセッションに新しいファクトを挿入できます。
Retract −特定の条件がルールで真であり、そのファクトに対して他に何も実行したくない場合は、ルールエンジンから特定のファクトを撤回できます。
Note−ルールの結果内に条件付きロジック(ifステートメント)を含めることは非常に悪い習慣と見なされます。ほとんどの場合、新しいルールを作成する必要があります。