drools动态配置规则_关于规则引擎

e02e736485cb56a83163365283831b44.png

很早之前就知道Drools,这几天正好有个项目,里面用了大量的规则定义,就想是否能采用Drools来解决。

在github上分析了规则引擎项目,包括:

Easy-rules

https://github.com/j-easy/easy-rules

通过程序代码来完成规则引擎,没有外部配置。从例子来看,都还比较简单。

https://github.com/Hale-Lee/RuleEngine

最好使用的规则引擎之一,可以直接使用SQL语句定义规则,简化了编码的负荷,也可以使用XML, drl文件配置规则,还支持drools文件导入。

RuleBook

https://github.com/rulebook-rules/rulebook

100% Java, Lambda Enabled, Lightweight Rules Engine with a Simple and Intuitive DSL,和spring有很好的集成。

这些引擎的基本思路都是按Martin Fowler的文章"Should I use a Rules Engine?"的指导来开发。和Drools比较起来,这几个项目都简单不少。

从某种意义上来说,程序即使规则的组合。使用规则引擎,基本的出发点是解决业务规则的多多变性问题,如果在进一步考虑规则的可配置型,并且是界面友好的可配置,这样的系统就比较复杂了,可以参考美团的实践,

从0到1:构建强大且易用的规则引擎​mp.weixin.qq.com
aec5ed0726a34944feb07d80e553948a.png

其实还有一种更加灵活的变通解决方案,就是利用Java的Script引擎来直接执行JavaScript脚本,将输入和输入都定义成一个Map<String ,Object>,规则判断都可以通过JavaScript来编写

这种方式虽然更加灵活,但并不能解决规则本身的复用性问题。但在实际应用中,规则都是和具体流程绑定,规则本身的复用性价值有多大呢?

基于JavaScrip的引擎可以参考以下两个项目:

json-rules-engine

https://github.com/CacheControl/json-rules-engine

A rules engine expressed in JSON

Node-rules

https://github.com/mithunsatheesh/node-rules

Node-rules is a light weight forward chaining rule engine written in JavaScript.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux安装mysql5.6

目录 准备工作 运行环境 确认你的安装版本 下载MySQL 安装MySQL 准备安装环境 编译和安装 配置MySQL 单实例配置 单实例配置方法 添加防火墙 启动MySQL 重启MySQL 多实例配置 什么是多实例 多实例配置方法 创建启动文件 初始化数据库 配置防火墙 启动MySQL 登陆MySQL 重启MySQL…

Spring 4 MVC入门实例

Spring 4发布很长一段时间了&#xff0c;从 Spring 3 到 Spring 4 有巨大的改变。网上还有很多教程是基于 Spring 3.0 的&#xff0c;甚至 Spring 2.5&#xff0c;要想按照网上的教程“按图索骥”还是挺困难的。纵有一些 Spring 4.0 MVC 的教程例子&#xff0c;也往往是 “Spri…

python写入二进制文件的库_python之写入二进制文件

概述 计算机都是以二进制存储文件的&#xff0c;如mp3、图片等&#xff0c;文本文件也是如此&#xff0c;在本节中以二进制模式写入文件 写文件的很多操作&#xff0c;与读文件的操作是相同的&#xff0c;建议先看 读取二进制文件 打开文件 读写文件&#xff0c;要先通过内置op…

Excel文件打不开别担心,看完这些提示或许能让其起死回生

使用Excel电子表格时,大多数人有时要么时间紧迫,要么有最后期限。如果在那个时候,Microsoft Excel如果不打开,那可能是一场噩梦。 不幸的是,当Excel拒绝打开你的一个重要Excel文件,或者无法完全打开Excel应用程序时,这种意外行为非常常见。 所以,如果你遇到“Microso…

gulp插件gulp-ruby-sass和livereload插件

gulp-ruby-sass是gulp的一个插件&#xff0c;主要是用来实现sass编译&#xff0c;livereload插件主要是实现文件保存时浏览器自动刷新&#xff0c;避免了手动f5的频繁的操作 准备工作&#xff1a;chrome浏览器安装livereload插件&#xff0c;没有安装的可以百度搜索或者FQ下载&…

eclipse 创建 maven web 项目教程

&#xff08;1&#xff09;新建一个Maven 项目 file –> new –> maven project 直接点 next 直接点 next 填写groupid和artifactid&#xff0c;这两个可以随便填&#xff0c;名称而已。填完 finish &#xff08;2&#xff09;将项目转成 Dynamic Web项目 选中项目&#…

sql backup database备份d盘_ClickHouse 备份与恢复

本文转载自 万能修实验室 作者&#xff1a;公先生 ID: dropudatabase我们评估一款数据库产品&#xff0c;除了稳定性和易用性外&#xff0c;数据安全也十分重要&#xff0c;备份与恢复往往是最后一道安全门。但如果备份策略不完善、恢复手段无效&#xff0c;一旦发生数据误删除…

