分享好友 最新动态首页 最新动态分类 切换频道
Drools:理解与应用Java开源规则引擎
2024-12-27 05:46

规则引擎是什么

规则引擎是根据一些算法,执行固定规则的一系列软件系统。规则引擎整合了传入系统的Fact(现实对象)集合和规则集合,从而去触发一个或多个业务操作。规则通常以声明式的方式在业务代码中实现,我们可能以为它很少会被改变。但事实上,这些业务逻辑的判断条件经常会被改变。

简而言之就是一些软件系统,按照一些算法,执行默写郭泽,在某些条件下,执行某些任务。类似定时任务一样,在一个固定的时间,满足业务规则,执行代码块。

在拥有大量规则和Fact对象的业务系统中,可能会出现多个Fact输入都会导致同样的输出,这种情况我们通常称作规则冲突。规则引擎可以采用不同的冲突解决方案来确定冲突规则的执行顺序。在规则引擎中,通常有两种执行方式

正向链接:这是一种基于“数据驱动”的形式,基于插入的Fact对象和Fact对象的更新,规则引擎利用可用的Fact推理规则来提取出更多的Fact对象,直到计算出最终目标,最终会有一个或多个规则被匹配,并计划执行。因此,规则引擎始于事实,始于结论。

反向链接:这是一种基于“目标驱动”或推理形式,与正向链接相反。反向链条从规则引擎假设的结论开始,如果不能够直接满足这些假设,则搜索可满足假设的子目标。规则引擎会循环执行这一过程,直到证明结论或没有更多可证明的子目标为止。

为什么不直接使用定时任务或者 if 判断进行各种使用呢。要用到规则引擎。其实规则与规程不同之处主要在于:业务流程,或者说流程处理;而规则引擎则代表了决定做什么业务。

为什么要有规则引擎,解决了什么问题

根据综上所述,可能还是不太能很好的理解什么是规则引擎。先阐述一下产品产生的背景。

在企业级项目的开发和管理中,系统肯定要面临各个版本的迭代与更新,可能有的更新小小一块儿,但是有的更新可能直接让系统直接面临整体重做,或者部分大型业务重做的问题。这不止增加了运维成本,还大大增加了各项投入,低产能,高投入。为了快速、低成本的更新,业务人员应该直接管理项目中的规则,不需要开发人员的加入。

而开发人员也遇到了问题:程序=算法+数据结构。中间离不开编码,而编码=先需求分析+程序设计+需求明确+流程疏导+测试。往往在测试的时候,编码还在变化,各种规则往往在系统的各种地方。从更新版本上来讲,对于程序开发人员本身来说已经是很困难的事了。更不要说一点代码不懂得业务人员或者是产品人员。

因此迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策。把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时(即商务时间)可以动态地管理和修改从而提供软件系统的柔性和适应性。

规则引擎正是应用于上述动态环境中的一种解决方法。

总结:规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据规则做出业务决策。

工作原理就是:规则引擎可以在系统工作时,将外部的业务规则加载到系统中,并使得系统按照该业务规则进行工作

业务规则

一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑。业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技术人员使用面向对象的技术语言或脚本来定制。业务规则的理论基础是:设置一个或多个条件,当满足这些条件时会触发一个或多个操作。

规则引擎的功能

规则引擎是一个中间件,也是由程序开发人员实现的,所以也应有开发人员通过程序接口的方式来使用和控制。规则引擎主要包含的API有如下几种

  • 加载和卸载规则集的API。
  • 数据操作的API。
  • 引擎执行的API。
    开发人员在程序中使用规则引擎基本遵循以下5个典型的步骤
  • 创建规则引擎对象
  • 向引擎中加载规则集或更换规则集
  • 向引擎提交需要被规则集处理的数据对象集合
  • 命令引擎执行;
  • 导出引擎执行结果,从引擎中撤出处理过的数据。
    使用了规则引擎之后,许多涉及业务逻辑的程序代码基本被这五个典型步骤所取代。一个开放的业务规则引擎应该可以”嵌入”在应用程序的任何位置,不同位置的规则引擎可以使用不同的规则集,用于处理不同的数据对象。
    此外,对使用引擎的数量没有限制。

