`
hellostone
  • 浏览: 11306 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Drools学习笔记(三)

阅读更多
Drools4.0 自带一种非XML 格式的规则语言。这种格式通过使用标点符号,使得语言非常的轻量化,并且通过DSL(域规则语言)支持自然语言的扩展,这使得你可以将该语言演化到与你需要解决的问题域更为相配。

规则文件通常是以drl 扩展名结尾。在一个drl 文件中可以包含多个规则,函数等等。但是你也可以将规则分开到多个规则文件中(在这种情况下建议采用.rule 扩展名,但不是必需的),分散规则利于管理巨量规则的情况。DRL 是简单的text 文件格式。
完整的DRL文件结构是:
package package-name
imports
globals
functions
queries
rules

其中package是必须的。
Imports的含义和Java里的imports含义相似。
Globals表示全局的Fact但它并不进入匹配过程。
Functions queries rules就是我们要写的业务逻辑了,我们用的最多的就是Rules。
RULE的基本结构:
rule “ruleName”
when
<LHS>
Then
        <RHS>
end
规则指定“when”作为一系列条件的集合(称为LHS),然后在“then”中指定一系列操作
(称为RHS)。(有些类似if…then)
不多介绍语法,介绍一下下面的例子:
rule "Purchase notification"
    salience 10
when
$c : Customer()
$p : Purchase( customer == $c)    
then
    System.out.println( "Customer " + $c.name + " just purchased " + $p.product.name );
end
第一行 Purchase notification是这个Rule的name,Rule name和Java的名称一样 在同一个包内不能重名。salience 10表示rule执行的优先级,当一个Fact进入WorkingMemory后可能有几个规则被触发,那你可以执行一个优先级来执行这些规则的执行顺序。
When下的部分是LHS, $c : Customer()表示触发规则的对象必须是Customer类型。并创建了一个Customer对象的引用 $c,$c可以在这个rule内使用。$p : Purchase( customer == $c)表示存在一个Purchase对象并且该对象的customer属性为上面描述的customer对象。如果符合上面两个条件规则引擎会执行then部分。Then部分的语法由于基本可以理解为Java语法。
分享到:
评论

相关推荐

    drools学习笔记

    对于学习 drools 的初学者,理解这些基础概念至关重要,它们将帮助你构建复杂的规则系统,实现业务逻辑的自动化和智能化。在实际应用中,根据需求灵活运用这些特性,可以极大地提升软件系统的可维护性和扩展性。

    Drools学习笔记

    【Drools 知识点详解】 Drools 是一个基于Java的规则引擎,它允许开发者用自然语言编写业务规则,并在运行时高效地执行这些规则。Drools 提供了一个强大的框架,使得业务逻辑与应用程序的其他部分保持松耦合,从而...

    Drools6-笔记

    ### Drools 6基础知识与实践指南 #### 一、Drools 6简介与环境搭建 **Drools** 是一款开源的业务规则管理系统(BRMS),它支持...接下来可以深入学习Drools的高级特性,如决策表、模板等,以更好地应用于实际项目中。

    Drools安装配置学习笔记.doc

    这些示例涵盖了各种Drools的使用场景,是学习和理解Drools功能的好资源。 Drools的主要特性包括规则的编写、推理引擎、工作流支持以及与各种数据源的集成。它的规则语言(DRL)允许开发者用类似英语的语法定义规则...

    drools5 读书笔记

    三、Drools规则语言 Drools使用DRL(Drools Rule Language)编写规则,这是一种类似SQL的声明式语言,允许用户定义规则的条件和行动。DRL支持丰富的逻辑表达式,如AND、OR、NOT等,以及函数和变量的使用。 四、...

    Activiti学习笔记三:管理流程定义

    在“Activiti学习笔记三:管理流程定义”中,我们将深入探讨如何使用Activiti来管理和操作流程定义。 首先,流程定义是Activiti中的核心概念,它是流程模型的静态表示,描述了工作流的结构和规则。流程定义通常以...

    JBPM3学习笔记

    **JBPM3学习笔记** JBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了对业务流程的建模、部署、执行和监控的能力。在本文中,我们将深入探讨JBPM3的核心概念、功能和使用方法,以帮助...

    jbpm学习资料,jbpm教程

    在jBPM-jPDL学习笔记中,你将了解到以下关键知识点: 1. **流程定义**:jPDL通过流程图中的节点(如开始节点、结束节点、任务节点、事件节点等)来描述流程的结构。这些节点之间的连线代表了流程的流转路径。 2. *...

    JBPM相关学习资料

    - 博文链接:[JBPM学习笔记](https://zhaoshijie.iteye.com/blog/932534) 提供了关于JBPM的实践经验和案例分享,对于初学者来说是很好的参考资料。 通过深入学习和实践,可以更好地理解和掌握JBPM,从而在实际项目...

    Protege新手入门(入门篇+进阶篇+推理篇+使用笔记)

    使用笔记** - 定期保存工作:在编辑本体过程中,应经常保存以防意外丢失。 - 学习插件:Protege有丰富的插件库,如Ontology Library插件可以帮助查找和导入公共本体。 - 熟悉快捷键:熟练使用快捷键可以提高工作...

    JBPM研究笔记

    **JBPM研究笔记** JBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了全面的业务流程管理和工作流解决方案。这个系统的核心是基于模型驱动的架构,允许开发者通过图形化的方式设计、...

    工作流引擎笔记

    2. **规则集成**:Jbpm与Drools规则引擎紧密集成,允许在流程中嵌入决策逻辑。 3. **事件驱动**:支持事件触发的流程行为,比如基于时间或特定事件的流程跳转。 4. **持久化**:使用Hibernate进行数据持久化,保证...

    Java面试:Java面试,Java基础,JVM,JUC(高并发),Java8新特性,集合,NIO,计算机基础,计算机网络,操作系统,数据结构,计算机组成原理,数据库,MySql,Oracle,Redis,设计模式,Python,工作流(Activiti),规则引擎(Drools),Spring,SpringCloud,Dubbo,Maven,Mybatis,JWT,Netty,Nginx,Shiro,Zookeeper,消息位置(MQ),微服务,Git,Docker,Utils, Linux,Shell

    当学习完一个知识点以后,自己做笔记,同时事后要总结,如果自己能把一个知识清晰表达出来的时候,自己也是有很大的收获和成长的; 赠人玫瑰手留余香。 目录 学习知识相关 Java 计算机基础(重要) 需要完善 需要...

    JBossjBPM.rar_工作流引擎

    在提供的压缩包中,“JBossjBPM.nh”可能是一个笔记或文档文件,详细介绍了在实际项目中使用JBoss jBPM的经验和技巧。通常,这种文件会涵盖以下内容: 1. 安装与配置:如何在本地环境中设置jBPM,包括依赖库的导入和...

Global site tag (gtag.js) - Google Analytics