正如你看到的.drl(規(guī)則文件)都有自己的語法,讓我們蓋這個章介紹規(guī)則語法的某些部分。
規(guī)則可以包含很多的條件和模式,如:
上述條件檢查帳戶余額是200或客戶名稱是 “Vivek”.
在Drools中的變量名稱以美元($)符號開始。
Drools可與所有本地Java類型,甚至枚舉工作。
特殊字符,# 或 //,可用于標記單行注釋。
對于多行注釋,請使用以下格式:
/*
Another line
.........
.........
*/
全局變量分配給會話變量。它們可用于各種原因如下:
對于輸入?yún)?shù)(可從會話定制會話。例如,常量值)。
對于輸出參數(shù)(例如,報告,規(guī)則可以寫一些消息給全局報表變量)。
切入點的服務,如日志記錄,這可以在規(guī)則中使用。
函數(shù)是一個方便的功能。它們可以在條件和后果使用。函數(shù)代表的替代工具/輔助類。例如,
function double calculateSquare (double value) { return value * value; }
方言指定任何代碼的表達是在條件或因此所使用的語法。它包括返回值,evals,內(nèi)聯(lián)evals,謂詞突性表達式,后果,并依此類推。默認值是Java。目前,Drools支持多了一個叫做方言MVEL。默認方言可以指定在包級別如下:
package org.mycompany.somePackage dialect "mvel"
MVEL是基于Java的應用程序的表達式語言。它支持字段和方法/getter訪問。它是基于Java的語法。
突顯是規(guī)則語法的一個非常重要的特點。突顯使用的沖突解決策略,以決定哪些規(guī)則首先觸發(fā)。默認情況下,它是主要標準。
我們可以用突性來定義的擊發(fā)規(guī)則的順序。突顯有一個屬性,這需要一個返回數(shù)字類型為int(正數(shù)和負數(shù)是有效)的任何表達式。該值越高,就越有可能的規(guī)則將被拾起的沖突解決策略觸發(fā)。
salience ($account.balance * 5)
默認的顯著值是0分配顯著值只有一些規(guī)則時,我們應該記住這一點。
有很多的規(guī)則語法等特性/參數(shù),但我們只涵蓋了重要的位置。
規(guī)則后果關鍵字是規(guī)則“then”的一部分使用的關鍵字。
Modify – fact屬性可在隨后部分的規(guī)則進行修改。
Insert – 基于一些條件,如果true,可以插入一個新的事實到規(guī)則引擎會話。
Retract – 如果一個特定的條件是一個true的規(guī)則,則不采取其他任何就事實,可以從規(guī)則引擎收回特定事實。
注意:它被認為是一個非常不好的做法,有一個條件邏輯(if語句)規(guī)則的后果之內(nèi)。大多數(shù)時候,一個新的規(guī)則應該被創(chuàng)建。