Drools规则引擎-基本概念

Drools是基于Java的规则引擎;
基本概念
Rule(规则):一条规则可以看作是IF...THEN...语句块,或者一个简单的IPO(即输入、处理和输出),描述了一组输入,一组判断和一组输出;
Fact(事实):事实就是规则中用到的输入,在Java中就是JavaBean Object;
Rule的管理
RuleFile:一组相关的Rule组成一个RuleFile,比如:
IF...THEN...ELSE...判断语句,是两个Rule:
Rule1:WHEN (A) THEN OUT1
Rule2:WHEN (!A) THEN OUT2
Rule1和Rule2紧密相关,耦合度高,应该组织到一起;
Package:一组功能相近的RuleFile组合成一个Package,类似于Java的Package;
RuleBase:是Drools的规则容器,所有使用到的Rule都加载到RuleBase中,由RuleBase来管理:
1)Rule的组织:按照Fact和Rule的对应关系,建立对应表Fact-Rule;
2)提供检索功能:按照Fact-Rule对应表,查找对应Facts的Rule列表;
3)生成Rule工作区(WorkMemory);

Fact的管理
WorkMemory:用户工作区,包含用户的数据和相关Rule的引用;
AssertObject:Fact操作,把用户数据(Fact,即JavaBean)传递给WorkMemory;
Retraction:Fact操作,把Fact从WorkMemory取消;
Modification:Fact操作,把更新(更改)过的消息通知工作区(可能会触发其它的Rule);
WorkMemory工作原理
1、创建WorkMemory后,是一个空的用户工作区;
2、可以设置AgendaFilter,以便筛选起作用的Rule集合;
3、通过AssertObject,设置Fact;
4、WorkMemory筛选匹配的Rule集合(如果有Filter,自动按条件筛选);
5、调用fireAllRules,执行Rule;
Rule的输出
规则的根本目的是产生一个供使用的输出结果,即修改后的JavaBean;
1、修改JavaBean(通过JavaBean的setter方法),然后Modify(obj);
2、产生一个新对象(new方法),然后传递给工作区(AssertObject),触发其它的Rule;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值