初识规则引擎

初识前端模板引擎jade 1.什么是模板引擎?(我的理解)模板引擎:为了使用户界面与业务数据(内容)分离而产生的,根据特定的规则生成特定文档,各个领域都可以有自己的模板引擎。 web模板引擎:最终生成的文档是HTML类型。 而这种规则有五花八门,各种各样的规则就是不同的模板引擎。 本文主要讲jade2.jade的安装(windows)jade是基于nodeJs的,所以首先要安装运行环境 nodeJs,包管理工具npm 阅读详情

一、什么是规则引擎

规则引擎是一种嵌入应用中的组件,通过将业务流程与业务规则分离开来实现商业灵活性,也就是降低了各个模块的耦合度,这样无需太多的复杂性就能处理业务逻辑的调整和更改。(说简单点就是if-then语句)

二、什么情况下需要规则引擎

a.业务逻辑代码中包含了很多if-else语句
b.代码变化会导致大量财政损失

三、规则引擎的结构

  • 规则引擎是用于外部程序来调用规则包的一批Java类库,将规则引擎嵌入到应用程序中就和添加Java类一样。通过RuleEngine类调用规则包来传递需要处理的业务数据。规则包配置完成后会生成一个集成Rulecontext的类,并且将这个类自动编译发布到java的class path中。外部程序通过RuleEngine接口,根据需要调用规则包,加载对应的RuleContext类。
  • Web方式调用规则包原理:在规则配置器中添加一个web方式调用规则包的测试页面,这个页面采用jsp程序,根据规则包的接口数据结构自动生成文本输入框。同时根据数据结构的类型自动生成解析request中提交的数据,并且传递到规则引擎中,并且执行对应的规则包,最后取出返回结果显示在页面当中。
    这里写图片描述

四、规则引擎的工作流程

1.将事件加入到工作内存中
2.将工作内存中的时间和规则库中的规则进行匹配
3.将发生冲突的规则放入冲突集合中
4.按照冲突消解策略,把需要执行的规则按照顺序放入议程
5.执行规则设定的动作
6.重复第2到第5步,直到所有规则都被匹配执行

五、开源drools

1.什么是drools

Drools是一个开源的基于java的规则引擎, 也叫JBoss Rules

2.drools组成模块

Drools Guvnor 基于网页的规则管理系统
Drools Expert 规则引擎
JBPM 流程引擎
Drools Fusion 复杂事件处理

3.Drools属性

Salience:指定规则执行的优先级,数字越大,优先级越高。
Dialect:指定使用语言,java或者mvel(mvel是基于就java的表达式语言,支持属性和方法直接访问),默认为java。
Activation-group:将规则进行分组,同组中只要有一个规则执行了,其他规则都不再执行。
Agenda-group:设置了该属性后,只有手动激活才能执行该规则,按照优先级执行。
Lock-on-active:只能与-group一起使用,可以避免执行过的规则再次被执行。
Auto-focus:设置为true时可以自动获取焦点,默认值为false。
Date-effective:当系统时间大于等于date-effective设置的时间时规则才会触发执行。

4.drools7 API

(Drools7和Drools5使用的是两套完全不同的API)
- Kieservices:Kieservices就是一个中心,通过它来获取各种对象来完成规则构建、管理、执行等操作。
- Kiecontainer:Kiecontainer是一个KieBase的容器,提供了获取KieBase的方法和创建KieSession的方法。(获取KieSession的方法通过KieBase来创建KieSession)
- KieBase:KieBase是一个知识仓库,包含了很多规则、流程、方法等。如果需要执行规则KieBase中的规则,就需要根据KieBase创建KieSession。
- KieSession:KieSession是应用程序和规则引擎进行交互的会话通道,不会建立缓存。
- KieRepository:用于存放KieModule仓库。
- KieProject:初始化KieContainer,构造KieModule并将其存放在KieRepository中,KieContainer可以通过KieProject来查找KieModule定义的信息来构造KieBase和KieSession。
- ClasspathKieproject:实现KieProject接口。

六、规则文件的结构

rule “name”
atrributes
when
LHS
then
RHS
end

七、Rete算法

保存以往匹配过程中产生的所有信息,只将新增加的事实与规则进行匹配,牺牲存储空间来换取时间效率。

