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語句)規則的後果之內。大多數時候,一個新的規則應該被創建。