Drool学习记录(一) 概念、Helloworld

本文介绍了规则引擎的作用,重点讲解了开源规则引擎Drools,包括其简介、组件和结构,特别是Rete算法。通过一个简单的业务场景,指导读者如何创建Drools的Hello World程序,包括新建工程、创建域、编写规则文件和配置文件,以帮助理解Drools的工作原理。
摘要由CSDN通过智能技术生成

1 关于规则引擎

基于知识库和规则的专家系统是早期最主流的人工智能,不同于现在流行的基于统计、机器学习的智能算法,基于规则的算法相对来说更加直观和易于理解,毕竟如果简单理解的话,就是定义好了If-Than结构,从而让不同的输入得到相应的输出。但从现实角度出发,开发基于规则的业务系统很多时候是必须的,因为很多业务场景就是规定好的处理逻辑,比如一款游戏里,使用某个道具后给角色添加哪种效果,就是要用预先定义好的If-Than逻辑。
正如所有软件工程或设计模式教程里提到的,随着业务逻辑的扩张和更新,通过代码定义判断逻辑将变的越来越复杂并难以维护,因此规则引擎应运而生,其核心思想就是把规则(rule)和数据(fact)分离,我们自身的系统只维护数据的域(Domain),业务逻辑的判断、验证和运行交给规则引擎处理,当然我们还是要编写和维护规则文件的,不过因为规则已经独立于系统,这个工作就可以交给非程序开发者了,并且是在线和动态的。
在游戏应用、金融、航班系统等领域,软件系统面对的主要问题之一就是复杂多变业务规则和庞大并具有实时性的输入数据,因此这些领域规则引擎的应用也更加普遍。

2 关于Drools

2.1 简介

Drools引擎可以说是目前最有名的一个开源规则引擎,按照官网的解释,整个Drools是一个Business Rules Management System (BRMS),Drools引擎是其中的核心组件,基于原生JAVA编写,遵循Apache 协议并且加入Maven中心仓储。
另一方面,Drools又隶属于KIE (Knowledge Is Everything)这个大项目,按照官方教程的说明,KIE包括了多个相互依赖的子项目用以提供业务自动化管理的解决方案,例如OptaPlanner就是把Drools作为了重要的一个子组件(OptaPlanner也是我后面计划记录的)。

2.2 Drools的组件和结构

首先要了解构成Drools引擎处理模式的几个基本成分:

  • Rule:业务规则,一个rule必须有一个触发它的condition,以及触发后对应的action,其实就是If-Than的意思
  • Fact:就是输入到Drools引擎进行rule匹配的数据,fact不仅仅只是输入引擎的原始数据,也包括某些rule触发后生成的中间fact
  • Production memory:Drools引擎内部会将所有的rule信息放在这个空间内
  • Working memory: Drools引擎内部会将所有的fact放在这个空间内
  • Agenda:在Drools引擎进行执行操作前,会将激活的rule在这个空间进行注册和存储, 正如该单词的字面意思,引擎会把激活的rule按照优先级生成运行序列表,按照顺序依次执行rule

image.png
对照上面这张图,Drools引擎大致是这样工作的:引擎启动后,首先进行编译工作,就是把我们定义好的rule加载到Production memory中,我们也可以把这个过程称为"构建知识库";当我们的业务系统生成新的数据并传入到引擎,引擎把这些数据作为fact存储进Working memory;接着引擎开始"模式匹配(pattern matching)"工作,即对Working memory中的fact,匹配r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值