规则引擎的推理步骤如下

  1. 将初始数据(fact)输入至工作内存(Working Memory)。
  2. 使用Pattern Matcher将规则库(Rules repository)的规则(rule)和数据(fact)比较。
  3. 如果执行规则存在冲突(conflict,即同时激活了多个规则,将冲突的规则放入冲突集合。
  4. 解决冲突,将激活的规则按顺序放入Agenda。
  5. 执行Agenda中的规则。
  6. 重复步骤2至5,直到执行完毕Agenda中的所有规则。

java规则引擎的框架

Java规则引擎主要有JRules/Drools/JLisa/QuickRules/OpenRules/Corticon等。以上这几个是市面上比较主流的规则引擎。

Drools

Drools是用Java语言编写的开放源码规则引擎,使用Rete算法对所编写的规则求值。Drools允许使用声明方式表达业务逻辑。可以使用非XML的本地语言编写规则,从而便于学习和理解。

并且,还可以将Java代码直接嵌入到规则文件中,这令Drools的学习更加吸引人。Drools有如下特点

  • 完整的实现了Rete算法
  • 提供了强大的Eclipse Plugin开发支持
  • 通过使用其中的DSL(Domain Specific Language),可以实现用自然语言方式来描述业务规则,使得业务分析人员也可以看懂业务规则代码
  • 提供了基于WEB的BRMS——Guvnor,Guvnor提供了规则管理的知识库,通过它可以实现规则的版本控制,及规则的在线修改与编译,使得开发人员和系统管理人员可以在线管理业务规则。

实现的源码

最新文章
网贷没法还了会怎么样
小编导语随着互联网金融的兴起,网络贷款成为了许多人解决资金问的一种快捷方式。随着借款人数的不断增加,很多人也面临着网贷无法按时偿还的困境。本站将详细探讨网贷无法偿还可能带来的后果,以及借款者应对这种情况的策略。一、网贷的基
视频格式转换妙锦囊,10款出色的视频格式转换工具推荐
因为不同的设备采集可能就会导致视频格式呈现多种多样的情况。如果要进行视频剪辑最好还是能统一一下视频的格式问题。今天我就介绍几款视频转换工具来解决这个问题。链接直达:(复制到浏览器打开)www.foxitsoftware.cn/shipinyasuo/?agen
搜狗输入法PC版智能助手来了 双击唤起 输入效率超级加倍
  12月31日电 近日,搜狗PC输入法迎来重大更新,正式上线电脑版“智能助手”。  通过启用该助手,用户便可在智能助手页面中快速使用关键词表情推荐、OCR图片文字识别、划词快速翻译与搜索等智慧功能。并且只需双击AIT键,即可快速唤出
闭店率创新高后,古茗的上市之路终于近了一步
来源:@国际金融报微博年初交表后,经历近乎一年的等待,古茗的上市终于等到最新进展。近日,证监会官网显示,古茗的境外上市备案信息已获确认,公司拟发行不超过4.41亿股境外上市普通股,并在香港联合交易所上市。在香颂资本董事沈萌看来
【爱剪辑电脑版下载2024】爱剪辑 PC端最新版「含模拟器」
爱剪辑,一般又称爱剪辑手机版。爱剪辑软件app,专业视频剪辑编辑制作。
微信新规:升级版《微信外部链接内容管理规范》28日起施行
这两天,微信封杀拼团砍价链接冲上热搜#微信外链规范将升级:部分拼团砍价营销被禁据媒体报道,微信外链规范将新增4项规范,包括:不可违规使用用户头像;不可诱导、误导下载/跳转;不可进行好友助力、砍价等违规活动,不可以违规拼团等。
淘宝店铺应该怎么运营老顾客(解析淘宝店铺老顾客有哪些维护技巧)
做淘宝店越来越难,每天要引流,每天都在和淘宝内的店铺做竞争。虽然说淘宝的公域流量需要争取,但是淘宝还有很多私域流量是可以被开发的,比如最常见的就是老客户。那么老客户应该如何运营呢? 我们可以在后台看看自己的流量分析,虽然说每
百度申请搜索相关专利,基于搜索意图实现精准操作
金融界2024年12月18日消息,国家知识产权局信息显示,北京百度网讯科技有限公司申请一项名为“搜索方法、装置、设备、介质、程序产品及智能体”的专利,公开号 CN 119128228 A,申请日期为 2024 年 9 月。专利摘要显示,本公开提供了搜索方
游走外链吧,不如认清如下外链技巧
在SEO的浩瀚征途中,我深知,盲目追逐外链的数量无异于缘木求鱼。凭借多年的实战经验,我深刻体会到,质量永远胜于数量,尤其是在外链构建上。今天,就让我们一起揭开那些真正有效且被忽视的外链技巧的面纱。一、外链策略的精准定位在SEO的
相关文章
推荐文章
发表评论
0评