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