很早之前就知道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

其实还有一种更加灵活的变通解决方案,就是利用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.

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

  1. drools动态配置规则_基于 Flink 和 Drools 的实时日志处理

    背景 日志系统接入的日志种类多.格式复杂多样,主流的有以下几种日志: filebeat采集到的文本日志,格式多样 winbeat采集到的操作系统日志 设备上报到logstash的syslog日志 接入 ...

  2. drools动态配置规则_微服务实战系列(八)-网关springcloud gateway自定义规则

    1. 场景描述 先说明下项目中使用的网关是:springcloud gateway, 因需要给各个网关服务系统提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现:动态加载自定义路 ...

  3. 金蝶k3单据编码规则_编码规则

    1.名称: 设置编码规则名称 2.描述: 设置编码规则描述 3.允许修改: 支持手工输入编号 4.默认规则: 设置默认的一套规则 5.支持补号: 运行时支持手动补号,勾选后[允许修改]复选框字动勾选, ...

  4. java 密码规则_密码规则(正则表达式)

    java //包含大写字母.小写字母.特殊符号.数字中的任意三项 String pw_pattern = "^(?![A-Za-z]+$)(?![A-Z0-9]+$)(?![a-z0-9]+ ...

  5. python汉字排序规则_根据规则对python中的列表进行排序

    返回每个项目的元组: sorted(yourlist, key=lambda x: (not x.startswith('pt='), x)) 这将首先对以pt =开头的任何值进行排序(如False在 ...

  6. drools规则引擎动态配置规则

    先说下我的业务需求背景,最近公司要推出运营活动,根据用户行为送用户积分:比如用户注册送.首次消费送,非首次消费送.累积消费送.针对我们这个的特殊要求是跟具体规则绑定:比如说 规则1 用户累积消费首次达 ...

  7. drools规则引擎技术指南_物联网规则引擎技术

    物联网应用程序设计与典型的IT解决方案大不相同,因为它将物理操作技术(OT)与传感器.致动器和通信设备连接起来,并将数字信息技术(IT)与数据.分析和工作流连接起来. 在企业环境中,物联网非常复杂,这 ...

  8. Drools动态规则

    动态规则,是做规则引擎最想知道的问题,小编也加过一些群,大部分的人都喜欢问这样的问题. 规则只能写在文件里嘛 规则引擎能做什么 规则可动态配置嘛 在项目中使用规则引擎,业务人员怎么用呢? 规则变化了怎 ...

  9. el-form 动态校验规则_动态多线程敏感信息泄露检测工具

    weakfilescan 基于爬虫,动态收集扫描目标相关信息后进行二次整理形成字典规则,利用动态规则的多线程敏感信息泄露检测工具,支持多种个性化定制选项 包括: 规则字典多样化定义(支持正则.整数.字 ...

最新文章

  1. try finally 中的return
  2. 纠结的STM32 RTC时钟源LSE
  3. 基于mcat开发智能合约应用(二)调用合约
  4. 【deep learning学习笔记】注释yusugomori的LR代码 --- LogisticRegression.cpp
  5. 2019.02.09 bzoj4455: [Zjoi2016]小星星(容斥原理+dp)
  6. IntelliJ IDEA 对于generated source的处理
  7. JavaScript-操作DOM对象-更新dom节点
  8. Spring Boot 页面国际化
  9. 为什么iPhone 11在中国市场需求较美国强劲?真相扎心...
  10. html对话框跳转页面,html5各种页面切换效果和模态对话框用法总结
  11. TDS、NET-Library和网络协议
  12. 浙江省考三级专业目录计算机类是,你的专业属于哪类?浙江省考报名必备专业分类表!...
  13. 基于无线发射接收物体远离报警器的设计
  14. PQ分区出错用Ghost来进行补救
  15. log日志中不打印异常栈的具体信息
  16. 陈强教授《机器学习及R应用》课程 第九章作业
  17. SpringSecurity 使用
  18. python迭代法求极值_用Python实现最速下降法求极值的方法
  19. 查看进程名称 linux,在Linux系统服务器按名称查找进程的命令
  20. 华为交换机常见的ACL操作

热门文章

  1. nuxt route 全局管理 route.beforeEach 替代
  2. HBase shell命令行
  3. mysql约束教程,MySQL 约束
  4. 1024电商项目的邮箱验证码与图形验证码功能模块
  5. 文件读写的“二进制模式”和“文本模式”
  6. 第8章 硬盘和显卡的访问与控制
  7. win10安装mudbox失败,怎么强力卸载删除注册表并重新安装
  8. Linux命令应用大词典-第25章 备份与还原
  9. python之os、sys和random模块
  10. WdatePicker显示乱码