Drools规则引擎避坑指南:从入门到放弃?不,是到精通! 本文深度解析Drools规则引擎的实战应用与避坑指南,涵盖从环境配置、规则编写到生产部署的全流程。通过实际案例展示Drools在金融风控、电商促销等场景的核心价值,提供版本兼容性、性能优化等关键问题的解决方案,帮助开发者从入门到精通掌握这一强大的规则引擎技术。 阅读详情

相关推荐

SpringBoot整合QLExpress实战:5分钟实现动态规则引擎配置

本文详细介绍了如何在SpringBoot项目中快速集成阿里巴巴开源的QLExpress动态规则引擎,实现业务逻辑的动态配置与实时生效。通过实战案例,演示了如何将复杂的促销规则从硬编码中解耦,并提供了生产环境下的安全配置与性能优化建议,助力开发者高效应对频繁的业务规则变更。

weixin_29299807的博客 458

Drools7.x 学习四-规则属性

前面我们已经知道了规则体的构成如下: rule "ruleName" attributes when LHS then RHS end 本篇就是针对规则体的attributes属性部分进行讲解。Drools中提供的属性如下表(部分属性): 属性名 说明 salience 指定规则执行优先级 dialect 指定规则使用的语言类型,取值为java和mvel enabled 指定规则是否启用 date-effective 指定

OMars的博客 1068

QT快速配置MSVC2017编译环境(3分钟极简指南)

本文提供了一份3分钟极简指南,帮助开发者快速配置QT的MSVC2017编译环境。通过断网安装、精准勾选组件和配置QT Creator编译器路径等步骤,大幅提升QT开发效率。MSVC2017作为Windows平台高性能C++编译器,特别适合处理大型QT项目,编译速度优势明显。

weixin_30399821的博客 505

drools_03_dialect

关于 dialect 属性 drools 支持两种dialect, 即 java 和 mvel dialect 缺省为 java, 当然我们也推荐统一使用 java dialect, 以降低维护成本. dialect 属性仅用于设定 RHS 部分语法, LHS 部分并不受 dialect 的影响. package 和 rule 都可以指定 dialect 属性. mvel dialect ...

诸葛建站 476

DDS信号发生器设计避坑指南:从AD9834配置到巴特沃斯滤波实战

本文详细解析了基于AD9834芯片的DDS信号发生器设计中的关键技术要点与常见陷阱,涵盖时钟源选择、寄存器配置时序、巴特沃斯滤波器设计等核心内容。针对中高频段信号质量优化,提供了实用的解决方案和代码示例,帮助工程师规避设计误区,提升信号发生器的性能和稳定性。

2y3u4i5o6p的博客 786

AMESim柱塞泵建模全指南:从HCD库搭建到联合仿真

液压系统仿真中,轴向柱塞泵的建模始终是难点与热点。柱塞泵结构紧凑、功率密度高,在工程机械与航空航天领域应用广泛,然而其运动学与流体细节深度耦合,给仿真带来不小挑战。AMESim平台中的HCD库提供了一种从物理结构出发的建模思路,将柱塞泵分解为容积腔、节流口与机械约束等基础单元,从而真实刻画柱塞腔压力波动、配流特性和容积效率等关键行为,摆脱黑盒模型的局限。基于机理建模的仿真结果,可用于泵参数优化、故障特征分析以及控制策略验证。进一步结合AMESim与Simulink联合仿真,可以高效开发变量泵排量控制系统,研

weixin_29159441的博客 290

表达式引擎Mvel详解与实战

表达式引擎Mvel详解与实战

fuliyingIT的博客 6470

基于phpstudy搭建pikachu靶场

一、phpstudy下载安装配置 phpstudy介绍 简单介绍一下phpstudy,详细请参考百度解读。pikachu是基于PHP环境搭建的,需要数据库支持,所以装pikachu之前需要先安装它需要的环境,就像你养鱼需要给它提供水环境一样。安装phpstudy能满足pikachu的需求,所以先安装phpstudy。 phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是

ptxybird的博客 1万+

Drools规则引擎基础教程

