规则引擎-Drools

本文介绍了Drools规则引擎的基本概念,包括Rule(规则)、Fact(事实)及其管理方式。详细阐述了Rule的组织形式及Fact如何在WorkMemory中进行操作,并解释了规则引擎如何产生输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.sina.com.cn/s/blog_539d361e0100ncgp.html

 

 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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值