【java】 drool规则引擎背后的Rete算法
什么是规则引擎?
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。(摘自百度百科)
drool就是用java语言开发的规则引擎插件,规则引擎的原理就是Rete算法。
Rete算法是Charles Forgy在1979年的论文中首次提出的,针对基于规则知识表现的模式匹配算法。
什么是业务规则?就是当发生了X后,执行Y操作,当发生了Z后,执行A操作。
rate主要就是分成了两个库,一个是规则库,一个是事实库:下面举一个经典且简单的例子
事实库:
1:积木1在积木2的上面
2:积木1在积木3的上面
3:积木1的颜色是红色的
4:积木2在桌子上面
5:积木2在积木3的左边
6:积木2是蓝色的
7:积木3在积木4的左边
8:积木3在桌子上
9:积木3的颜色是红色的
规则库
规则库分为左手规则-前提和右手规则-结论
依旧用上面积木的例子
找到一个红色积木左边堆在一起的东西
找到满足上述规则的事实
从规则中我们提取到了三个条件:也就是左手规则
条件1:某个东西在某个东西的上面
条件2:某个东西在某个东西的左边
条件3:某个东西是红色的
满足条件1的事实有1,2,4,8
满足条件2的事实有5,7
满足条件3的事实有3,9
首先是将满足条件1和条件2的所有事实进行一个合并会发现
1,5是积木3的左边是积木1在积木2的上边,满足
2,7是积木4的左边是积木1在积木3的上边,满足
将这两条再与条件三合并
会发现1,5,9是红色的积木3的左边是积木1在积木2的上边,满足然后就可以执行对应的右手规则操作。
原理还是非常简单的,主要还是在于运用。
【java】 drool规则引擎背后的Rete算法相关推荐
- Jess 7.2p2——Java平台规则引擎官方文档翻译1
Jess 7.2p2--Java平台规则引擎官方文档翻译1 本博客转载自本体小本营. 1.入门 1.1.需求 在使用Jess前请先确认JVM是否正确安装并能正常工作. 使用JessDE集成开发环境,你 ...
- Jess 7.2p2——Java平台规则引擎官方文档翻译2
Jess 7.2p2--Java平台规则引擎官方文档翻译2 本博客是本人接着[本体小本营][1]之前关于Jess的官方文档的补充翻译,前一部分请看转载的Jess 7.2p2--Java平台规则引擎官方 ...
- java 实现规则引擎_Java规则引擎 Easy Rules
1. Easy Rules 概述 Easy Rules是一个Java规则引擎,灵感来自一篇名为<Should I use a Rules Engine?>的文章 规则引擎就是提供一种可选 ...
- java开源规则引擎比较_规则引擎对比
RuleEngine--一款使用简单,入门方便的数据库规则引擎_Rewen的专栏-CSDN博客_rulesengine https://blog.csdn.net/Rewen/article/deta ...
- 规则引擎 java 设计_规则引擎设计
最近用到了规则引擎 ,简单做一个总结. 规则,说白了,就是,现状(fact)怎么样,如果(condition)怎么样,那么(action)怎么样. 规则引擎使用了rete算法,我这边使用的是drool ...
- 详解:Drools规则引擎探究
引入 ▐ 问题引入 天猫奢品业务方为了吸引更多的新客,和提高会员的活跃度,做了一期活动,通过购买天猫奢品频道内的任意商品就赠送特殊积分,积分可以直接兑换限量的奢品商品.假如业务方给的规则如下: 主刃同 ...
- 使用 Drools 规则引擎实现业务逻辑,可调试drl文件
http://www.srcsky.com/tech/arts/389.html 代码下载http://download.csdn.net/detail/zhy011525/2462313 使用 Dr ...
- .Net Core 环境下构建强大且易用的规则引擎
1. 引言 1.1 为什么需要规则引擎 在业务的早期时代,也许使用硬编码或者逻辑判断就可以满足要求.但随着业务的发展,越来越多的问题会暴露出来: 逻辑复杂度带来的编码挑战,需求变更时改变逻辑可能会引起 ...
- 小明历险记:规则引擎drools教程一
小明是一家互联网公司的软件工程师,他们公司为了吸引新用户经常会搞活动,小明常常为了做活动加班加点很烦躁,这不今天呀又来了一个活动需求,我们大家一起帮他看看. 小明的烦恼 活动规则是根据用户购买订单的金 ...
- 别再说你不会,规则引擎Drools了
一.为什么要使用规则引擎 有一天运营想弄一个积分策略,计算额外积分金额 ,规则如下: 订单原价金额 100以下, 不加分: 100-500 加100分: 500-1000 加500分: 1000 以上 ...
最新文章
- web服务的搭建 windows server 2008
- 图解Linux系统启动流程
- linux如何输出当前时间,如何在linux下输出当前时间
- java中no1_Java程序设计实验(NO.1).doc
- linux新增动态库后可执行程序找不到的问题
- TeXstudio中文编码踩坑实录
- docker项目部署 php_使用Docker部署PHP开发环境的方法详解
- 国外项目跳板机访问时差问题
- 信息检索与利用(第三版)第五章 信息法与综合性信息检索
- 智能问答机器人python_帮帮智能问答机器人中TaskBot任务对话算法实践
- 好用的电子邮箱测评,这么多的邮箱究竟哪个最好用呢?
- 文章的DOI号是神马
- 教你如何赚你的第一桶金 - 2048(包括源代码)
- 选择短信平台请注意以下几点:
- cortex M7 MPU 总结
- 自学UG编程难吗?怎么样才能学好大型汽车模具编程?
- 日志瘦身神操作:从5G优化到1G到底是怎么做到的!(荣耀典藏版)
- python:私有属性
- layer 父获取子页面元素
- 解决 Idea 下 Tomcat 乱码(淇℃伅璀﹀憡)问题