规则引擎介绍
规则引擎又称为决策引擎,具体实现有很多种形式,比如由单个规则构成的规则集、用于评分的评分卡、多维度条件计算的决策表等;无论形式上怎么变化,归纳下来无非就是“如果…那么…否则”三大部分。
在“如果”和“那么”之间,用于存放规则的条件;“那么”之后定义若干个动作,这些动作在条件满足后执行;“否则”的后面也是若干个动作,这些动作在“如果”和“那么”之间条件不满足的时候执行。
当然也不是所有规则引擎都有“如果…那么…否则”三大部分,比如Drools里只有“如果…那么”没有“否则”,这在使用的时候多少会带来一些麻烦,这点在使用的时候就会发现。
单个规则结构
前面提到,无论规则引擎产品提供了多少种规则工具,总结下来每种规则工具实现的逻辑都是“如果…那么…否则”三大部分,下图当中展示了URule这款规则引擎产品向导式规则集的结构,可以非常明显看到规则结构的三大部分。

在上图中的两个规则当中,因URule提供的规则条件部分是图形化方式展现,所以条件阅读起来就容易的多,“那么”和“否则”部分定义了一条条的动作,分别在条件满足和不满足的时候执行。
在Drools中,规则体部分就没有“否则”,如下所示:
rule "rule1"
when
$order:Order(items not contains "手机");
then
System.out.println($order.getName());
end
因为Drools没有提供类似URule中的可视化向导方式构建规则,只有上面这种脚本方式定义规则,所以它的规则看起来和写代码区别不大,但这并不影响对其规则结构体的观察。
可以看到,Drools的规则体结构中没有“否则”部分,也就是说规则在条件不满足的时候什么也不能做,有人说

本文介绍了规则引擎的概念,包括单个规则结构、评分卡和决策表。规则引擎如Drools和URule在实现上有所不同,Drools规则通常不包含“否则”部分,而评分卡和决策表可以视为规则的特殊形式。文章讨论了如何将这些表现形式编译成标准规则体结构,并强调了条件算法(模式匹配算法)在规则计算性能中的关键作用。
最低0.47元/天 解锁文章
43

被折叠的 条评论
为什么被折叠?



