3.对单个DRL文件的剖析

本文详细解读了Drools5规则引擎的使用方法,包括知识构建、知识库、状态性会话、非状态性会话、事实对象、规则结构与规则语言等内容,提供了从入门到进阶的学习路径。

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

昨天看完《Drools5规则引擎开发教程.pdf》,里面对单个rule文件的每一个要素进行了讲解,下面是总结。

 

1. 测试类API

  • KnowledgeBuilder:作用就是用来在业务代码当中收集已经编写好的规则, 然后对这些规则文件进行编译, 最终产生一批编译好的规则包(KnowledgePackage)给其它的应用程序使用。
KnowledgeBuilder
    kbuilder=KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("test.drl",
    Test.class),ResourceType.DRL);
Collection<KnowledgePackage>
    kpackage=kbuilder.getKnowledgePackages();//产生规则包的集合
 
  • KnowledgeBase:是Drools 提供的用来收集应用当中知识(knowledge)定义的知识库对
    象,在一个KnowledgeBase 当中可以包含普通的规则(rule)、规则流(rule flow)、函数定义
    (function)、用户自定义对象(type model)等。KnowledgeBase 本身不包含任何业务数据对
    象(fact 对象,后面有相应章节着重介绍fact 对象),业务对象都是插入到由KnowledgeBase
    产生的两种类型的session 对象当中(StatefulKnowledgeSession 和StatelessKnowledgeSession,后面会有对应的章节对这两种类型的对象进行介绍),通过session 对象可以触发规则执行或开始一个规则流执行。
//无配置
KnowledgeBase kbase=KnowledgeBaseFactory.newKnowledgeBase();
 
//有配置
KnowledgeBaseConfiguration kbConf =
    KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
kbConf.setProperty( "org.drools.sequential", "true");
KnowledgeBase kbase =
    KnowledgeBaseFactory.newKnowledgeBase(kbConf);
  •  StatefulKnowledgeSession:StatefulKnowledgeSession 对象是一种最常用的与规则引擎进行交互的方式,它可以与规则引擎建立一个持续的交互通道,在推理计算的过程当中可能会多次触发同一数据集。在用户的代码当中,最后使用完StatefulKnowledgeSession 对象之后,一定要调用其dispose()方法以释放相关内存资源。
StatefulKnowledgeSession
    statefulKSession=kbase.newStatefulKnowledgeSession();
statefulKSession.setGlobal("globalTest", new Object());//设置一个global对象
statefulKSession.insert(new Object());//插入一个fact对象
statefulKSession.fireAllRules();
statefulKSession.dispose();
  •  StatelessKnowledgeSession:事实上,StatelessKnowledgeSession 对StatefulKnowledgeSession 做了包装,使得在使用StatelessKnowledgeSession 对象时不需要再调用dispose()方法释放内存资源了。
  • Fact对象:Fact 是指在Drools 规则应用当中,将一个普通的JavaBean 插入到规则的WorkingMemory当中后的对象。

2. 规则

2.1 规则文件的结构

//规则文件的结构
package package-name

imports

globals

functions

queries

rules

 2.2 规则语言

//一个规则的结构
rule "name"
    attributes
    when
        LHS
    then
        RHS
end

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值