- Drools 教程
- Drools - 首頁
- Drools - 簡介
- Drools - Eclipse 外掛
- Drools - 執行時
- Drools - 建立 Drools 程式
- Drools - 常用術語
- Drools - 規則編寫
- Drools - 規則語法
- Drools - Drools 程式示例
- Drools - 除錯
- Drools 有用資源
- Drools - 快速指南
- Drools - 有用資源
- Drools - 討論
Drools - 規則語法
正如您所看到的,.drl(規則檔案)有其自身的語法,讓我們在本節中介紹規則語法的一部分。
規則中的條件
規則可以包含許多條件和模式,例如:
- Account (balance == 200)
- Customer (name == “Vivek”)
上述條件檢查 Account 餘額是否為 200 或 Customer 名稱是否為“Vivek”。
規則中的變數
Drools 中的變數名以美元符號 ($) 開頭。
- $account − Account( )
- $account 是 Account() 類的變數
Drools 可以使用所有原生 Java 型別,甚至列舉型別。
規則中的註釋
特殊字元 # 或 // 可用於標記單行註釋。
對於多行註釋,請使用以下格式
/* Another line ......... ......... */
全域性變數
全域性變數是分配給會話的變數。它們可以出於各種原因使用,如下所示:
用於輸入引數(例如,可以從會話到會話自定義的常量值)。
用於輸出引數(例如,報告——規則可以將某些訊息寫入全域性報告變數)。
用於日誌記錄等服務的入口點,可以在規則中使用。
規則中的函式
函式是一個便利特性。它們可以在條件和結果中使用。函式表示實用程式/幫助程式類的替代方案。例如,
function double calculateSquare (double value) {
return value * value;
}
方言
方言指定在條件或結果中的任何程式碼表達式中使用的語法。它包括返回值、evals、內聯 evals、謂詞、salience 表示式、結果等。預設值為 **Java**。Drools 目前支援另一種稱為 **MVEL** 的方言。預設方言可以在包級別指定,如下所示:
package org.mycompany.somePackage dialect "mvel"
MVEL 方言
MVEL 是一種用於基於 Java 的應用程式的表示式語言。它支援欄位和方法/getter 訪問。它基於 Java 語法。
Salience
Salience 是規則語法的一個非常重要的特性。Salience 用於衝突解決策略來決定首先觸發哪個規則。預設情況下,它是主要標準。
我們可以使用 salience 來定義規則的觸發順序。Salience 具有一個屬性,該屬性採用任何返回 int 型別數字的表示式(正數和負數均有效)。值越高,衝突解決策略選擇該規則觸發的可能性就越大。
salience ($account.balance * 5)
預設的 salience 值為 0。在僅為某些規則分配 salience 值時,我們應該牢記這一點。
規則語法中還有許多其他功能/引數,但我們在這裡只介紹了重要的部分。
規則結果關鍵字
規則結果關鍵字是在規則的“**then**”部分中使用的關鍵字。
**Modify** - 事實的屬性可以在規則的 **then** 部分中修改。
**Insert** - 基於某個條件,如果為真,則可以將新的事實插入到規則引擎的當前會話中。
**Retract** - 如果規則中的特定條件為真,並且您不想對該事實執行任何其他操作,則可以從規則引擎中撤回該特定事實。
**注意** - 在規則結果中使用條件邏輯(if 語句)被認為是非常不好的做法。大多數情況下,應該建立新的規則。