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ステートメント)を含めることは非常に悪い習慣と見なされます。ほとんどの場合、新しいルールを作成する必要があります。