`
冰之晴天小猪
  • 浏览: 9233 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

3.对单个DRL文件的剖析

 
阅读更多

昨天看完《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

 

 

分享到:
评论

相关推荐

    idea开发drools的设置文件

    - **DRL 文件**:DRL 文件是 Drools 规则的主要载体,它使用一种类似 SQL 的语法规则来编写业务逻辑。 - **规则**:规则由一个或多个条件("when" 部分)和一个动作("then" 部分)组成。当条件满足时,动作将被执行...

    SLICO.zip_DRL_SLICO_SLICO 分割_超像素分割

    在"SLICO.zip_DRL_SLICO_SLICO 分割_超像素分割"这个压缩包中,包含了一个名为"SLICO.exe"的可执行文件。这表明这是一个已经编译好的SLICO超像素分割程序,用户只需双击运行,无需编程环境,就可以对输入的图像进行...

    X9DRL3_808.zip

    X9DRL3_808.zip是一个包含超微X9DRL-3F主板最新BIOS版本的压缩文件。文件名中的"808"很可能表示这个BIOS固件的版本号,通常数字越大,代表修复了更多的bug或增加了新的功能。这个压缩文件可能包括了BIOS的升级程序、...

    drools动态生成规则文件

    3. 内存中的规则:除了生成.drl文件,drools还支持在内存中创建规则。这可以通过构建RuleDescr对象并使用KnowledgeBuilder.add()方法添加到规则库中。 四、工作记忆与事实 在drools中,规则的执行依赖于工作记忆...

    超微 bios x9drl if

    在本文中,我们将深入探讨超微X9DRL IF BIOS的相关知识点,以及如何通过X9DRL8.712文件进行更新。 1. **超微X9DRL IF BIOS**: 超微X9DRL IF BIOS是针对特定型号的服务器主板——X11SL-F设计的。BIOS(基本输入...

    DRL论坛关于TC的合集

    这个名为"DRL论坛关于TC的合集"的资源包,汇集了DRL论坛中众多高手的经验与智慧,涵盖了从基础操作、界面美化到功能插件及配置文件设置等全方位的知识点。 1. **入门篇** - **基本操作**:学习如何使用Total...

    3D-DRL_DeliveryDuel.zip

    3D-DRL_DeliveryDuel.zip,深度强化学习应用于现代三维视频游戏环境,称为交付决斗。,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及其他应用程序。

    x10drl-i.pdf

    3. **操作说明**:提供详尽的操作步骤,帮助用户熟悉X10DRL-i的各项功能。 4. **故障排除与维护**:列举了常见问题及解决方案,指导用户自行排查和解决问题。 5. **安全注意事项**:强调了使用过程中的安全规范,...

    Drill_PTH_Through.DRL

    Drill_PTH_Through.DRL

    Drill_NPTH_Through.DRL

    Drill_NPTH_Through.DRL

    超微x10drl-i说明书MNL-1566.pdf

    "超微x10drl-i说明书MNL-1566.pdf" 该用户手册是Super Micro Computer, Inc.发布的官方文档,用于介绍超微x10drl-i产品的使用和操作。以下是该文档中涉及的重要知识点: 1. 版权声明:该文档的所有权归Super Micro...

    AutoPentest-DRL:使用深度强化学习的自动化渗透测试_Python_OpenEdge ABL_下载.zip

    3. **配置文件**:定义测试策略、目标系统信息和其他设置的文件。 4. **数据集**:用于训练DRL模型的历史渗透测试数据。 5. **脚本和工具**:辅助脚本,如自动化测试执行、结果分析和报告生成。 6. **文档**:项目...

    立创eda画板的所有gerber文件,可以直接打板子

    1. **Drill_PTH_Through.DRL** 和 **Drill_PTH_Through_Via.DRL**:这两个文件是钻孔文件,用于指示在PCB上哪里需要钻孔以便安装通孔插件元件(PTH,Pin Through Hole)和过孔(Via)。它们包含了孔的位置和大小信息...

    超微主板X9DRL-iF说明书

    根据提供的文件信息,以下是关于超微主板X9DRL-iF说明书的知识点整理: 1. 超微主板X9DRL-iF是一款专门为服务器设计的主板。由于它被描述为服务器常用主板,我们可以推断它可能具备以下特点: - 高可靠性:服务器...

    参赛作品《NEC Key Display》-NecKeyDisplay_Gerber_20180514.rar

    1. **DRL文件**:drl001.drl 和 drl001.lst 这两个文件通常代表钻孔数据文件和钻孔列表文件,它们包含PCB制造过程中的钻孔位置和大小信息,用于在电路板上定位元器件的安装孔和通孔。 2. **L1.pho 和 L2.pho**:...

    genesis文件输出脚本

    3. DRL文件:DRL(Drill File)又称Excellon文件,用于描述PCB上的钻孔位置和类型,包括通孔、盲孔和埋孔。Genesis脚本能够生成精确的DRL文件,提供每个孔的位置坐标、孔径大小、孔类型等信息,这对于PCB制造过程中...

    DRL.rar_视觉追踪

    标题中的"DRL.rar_视觉追踪"表明这是一个关于深度强化学习(Deep Reinforcement Learning, DRL)在视觉追踪领域的应用项目。视觉追踪是计算机视觉中的一个关键任务,它涉及自动跟踪视频序列中特定目标的位置和状态,...

    ole-drools-xls2drl:用于将Excel电子表格转换为Drools DRL文件的简单Java应用程序

    尽管此应用程序可以将任何格式正确的Excel电子表格转换为Drools DRL文件,但它主要用于为Kuali OLE(开放图书馆环境)应用程序生成Drools规则文件。 要求 Java 1.7 Gradle2.6 构建/设置 安装所需的软件 克隆此存储...

Global site tag (gtag.js) - Google Analytics