`
allenson933
  • 浏览: 24147 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Drools学习笔记1

阅读更多

1.      为什么要使用规则引擎?

 

首先当面临一个逻辑稍微复杂的业务处理时,经常会过多的使用if… else if…else 这样的语句,我们容易陷入自己的逻辑混乱当中,而且可调试性和可维护性非常差。这时候我们就会想能不能把业务逻辑抽象出来,用一种简单易懂的语言来描述。这时候规则引擎就出现了。使用规则引擎主要有以下几个优点:

1)               声明式的编程:这种方式使得逻辑变得清晰易懂,而且对复杂问题的描述也变得简单化。

2)               逻辑与数据分离:数据保存在系统对象中,逻辑保存在规则中。这根本性的打破了面向对象系统中将数据和逻辑耦合起来的局面,这点是有利的也是不利的,在于你的观察角度。这样做的结果是,将来逻辑发生改变时更容易被维护,因为逻辑保存在规则中。这点在逻辑是跨领域或多领域中使用时尤其有用。通过将逻辑集中在一个或数个清晰的规则文件中,取代了之前分散在代码中的局面。

3)      速度及可测量性 : Rete算法、Leaps算法,以及由此衍生出来的 DroolsReteLeaps算法,提供了对系统数据对象非常有效率的匹配。这些都是高效率尤其当你的数据是不完全的改变(规则引擎能够记得之前的匹配)。这些算法经过了大量实际考验的证明。

Drools是实现规则引擎的一个很优秀的框架。

 

2.      规则引擎中规则如何定义?

 

我觉得很多书籍一开始就讲原理、内部的实现机制等等,而我比较喜欢先阅读如何将它运行起来,然后再接着学习它是如何是实现的,这样学习起来会更加的快捷,而且一开始也不会那么枯燥。先看一个规则定义的例子:

下面的规则定义表示的是当一个人进入到一个房间(isComing==true),同时同一个房间内(roomId==$p.getRoomId())温度小于20°(temperature<20)时,触发一个事件(在这个情况下是输出一条语句)

rule "PE Rules"
    when
        #conditions 
        $p:PeopleEvent(isComing==true)
        $t:TemperatureEvent(temperature<20, roomId==$p.getRoomId())
    then
        #actions
      System.out.println("/******Situmulate the condition******/");
end	

          这个就是一个简单规则的定义,相信大家都能看出when后面跟的是判断的逻辑,then后面跟的是条件都满足时触发的事件。其中在when中实现了一些表达式的判断,与逻辑(在中的对象。当然Drools在规则定义中还提供了很多强大的功能,我们将在后面对几个比较重要的定义方式进行介绍。

          有了规则之后,我们希望能输入一些事情来测试一下这个规则是否能满足我们的需求。下面的代码中触发了这条规则

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    drools学习笔记

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

    Drools学习笔记

    1. **Drools 优点** - **易理解**:Drools 的规则以类似英语的语句编写,对业务人员和新开发者来说,理解和修改规则更直观。 - **维护便捷**:开发者只需要关注规则本身,而无需关心如何实现,降低了维护成本。 ...

    Drools6-笔记

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

    Drools安装配置学习笔记.doc

    1. **下载Drools组件** - 首先,你需要访问Drools的官方下载页面获取必要的组件。在提供的链接中,有两个主要的zip文件需要下载: - `drools-5.0-bin.zip` 是Drools运行环境,包含了运行Drools所需的核心库。 - `...

    drools5 读书笔记

    《drools5 读书笔记》 Drools是一款强大的规则引擎,它基于Java语言,用于在企业级应用中实现复杂的业务逻辑。这个读书笔记主要涵盖了Drools 5版本的相关内容,结合源码分析和工具使用,旨在帮助读者深入理解其工作...

    JBPM3学习笔记

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

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

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

    jbpm学习资料,jbpm教程

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

    JBPM相关学习资料

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

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

    **1. Protege入门篇** 在初次接触Protege时,你需要了解其基本界面和功能。启动Protege后,你会看到一个空白的工作区,这里将是你构建本体的地方。左侧是类和对象属性的列表,右侧则是实体的详细信息面板。你可以...

    JBPM研究笔记

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

    工作流引擎笔记

    1. **流程建模**:使用Eclipse BPMN2插件,开发人员可以图形化地设计复杂的业务流程。 2. **规则集成**:Jbpm与Drools规则引擎紧密集成,允许在流程中嵌入决策逻辑。 3. **事件驱动**:支持事件触发的流程行为,比如...

    JBossjBPM.rar_工作流引擎

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

    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 计算机基础(重要) 需要完善 需要...

Global site tag (gtag.js) - Google Analytics