前言 曾经接触过一个电信移动通讯项目,每个案件大量的业务逻辑变更,但其实里面的业务改动,其实就是一些业务逻辑变动。 而程序员编写的代码也没有任何技术含量,跟着式样书逐字逐句的翻译就行。大量的if/else判断遍布整个项目,维护难度极大。 而这个drools规则引擎,可以方便的将业务的整体逻辑移出,更加方便程序的可读性。 准备 第一步,随便创建maven项目 第二步,pom的引入 <dependency> <groupId>org.drools&

hikktn的博客 1973

从内参矩阵到归一化平面:揭秘相机成像的标准化核心

本文深入解析了相机成像中的核心概念——归一化平面。通过拆解内参矩阵(包含焦距、主点等参数)的作用,详细阐述了如何将像素坐标转换为与具体相机硬件无关的归一化坐标。这一标准化过程是计算机视觉算法(如多相机系统对齐、视觉SLAM)实现跨设备通用性的关键,能有效提升算法的鲁棒性和泛化能力。

opencv7vision的博客 450

S32K344 Bootloader实战:一个按键实现从Boot到App的无缝跳转(附完整代码)

本文详细介绍了基于NXP S32K344微控制器的Bootloader开发实战,重点解析如何通过一个硬件按键实现从Boot到App的可靠跳转。内容涵盖内存分区规划、中断向量表重映射、外设初始状态管理等核心要素,并提供了完整的代码示例和调试技巧,适用于汽车电子和工业控制等高可靠性应用场景。

weixin_29192365的博客 309

Drools规则属性

enabled属性对应的取值为true和false,默认值为true。用于指定当前规则是否启用,如果设置的值为false则当前规则无论是否匹配成功都不会触发。//指定当前规则不可用,当前规则无论是否匹配成功都不会执行whenthenSystem.out.println("规则rule_comparison_notMemberOf触发");end。

vip_member888的博客 1367

装上大模型翅膀,程序员入职新公司如何快速上手代码(老员工如何选择大模型编程如虎添翼)

入职新公司,尤其是行业知识不懂的,面对前人堆积的屎山代码,各种文档又缺少的,有些技术自己又不懂的,如何快速上手代码,特别是借助AI大模型事半功倍的上手项目代码。进入新公司,我做的第一件事就是收集情报。我主动向同事们索要项目的相关资料,包括项目介绍文档、功能说明文档和业务流程图等。通过仔细阅读这些资料,可以对项目的背景和架构有了初步的了解。同时要逮住机会就向同事们请教项目的迭代历程和技术选型背后的考量。有时他们三言二语,可以为自己节省很多探索时间。在了解了项目的基本情况后,可以开始深入探究项目的业务流程。

大模型大数据攻城狮的专栏 1133

规则引擎系列—初识规则引擎

什么是规则引擎 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。这是来自百度百科的解释。 本质上规则引擎,是为了解决复杂业务规则决策,将复杂多变的业务规则,从代码内提炼出来,抽象为dsl语言或者可视化界面配置,用户角色:运营/产品/开发,可以动态调整d...

阿健小站 1873

华为OD机试2025A卷 - BOSS的收入(Java & Python& JS & C++ & C )