ASP.NET MVC Global.cs - 应用程序事件

一、Application_End Application_End:网站关闭,或重启时,会触发该方法 二、Application_Start 第一个访问网站的用户会触发该方法. 通常会在该方法里定义一些系统变量,如聊天室的在线总人数统计,历史访问人数统计的初始化等等均可在这里定义 三、Session_Start 每个用户访问网…

i = i++ 之后 i 的值为什么是 0

运行 ii 之后&#xff0c;i的值是多少&#xff1f;代码如下&#xff1a; public class A{public static void main(String[] args){int i0;ii;System.out.println(i);}} 答案是&#xff1a;打印出 0 为什么呢&#xff1f;是因为java虚拟机中有局部变量区和操作数栈之分。iin…

线程启动语句的顺序是否决定线程的执行次序。_详细分析 Java 中启动线程的正确和错误方式

start 方法和 run 方法的比较代码演示:/** * * start() 和 run() 的比较 * * * author 踏雪彡寻梅 * version 1.0 * date 2020/9/20 - 16:15 * since JDK1.8 */public class StartAndRunMethod { public static void main(String[] args) { // run 方法演示 // 输出: name: mai…

save(),saveOrUpdate(),merge()的区别

save(),saveOrUpdate(),merge()的区别 Save save()方法能够保存实体到数据库&#xff0c;正如方法名称save这个单词所表明的意思。我们能够在事务之外调用这个方法&#xff0c;这也是我不喜欢使用这个方法保存数据的原因。假如两个实体之间有关系&#xff08;例如employee表和a…

microsoft office 卸载不了

microsoft office &#xff08;包括常用的office组件&#xff0c;project&#xff0c;visio&#xff09;等的卸载不是件轻松事&#xff0c;有可能卸载不了&#xff0c;右不会有任何提示&#xff0c;微软也知道自己的东西不好卸载&#xff0c;于是 提供的fix工具。 office 2010…

webgl 游戏_如何选择 WebGL 框架和引擎?

数据可视化Sugar-百度智能云​cloud.baidu.comSugar 是我们从零开始开发的 BI 产品&#xff0c;可以不用写 SQL 制作报表及大屏页面&#xff0c;上半年我们发布了三维场景功能&#xff0c;可以放到大屏中展现&#xff1a;为了实现这个功能&#xff0c;我们调研了大量 WebGL 相关…

Null hypothesis TypeⅠerror Type Ⅱ error

Null hypothesis usually express the phenomenon of no effect or no difference.TypeⅠerror is the incorrect rejection of a true null hypothesis. That is, no difference is taken as difference.Type Ⅱ error is incorrectly retaining a false null hypothesis. Th…

Spring 4 MVC 单元测试例子

首先&#xff0c;要有一个Spring MVC项目&#xff0c;不会的话&#xff0c;点这里看教程。 加入 maven 依赖&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></depend…

java 正则表达式 替换字符串img标签的路径_正则表达式和有限自动机的应用

1. 为什么谈有限自动机时要谈正则表达式&#xff1f;原因是&#xff1a;正则表达式所匹配的所有字符串所构成的语言可以用有限自动机识别。根本原因是&#xff1a;正则集&#xff08;正则表达式所匹配的所有字符串集合&#xff09;是由右线性文法&#xff08;3型文法&#xff0…

Tomcat应用中post方式传参数长度限制

Tomcat应用中post方式传参数长度限制 jsp页面上是没有限制的&#xff0c;但是在tomcat服务器上有限制&#xff0c;Tomcat 默认的post参数的最大大小为2M&#xff0c; 当超过时将会出错&#xff0c;可以配置maxPostSize参数来改变大小。 <Connector port"8080" red…

14.6 Spring MVC 测试框架(翻译)

14.6 Spring MVC 测试框架&#xff08;每天翻译一点点&#xff09; Spring MVC测试框架对 Spring MVC 代码提供一流的测试支持 &#xff0c;它拥有一个 fluent API ,可以和JUnit, TestNG 或其它任何测试框架协同使用。 此测试框架基于 spring-test 模块的Servlet API mock obje…

html读取本地txt_手机本地电子书籍阅读器 — 静读天下

在早期山寨按键手机流行的年代手机中必装两款软件莫过于Anyview和Opera浏览器了&#xff0c;一个是本地最佳阅读工具另一个是压缩流量访问网页的利器&#xff0c;时过境迁好多人都早以忘记了这些昔日的王者。曾经那帮挑灯夜读看小说的熊孩子都已经长大了&#xff0c;在难得的休…

华为手机丢失定位网站_手机端网站优化要从网站的设计和定位开始入手

移动端网站优化要从网站的设计和定位开始入手&#xff0c;重要的是简洁易用&#xff0c;切忌复杂&#xff0c;令用户搞不明白找不到想用的。对于搜索引擎而言&#xff0c;好的用户访问体验也是排名的最佳标准。下面小编就来分析一下设计对手机端网站优化排名的影响。1、使用规范…