我在我的應用程序中使用Drools 6.1.0。需要實現Drools規則的設計指導
我們正計劃編寫一個包含所有規則的巨大.drl文件。
將有主要兩類規則 1. null檢查 2.業務驗證
使用規則流組,激活組,凸顯我打算管理哪些規則執行/火時,事實被添加到會話中。
即使採用這種方法,解決方案也不適合我,因爲。
可以說我有以下.drl文件
rule "rule1"
ruleflow-group "primary"
activation-group "NullCheck"
salience 5
when
$m : Message(innerMsg.something == null)
then
// do something
rule "rule2"
ruleflow-group "primary"
activation-group "NullCheck"
salience 4
when
$m : Message(innerMsg.something.something == null)
then
// do something
rule "rule3"
ruleflow-group "primary"
activation-group "NullCheck"
salience 3
when
$m : Message(innerMsg.something.something.something == null)
then
// do something
Drools的文件說,這「當事實被插入的所有約束評估從Drools的手冊:條件評估不依賴於具體的評價序列或時間點,但是它在發動機的使用壽命期間的任何時間連續發生。「
所以發生的是,這是執行此文件中的代碼是在規則2拋出空指針異常,因爲innerMsg.something.something
是NULL
注:我不想使用俱樂部所有的null檢查||在一個單一的時候聲明,因爲我想捕獲特定的空條件並基於它創建錯誤消息。
我的問題如下。
- 是否使用drools規則爲鏈接對象執行Nullchecks是一個好主意。
- 我是否應該使用其他類似順序規則執行(不確定在Drools中是否可用),這將允許我按特定順序執行規則。
- 有另一種方式來實現這一
那麼建議不要使用議程組/ runflow-group等? –
有些情況下,議程組和突出顯示,但AFAIK我不認爲這些可以在您的應用程序中找到。 – laune