华为OD机试2025A卷 - BOSS的收入(Jav一个XX产品行销总公司,只有一个boss,其有若干一级分销,一级分销又有若干二级分销,每个分销只有唯一的上级分销。规定,每个月,下级分销需要将自己的总收入(自己的+下级上交的)每满100元上交15元给自己的上级。现给出一组分销的关系,和每个分销的收入,请找出boss并计算出这个boss的收入。输入:分销关系和收入:[[分销id 上级分销id 收入], [分销id 上级分销id 收入], [分销id 上级分销id 收入]]输出:[boss的ID, 总收入]

算法大师! 1173

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【三十四】springboot+easyRule初识规则引擎

针对如上需求,是不是就可以通过写if-if判断来处理,但是如果规则变化呢,老板想只要迟到1次就扣1000,或者只要加班就100块钱一个小时呢,是不是只有改代码升级。本章针对这个问题,通过规则引擎实现这个场景,实现规则配置化。

weixin_56995925的博客 1418

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

第52节:初识搜素引擎_上机动手实战如何定制搜索结果的排序规则

课程大纲 1、默认排序规则 默认情况下,是按照_score降序排序的 然而,某些情况下,可能没有有用的_score,比如说filter GET /_search { "query" : { "bool" : { "filter" : { "term" : { ...

qq_35524586的博客 168

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ElasticSearch41:初识搜索引擎_上机动手实战如何定制搜索结果的排序规则

1.默认排序规则 默认情况下,是按照_score降序排序的,然后在某些情况下,如filter,不计算_score,所以没有可用的_score 例子: GET /test_index/test_type/_search {   "query": {     "bool": {       "filter": {         "term": {           "test

一枚程序员的博客 293

Elasticsearch学习笔记-第52节:初识搜素引擎_上机动手实战如何定制搜索结果的排序规则

课程大纲 1、默认排序规则 默认情况下,是按照_score降序排序的 然而,某些情况下,可能没有有用的_score,比如说filter GET /_search { "query" : { "bool" : { "filter" : { "term" : { "autho...

zongx的博客 126

《跨境电商——速卖通搜索排名规则解析与SEO技术》一一1.1 初识速卖通的搜索引擎...

本节书摘来自异步社区出版社《跨境电商——速卖通搜索排名规则解析与SEO技术》一书中的第1章,第1.1节,作者: 冯晓宁,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.1 初识速卖通的搜索引擎 1.1.1 初识速卖通搜索 作为速卖通卖家都应该知道,速卖通经常被视为“国际版的淘宝”。那么请想一下,普通消费者在淘宝网上购买商品的时候,他的行为应该...

weixin_33785972的博客 1037

drools7规则引擎

Drools规则引擎 场景 风控反洗钱系统 商品折扣系统 积分系统 概述 把复杂冗余的业务规则与系统分离开来,做到架构的可复用、可移植性。 Drools5与Drools7版本变更 Drools是业务规则管理系统(BRMS)解决方案,设计一下项目: Drools Workbench:业务规则管理系统 Drools Expert:业务规则引擎 Drools Fusion:事件处理 jBPM:工作流引擎 OptalPlanner:规则引擎 Drools组成部分 Drools规则 Drools规则的解

jiangjun_3567031的博客 1261

半小时搞定,规则引擎Drools 集成 springboot 热加载

前言: 如果对drools还不是特别熟悉的,可以看下 《规则引擎Drools 之 初识drools》这篇文章; 本文源码,github 传送门:https://github.com/vincent9309/drools: 一、项目搭建流程 二、项目目录结构 三、springboot集成drools 1.pom文件引入依赖 <dependency&...

vincent 1万+

视频教程-Drools7规则引擎入门教程-Java

Drools7规则引擎入门教程 本人曾长期从事第三方支付行业,先后在多家三方...

weixin_29967571的博客 626

规则引擎选型避坑指南:从Drools到LiteFlow,我们为什么最终选择了它?

本文分享了从Drools到LiteFlow的规则引擎选型经验。最初选择Drools因其强大的RETE算法和复杂规则处理能力,但在大促压测时遭遇性能崩溃(2500QPS下CPU飙升至97%)和内存泄漏问题。随后尝试QLExpress又面临安全性和性能挑战。最终采用LiteFlow的流程编排理念,通过组件化设计实现性能提升(复杂场景下性能是Drools的5倍)和更好的可观测性。文章总结了三种引擎的适用场景:Drools适合规则稳定的复杂业务,QLExpress适合需要灵活配置的场景,而LiteFlow则擅长高并

safestar2012的博客 1276

初识推荐机制、推荐引擎

随着互联网的发展 估计大多数的产品都会遇到推荐机制的策划,作为互联网产品人员也需要研究一下推荐机制的核心算法,这篇文章是我看到的言简意赅讲了一些基础的推荐机制的文章,转过来分享给大家 信息发现 如今已经进入了一个数据爆炸的时代,随着 Web 2.0 的发展, Web 已经变成数据分享的平台,那么,如何让人们在海量的数据中想要找到他们需要的信息将变得越来越难。 在这样的情形下,搜索引擎(...

wp21456的博客 294
上一篇: css基础
下一篇: vue.js基础
sssammmm
博客等级 码龄9年 369粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值