文档章节

规则引擎分析

will--wang
 will--wang
发布于 2017/07/31 15:32
字数 544
阅读 33
收藏 0

【面临问题】

业务规则、商业逻辑复杂

业务规则异常调整,如折扣、价格

24小时不停机,实时修改规则

【解决问题】

声明式编程,关注“做什么”,而不是“怎么做”

逻辑、数据分离

rete算法

算法转规则,业务规则太复杂没有现成的算法实现

【What】

嵌入式组件,业务决策与系统分离

核心获取knowledge

应用knowledege到fact

conditions(LHS)和actions(RHS)

正向链 或 反向链

推理引擎

rules(规则库)-> engine <-fact (working memory) (rete算法)

{正向链}

RULE ->parse rule->RuleBase (fire)-> Agenda(activation(rule-fact))

| (create)

FACT ->assert facts -> working memory (rule-fact)

【drools】

JAVA & RETE算法实现

2001 ,线程蛮力搜索

2.0 , 基于rete算法重写

3.0 , drl文件,特定的dsl专门针对规则编写

5.0 ,drools func, flow rule

格式:drl,dsl,excel,xml

环境:droolsjbpm-tools 安装到eclipse插件

eclipse设置运行时环境drools-runtime

问题域构建

{规则语言}

基础

POJO即fact,规则、业务系统对接的桥梁

fact插入workmemory后,返回FactHandle,是插入workmemory的句柄

imports 需要导入的类

global 比如service、对象等workmemory需要使用的

关键字duration,推迟多长时间之后,启动另一个线程来执行actions

关键字activation-group,多个rule定义为一个group,那么只有一个会被执行

关键字agenda-group,代码中必须显式设置focus,那么这个规则才会被执行

关键字function,在drl中定义动态脚本函数

关键字query,在drl中定义查询函数,通过传参查询,规则校验,返回结果

流程:指定drl,builder编译,打包成package,包来创建会话,fact放进会话,规则匹配,dispose释放

{RETE算法}

RETE拉丁语网络,将规则组织成网络,在内存中进行快速匹配

RETE节点:root节点,所有对象进入网络的入口,objecttyperoot,进入对象类型检查,引擎只接受object类型的对象进入;Alpha节点,用来评估字面条件,条件会被连接到一起;beta节点,左右两个输入,joinnode,notnode

规则树,空间换时间,节省效率

© 著作权归作者所有

共有 人打赏支持
will--wang
粉丝 1
博文 49
码字总数 17511
作品 0
南京
高级程序员
私信 提问
第一个全面开源的Web应用防护系统(WAF)--OpenWAF

OpenWAF 简介 OpenWAF是第一个全面开源的Web应用防护系统(WAF),他基于nginx_lua API分析HTTP请求信息。OpenWAF由行为分析引擎和规则引擎两大功能引擎构成。其中规则引擎主要对单个请求进行...

温柔魔君
2016/11/15
6.1K
6
OpenWAF — 基于 OpenResty 的 Web 应用防护系统

OpenWAF是基于OpenResty的Web应用防护系统(WAF),他基于nginx_lua API分析HTTP请求信息。OpenWAF由行为分析引擎和规则引擎两大功能引擎构成。其中规则引擎主要对单个请求进行分析,行为分析...

王练
2016/11/19
21
0
规则引擎在公安系统中的应用及作用

规则引擎,网上太多的介绍,在这就不啰嗦了,至于规则引擎的应用场景、行业,真的很多,本身是一款基础软件,工具类型,只要规则复杂、计算繁琐,用规则引擎来实现需求,就非常有必要。 今天...

倔强的土豆
06/07
0
0
简单搭建 ELK + OpenWAF 环境

ELK 是比较火的开源日志分析系统 文章主要介绍,ELK 的 docker 部署及与 OpenWAF 的结合 OpenWAF简介 OpenWAF是第一个全方位开源的Web应用防护系统(WAF),他基于nginx_lua API分析HTTP请求...

温柔魔君
2017/07/05
0
0
.Net Core 环境下构建强大且易用的规则引擎

1. 引言 1.1 为什么需要规则引擎 在业务的早期时代,也许使用硬编码或者逻辑判断就可以满足要求。但随着业务的发展,越来越多的问题会暴露出来: 逻辑复杂度带来的编码挑战,需求变更时改变逻...

dotNET跨平台
06/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka+Flink 实现准实时异常检测系统

1.背景介绍 异常检测可以定义为“基于行动者(人或机器)的行为是否正常作出决策”,这项技术可以应用于非常多的行业中,比如金融场景中做交易检测、贷款检测;工业场景中做生产线预警;安防...

架构师springboot
41分钟前
6
0
DecimalFormat 类基本使用

/* * DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度 * 0 表示如果位数不足则以 0 填充 * # 表示只要有可能就把数字拉上这个位置 * */ public static void main(String[] args){...

嘴角轻扬30
58分钟前
4
0
This APT has Super Cow Powers.

在Debian/Ubuntu上,apt包管理器内嵌着一个彩蛋. 如果你在命令行界面输入 apt help 在最后一行能找到This APT has Super Cow Powers. 说明该apt具有超级牛力 牛力是个什么梗? 则说明你的系统...

taadis
今天
3
0
起薪2万的爬虫工程师,Python需要学到什么程度才可以就业?

爬虫工程师的的薪资为20K起,当然,因为大数据,薪资也将一路上扬。那么,Python需要学到什么程度呢?今天我们来看看3位前辈的回答。 1、前段时间快要毕业,而我又不想找自己的老本行Java开发...

糖宝lsh
今天
10
0
携手开发者共建云生态 首届腾讯云+社区开发者大会在京举办

本文由云+社区发表 北京时间12月15日,由腾讯云主办,极客邦科技、微信、腾讯TEG协办的首届腾讯云+社区开发者大会在北京朝阳悠唐皇冠假日酒店举办。在会上,腾讯云发布了重磅产品开发者平台以...

腾讯云加社区
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部