Drools規則語法

正如你看到的.drl(規則文件)都有自己的語法,讓我們蓋這個章介紹規則語法的某些部分。

在規則中的條件

規則可以包含很多的條件和模式,如:

  • Account (balance == 200)
  • Customer (name == 「Vivek」)

上述條件檢查帳戶餘額是200或客戶名稱是 「Vivek」.

在規則中的變量

在Drools中的變量名稱以美元($)符號開始。

  • $account : Account( )
  • $account is the variable for Account() class

Drools可與所有本地Java類型,甚至枚舉工作。

在規則中的註釋

特殊字符,# 或 //,可用於標記單行註釋。

對於多行註釋,請使用以下格式:

/*
Another line
.........
.........
*/

全局變量

全局變量分配給會話變量。它們可用於各種原因如下:

  • 對於輸入參數(可從會話定製會話。例如,常量值)。

  • 對於輸出參數(例如,報告,規則可以寫一些消息給全局報表變量)。

  • 切入點的服務,如日誌記錄,這可以在規則中使用。

在規則中的函數

函數是一個方便的功能。它們可以在條件和後果使用。函數代表的替代工具/輔助類。例如,

function double calculateSquare (double value) { return value * value; }

方言

方言指定任何代碼的表達是在條件或因此所使用的語法。它包括返回值,evals,內聯evals,謂詞突性表達式,後果,並依此類推。默認值是Java。目前,Drools支持多了一個叫做方言MVEL。默認方言可以指定在包級別如下:

package org.mycompany.somePackage
dialect "mvel"

MVEL 方言

MVEL是基於Java的應用程序的表達式語言。它支持字段和方法/getter訪問。它是基於Java的語法。

突顯

突顯是規則語法的一個非常重要的特點。突顯使用的衝突解決策略,以決定哪些規則首先觸發。默認情況下,它是主要標準。

我們可以用突性來定義的擊發規則的順序。突顯有一個屬性,這需要一個返回數字類型爲int(正數和負數是有效)的任何表達式。該值越高,就越有可能的規則將被拾起的衝突解決策略觸發。

salience ($account.balance * 5)

默認的顯着值是0分配顯着值只有一些規則時,我們應該記住這一點。

有很多的規則語法等特性/參數,但我們只涵蓋了重要的位置。

規則後果關鍵詞

規則後果關鍵字是規則「then」的一部分使用的關鍵字。

  • Modify – fact屬性可在隨後部分的規則進行修改。

  • Insert – 基於一些條件,如果true,可以插入一個新的事實到規則引擎會話。

  • Retract – 如果一個特定的條件是一個true的規則,則不採取其他任何就事實,可以從規則引擎收回特定事實。

注意:它被認爲是一個非常不好的做法,有一個條件邏輯(if語句)規則的後果之內。大多數時候,一個新的規則應該被創建。