本篇博客主要講解Drools常用的屬性以及函數
屬性
首先我們在resources\rules文件夾下創建一個Property.drl,還有一個DroolsApplicationPropertyTests
1. salience優先級
salience 屬性的值默認為0,它的值越大執行的優先級就越高,看如下代碼在執行的時候就會先執行salience2
1 |
rule "salience2" |
1 |
|
2. date-effective日期比較(小於等於)
當系統時間小於等於date-effective的值是才會執行。
1 |
rule "dateEffective" |
1 |
|
由於今天是11月24,所以上方的dateEffectiveTomorrow將不會執行。
還有需要注意的是Drools默認的時間格式是dd-MMM-yyyy的,也就是說你必須使用24-十一月-2018它才能識別,我為什么能使用yyyy-MM-dd呢,請參考上篇文章中進行自動配置時的getKieServices()方法
3. date-expires日期比較(大於)
剛好於date–effective相反
4. enabled
當一個規則的enabled屬性變為false時這條規則將不再可用
1 |
rule "enabled" |
1 |
|
函數
接着我們在resources\rules文件夾下創建一個Function.drl,還有一個DroolsApplicationFunctionTests
Drools中常用函數分別為insert、update和retract,分別是插入更新和刪除,我們來看一下下方的幾個規則的執行過程
1 |
rule "test1" |
可用看的,test1規則沒有判斷條件,所以直接被執行,執行過程中它生成了一個對象插入到工作內存中,此對象的規則又恰好與test2規則匹配,所以緊接着test2執行,test2執行時更新了user對象,更新后的對象又匹配了test3,所以test3繼續執行。執行完畢后user對象被刪除,test4就執行不了了。
另外還有幾個方法也是常用的:
- getWorkingMemory,獲取當前的WorkingMemory對象
- halt,執行完當前規則后不再執行其他規則
- getRule,獲取當前規則對象
本文所有源碼:https://github.com/shiyujun/drools
本文出自http://zhixiang.org.cn/,轉載請保留
