社区
Web 开发
帖子详情
谁用过规则引擎DROOLS,进来讲讲
小乐乐101010
2008-11-27 09:21:27
如题,最近老大让我研究一下Drools规则引擎,看得比较迷茫,谁用过给我讲讲。谢谢了
...全文
676
13
打赏
收藏
谁用过规则引擎DROOLS,进来讲讲
如题,最近老大让我研究一下Drools规则引擎,看得比较迷茫,谁用过给我讲讲。谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhgh070
2010-06-15
打赏
举报
回复
正在使用中
jiangzhu1212
2010-03-29
打赏
举报
回复
兄弟,我也是老大让我来研究Drools的,不过比你晚了近一年,现在已经出到Drools5。1版本了,请问你现在还在使用Drools吗?给点指点行不?
xhp317
2009-06-09
打赏
举报
回复
关注中
希望能有教材出台
小乐乐101010
2008-12-15
打赏
举报
回复
............
小乐乐101010
2008-12-11
打赏
举报
回复
顶一下
小乐乐101010
2008-11-28
打赏
举报
回复
把你博客地址贴上来。
小乐乐101010
2008-11-27
打赏
举报
回复
有没有一些实例呀
抬头望远,低头沉思
2008-11-27
打赏
举报
回复
这个兄弟的博客:
http://blog.csdn.net/lisboa/archive/2007/09/17/1788681.aspx
抬头望远,低头沉思
2008-11-27
打赏
举报
回复
规则引擎
JBoss Drools是一款开源的业务规则引擎,目前已经发布了4.0版本。借此契机,InfoQ为读者带来JBoss Drools目前及将来发展规划方面的进一步报导。
JBoss Drools在JBoss Rules 3.0 版本一年之后发布,最显著的变化体现在名称上,在新版本发布时,原先的名称JBoss Rules更改为JBoss Drools。伴随新名称的启用,新的API函数和语言特性也随之而来,这些改进对于3.0版本的向后兼容性造成部分影响。根据官方发布声明中的描述,在4.0版本中主要的特色和改进如下:
更高的性能:较之于之前的版本,Drools 4.0更为高效并且占用更少的内存空间。内部的性能测试表明,性能的提升已经从几分钟缩减为若干秒钟。
提升的表达能力:当前的发布版引入了更为强大且的业务行为脚本语言(MVFlex表达式语言)。用户会发现脚本语言的引入使得代码变得更为简明且可读性更好。
友好的业务分析工具:一个具备向导功能的规则编辑器的增加,使得非程序员用户可以设计复杂的业务规则,并在没有编写任何代码的情况下自动绑定企业数据。提供带有菜单提示和下拉列表的向导来帮助用户完成设计过程。
规则流的能力:可视化的建模技术可以使用户声明式地为相应规则的执行路径建立访问模型。它同样还允许在单个工作内存中存在多个并发工作流,并根据控制典型的业务处理过程的需求,从根本上组织规则的执行。
多应用支撑:对于有状态和无状态处理过程增强的支持以及全面的线程安全性,辅助Drools更轻易的嵌入在Java平台,JavaEE以及面向服务的商业应用之中。
直接可和Hibernate集成:用户可以直接在Hibernate驱动的RDBMS查询中对数据(facts)进行判断。现有的Hibernate组件可以直接用在规则引擎里,减少编码的工作量。
为非程序员设计的BRMS:从技术角度来看,新的BRMS基于Web开发,使用AJAX呈现,便于协作,是一个编写、版本化控制和管理规则的系统。业务分析师目前可以交互式的授权或修改自动转换的规则。管理员目前具备完全的生命周期控制能力,包含何种规则在QA阶段,分段(staging),以及实施(production)阶段等等。
对于Maven的用户,Drools 4.0版本也通过JBoss的Maven存储库提供,并且伴随新版本的发布,Eclipse的Drools IDE环境也推出为数不少的新特性和功能。关于版本更新的细节描述,已通过PDF文档的形式给出。
JBoss Drools项目的负责人Mark Proctor,最近就JBoss Drools项目未来发布版的预期发表了评述:
Proctor同时也介绍了一些来自于社区的项目,例如即将到来被称为drools-solver的解决框架,以及将会作为插件加入到JBoss Drools之中的模糊逻辑评估系统。Proctor相信在不远的将来,JBoss Drools将会从一个规则引擎转变为完全整合的基于人工智能的行为建模平台。
查看英文原文:JBoss Drools 4.0: Business rules now more accessible to non-programmers
这个兄弟的博客
小乐乐101010
2008-11-27
打赏
举报
回复
晕不会吧,怎么没有人会吗???
lcllcl987
2008-11-27
打赏
举报
回复
看我的blog,上个月的, 专门研究了下。
myjava_024
2008-11-27
打赏
举报
回复
Drools 是一个开源的规则引擎,目前有Jboss管理,最新版本为4.X。
我们使用Drools就是为了让它处理数据与规则的关系,因此Drools要获得数据和获得规则,然后进行执行。因此Drools分为编制和运行时两个部分。
编制是指产生rule的过程,Drools用DRL,或者XML来描述规则。
编制的过程包括为规则建立DRL 或XML 文件,传入一个由Antlr 3 文法器定义的解析器中。解析器对文件中规则文法的正确性进行检查并为descr 建立一个中间结构,在AST 中的descr 代表规则的描述。AST 然后将descr 传入Package Builder中,由其进行打包。Package Builder 同时负责包括打包中用到的所有代码产生器和编译器。Package 对象是自包含并可配置的,它是一个包含规则的序列化的对象。
RuleBase 是运行时组件,包含一个或多个Package。Package 在任何时候都可以向RuleBase中添加或删除。一个RuleBase 可以同时初始化多个Working Memory,在其间维护着一个弱引用,除非重新进行配置。Working Memory 包含许多子组件,如Working Memory Event Support(事件支持),Truth Maintenance System(真值维护系统), Agenda 和 Agenda Event Support(事件支持)。向Working Memory 中设置对象的工作可能要在建立了一个或多个激活的规则后才结束。Agenda 负有规划激活规则运行的责任。
以上是Drools的总体架构,其主要有以下类实现:
编制:
XmlParser,DrlParser 分别用来解析XML描述的规则文件和DRL描述的规则文件。
PackageBuilder 创建package实例。
例如:
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "package1.drl" ) ) );
builder.addPackageFromXml( new
InputStreamReader( getClass().getResourceAsStream( "package2.xml" ) ) );
Package pkg = builder.getPackage();
运行时的类:
RuleBase 使用RuleBaseFactory 实例化,默认情况下返回一个ReteOO 的RuleBase。Package通过使用addPackage 方法按顺序加入。你可以指定任何名称空间的Packages 或者同一名称的多个包加入RuleBase。
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage( pkg );
事实数据相关类:
WorkingMemory 保存运行时事实数据的地方。
由ruleBase产生:WorkingMemory wm= ruleBase.newStatefulSession();
加载事实数据:
wm.insert(object );
insert方法返回一个FactHandle对象指向workingMemory中对象的引用。如果要对Object进行修改删除等操作都要通过FactHander对象来完成。
在准备好Rule,和Fact后 就可以调用 WorkingMemory对象的 fireAllRules()方法执行规则引擎。
Agenda上面提到过它负有规划激活规则运行的责任。
它运行过程分两个阶段:
1) WorkingMemory Actions : assert 新的 facts ,修改存在的 facts 和 retract facts
都是 WorkingMemory Actions 。通过在应用程序中调用 fireAllRules() 方法,会使引擎
转换到 Agenda Evaluatioin 阶段。
2) Agenda Evaluation :尝试选择一条规则进行激发( fire )。如果规则没有找到就
退出,否则它就尝试激发这条规则,然后转换到 WorkingMemory Actions 阶段,直到 Agenda
中为空。
Drools提供了一些监听器来获得规则引擎执行过程中发生的一些事件:
WorkingMemoryEventListene,AgendEventListener和RuleFlowEventListener
从名称来看我们也大概能知道他们分别的作用:
WorkingMemoryEventListene是监听WorkingMemory中发生的一些时间,WorkingMemory发生的事件那就是Fact的插入,删除,修改。
对应的借口为:
objectInserted(ObjectInsertedEvent e);
objectRetracted(ObjectRetractedEvent e);
objectUpdated(ObjectUpdatedEvent e);
AgendEventListener是舰艇运行过程中Agenda管理调配规则发生的一些事件:
Action 在我理解应该是一个冲突就是上面提到过的 完全符合规则条件的,包含规则和数据的对象。
activationCancelled action被取消,可能是因为在规则的执行过程中,某个对象被修改或者某个对象被删除引起。
activationCreated 当有数据能匹配到规则,就能发生这个事件。
afterActivationFired 在规则执行后触发这个事件
agendaGroupPopped 规则组。。。
agendaGroupPushed
beforeActivationFired 在规则执行前触发这个事件
小乐乐101010
2008-11-27
打赏
举报
回复
顶上去
Drools
规则引擎
深度实战:从入门到应用
Drools
不仅仅是一个技术组件,它代表了一种解耦决策逻辑与执行流程的设计思想。当你能把“要不要打折”、“是否属于高风险用户”这类问题交给
规则引擎
去回答时,你的主业务代码才能真正专注于“下单”、“支付”这些核心路径。🌟终极建议把规则当成“配置”管理,而非“代码”建立规则版本控制系统(Git + YAML 描述元信息)提供可视化编辑器(可选,适合非技术人员)设置灰度发布机制,先小流量验证再全量定期清理废弃规则,避免“规则垃圾”
规则引擎
深度对比,LiteFlow vs
Drools
!
大家好,我是不才陈某~
Drools
是一款老牌的java
规则引擎
框架,早在十几年前,我刚工作的时候,曾在一家第三方支付企业工作。在核心的支付路由层面我记得就是用
Drools
来做的。难能可贵的是,
Drools
这个项目在十几年后还依旧保持着开源和更新。https://github.com/kiegroup/
drools
而LiteFlow也是一款java
规则引擎
,于2020年开源。经过2年的迭代,现在功能...
[
Drools
]JAVA
规则引擎
--
Drools
Drools
是一个基于java的
规则引擎
,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。 本文所使用的demo已上传 http://download.csdn.net/source/3002213 1、
Drools
语法 开始语法之前首先要了解一下
drools
的基本工作过程,通常而言我们使用一个
Drools
规则引擎
之常用语法
一、基础api 在
Drools
当中,规则的编译与运行要通过
Drools
提供的各种API 来实现,这些API 总体来讲可以分为三类:规则编译、规则收集和规则的执行。完成这些工作的API 主要有KnowledgeBuilder、KnowledgeBase、StatefulKnowledgeSession、StatelessKnowledgeSession等,它们起到了对规则文件进行收集、编译、查错、插入fact、设置global、执行规则或规则流等作用。 1.1、KnowledgeBuilder
Drools
规则引擎
转 https://blog.csdn.net/qq_31179577/article/details/76585854 PS:文章还在写,目前都是一些概念性质的,想要做拓展的程序猿请过几天再看,
Drools
会一致做完的~~~ 1. 工欲善其事,必先利其器
Drools
提供基于eclipse的IDE(这是可选的),但其核心只需要Java 1.5(Java SE)。 1.1 GEF...
Web 开发
81,114
社区成员
341,728
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章