規則引擎的簡單例子

2021-10-02 06:22:20 字數 2693 閱讀 1621

首先引入依賴

org.jeasy

easy-rules-core

3.3.0

org.jeasy

easy-rules-mvel

3.3.0

複製**

easy-rules-core是easy-rules的核心依賴,必不可少,而easy-rules-mvel是用於mvel的方式建立rule,mvel的方式建立rule比較靈活,可以隨時修改rule規則和action邏輯。

定義rule

@rule(name = "被2整除")

public class tworule

@action

public void action(@fact("num") int num)

@priority

public int getpriority()

}@rule(name = "被3整除")

public class threerule

@action

public void action(@fact("num") int num)

@priority //優先順序註解:return 數值越小,優先順序越高

public int getpriority()

}@rule(name = "被2和3同時整除")

public class twothreeruleunitgroup extends unitrulegroup

}@override

public int getpriority()

}@rule(name = "既不被2整除也不被3整除")

public class otherrule

@action

public void action(@fact("num") int num)

@priority

public int getpriority()

}複製**

測試類

public class ruletest 

}}複製**

public class mveltestrule 

}複製**

個人感覺這種方式的建立rule比較靈活,rule的所有資訊都可以儲存到資料庫中,可以實時修改資料庫中資料進行修改規則。只需要將相關的類設定到facts中即可。

規則***

public class myrulelistener implements rulelistener 

@override

public void afterevaluate(rule rule, facts facts, boolean b)

@override

public void beforeexecute(rule rule, facts facts)

@override

public void onsuccess(rule rule, facts facts)

@override

public void onfailure(rule rule, facts facts, exception e)

}複製**

rulesengine.fire(rules, facts);之前註冊規則***

((defaultrulesengine) rulesengine).registerrulelistener(new myrulelistener());

複製**

public class myrulesenginelistener implements rulesenginelistener 

@override

public void afterexecute(rules rules, facts facts)

}複製**

rulesengine.fire(rules, facts);之前註冊規則引擎***

((defaultrulesengine) rulesengine).registerrulesenginelistener(new myrulesenginelistener());

複製**

skiponfirstfailedrule 為true時, 如果執行@action中發生異常就會跳過後面規則匹配

skiponfirstnontriggeredrule 為true時,從第一條開始,匹配一條才會往下執行,不匹配則跳過後面

ruleprioritythreshold 大於指定的優先順序則不進行匹配

rulesengineparameters parameters = new rulesengineparameters()

parameters.skiponfirstfailedrule(true);

parameters.skiponfirstnontriggeredrule(true);

parameters.prioritythreshold(3);

rulesengine rulesengine = new defaultrulesengine(parameters);

複製**

多條配置可以一起使用。

規則引擎的簡單介紹

一 規則引擎的由來 規則引擎由推理引擎發展而來,是一種嵌入在應用程式中的元件,實現了將業務決策從應用程式 中分離出來,並使用預定義的語義模組編寫業務決策。接受資料輸入,解釋業務規則,並根據業務規則做出業務決策。二 應用背景 企業級管理者對企業it系統的開發有著如下的要求 1.為提高效率,管理流程必須...

mysql 規則引擎 為什麼使用規則引擎?

一天,朱斯參加了一場code review研討會。會上的一群人正在討論著如何對祖傳 進行變更,大家你一言,我一語,場面十分熱鬧!突然,只見人群中的乙個人滿面愁容,說道 昨天在專案中看到下面這樣一段 分支太多了!維護起來很煩啊!if day 周一 else if day 周二 else if day ...

規則引擎pyke

1.官網 2.安裝第三方包 pyenv global anaconda3 4.2.0 pip install htmltemplate 3.原始碼安裝pyke pyenv global anaconda3 4.2.0 cd pyke3 1.1.1 python setup.py build pyth...