Drools
规则引擎
主要思想是将应用程序中的业务决策部分分离出来,使用预定义的语义模块编写业务决策,由用户或开发者在需要时进行配置、管理。目前市面上具体的规则引擎产品有:Drools、VisualRules、iLog等。
使用规则引擎的优势:
- 业务规则与系统代码分离,实现业务规则的集中管理
- 在不重启服务的情况下对业务规则进行扩展和维护
- 减少了硬编码业务规则的成本和风险
- 实现简单,可以直接使用规则引擎提供的规则编辑工具
介绍
Drools是JBoss组织提供的基于Java的开源规则引擎。
相关概念:
- Facts:事实,是应用和规则引擎数据交互的桥梁
- Rules:规则
- Pattern matcher:匹配器,匹配成功的规则会被放入Agenda中
- Agenda:议程,存放通过匹配器匹配后的规则
语法
Drools 使用 drl(Drools Rule Language) 语言定义规则内容,最新语法请参考官方文档。
规则体语法结构
rule "ruleName"
attributes
when
LHS
then
RHS
end
条件部分
LHS(Left Hand Side),是规则的条件部分的通用名称。如果LHS为空,则被视为始终为true的条件。
符号 | 说明 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
contains | 一个对象的属性值是否包含另一个对象 |
not contains | |
memberOf | 属性是否在集合中 |
not memberOf | |
matches | 是否与提供的正则表达式匹配 |
not matches |
结果部分
RHS(Right Hand Side),用来实现对Fact对象的增删改。