【发布时间】:2021-01-08 00:23:53
【问题描述】:
我需要实现一个具有分层回退支持的简单规则引擎。我已经查看了 DROOLS 库,但我不确定它是否支持我的用例。
用例相当简单,这让我开始思考是否需要一个规则引擎?不过,这里是用例 -
我有一个包含一堆字段的模态
Public Class Entity {
public int val0;
public int val1;
public int val2;
public int val3;
.....
}
现在,我想针对这些字段创建如下规则
RULE1 --- IF val0 == 1 && val1 == 1 && val2 == 1 && val3 == 1 --- (1,1,1,1) THEN DO this
RULE2 --- IF val0 == 1 && val1 == 1 && val2 == 1 && val3 == 2, --- (1,1,1,2) THEN DO this
RULE3 --- IF val0 == 1 && val1 == 1 && val2 == 1 && val3 == *, --- (1,1,1,*) THEN DO this
RULE4 --- IF val0 == 1 && val1 == 1 && val2 == * && val3 == *, --- (1,1,*,*) THEN DO this
问题在于RULE3 和RULE4,其中 val2 和 val3 可以匹配任何值。
例如
val0=1, val1=1, val2=1, val3=1 -- should execute RULE1 - specific match
val0=1, val1=1, val2=1, val3=3 -- should execute RULE3 - generic match as there's no specific match for val3
val0=1, val1=1, val2=10, val3=5 -- should execute RULE4 - generic match as there's no specific match for val2 and val3
因此,根据查询,要么我会找到匹配规则,要么我将不得不回退到更通用的规则。是否有任何现有的规则引擎库提供此功能,或者我什至需要规则引擎库来实现此功能?
【问题讨论】:
-
一个完整的规则引擎对于只有几个变体的东西来说似乎有点矫枉过正,但这取决于你正在做的事情的完整背景以及你以后可能需要做的事情。
标签: java implementation rule-engine business-rules