关于规则引擎的选型和疑惑思考

简介:

这是一个一些业务开发人员或者架构设计人员经常遇到的困惑:

1、给我推荐一个最简单、易用的规则引擎

1、运营人员觉得之前做的规则引擎不好用,是否可以做一个适合我们使用的规则引擎?不用看懂代码,直接界面表单提交操作。

2、我们的操作者是运营人员,大部分无技术背景,人员还有流动性,所以选型倾向选择可视化易编辑易理解的开源规则引擎。

能否推荐下选型,并说明优缺点

我的观点:

  • 1、你要的可视化易编辑易理解的开源规则引擎是不存在的。

通用的规则引擎只是把原来的java代码转化成了脚本来动态解析执行而已。本质上还是需要写代码,比如要写drools的表达式,如果你的运营人员不懂,并且培训无效那就没有办法了。

  • 2、但是基于规则引擎的业务系统可以做到配置人员无需了解代码。

这个过程首先需要开发人员总结、提炼出目前的N个业务类型,然后针对每个业务类型开发出运营人员需要配置的web界面。
这样当运营提交表单的时候,就可以通过后台程序自动拼装出脚本引擎可以解读的代码了。

  • 综上,如果只追求无需硬编码,并且配置人员懂得简单编码可以使用通用的规则引擎;如果还要追求配置界面的可读性,配置人员无需了解代码,开发人员就必须往前走一步,做每个业务类型的配置界面,然后再做一个界面到规则DSL语句的转化功能。

附录:一些半通用的规则配置截图:(取材自微信讨论群)

image

image

相关文章
|
Java
规则引擎选型及应用
规则引擎具体执行可以分为接受数据输入,解释业务规则,根据业务规则做出业务决策几个过程。 使用规则引擎可以把复杂、冗余的业务规则同整个支撑系统分离开,做到架构的可复用移植。
24472 0
|
运维 JavaScript Java
govaluate 规则引擎
govaluate 规则引擎
3074 0
govaluate 规则引擎
|
新零售 Java C++
java脚本引擎的设计原理浅析
本人在阿里巴巴长期担任和负责规则引擎、流程引擎相关的技术开发,另外还负责开发和维护开源项目:https://github.com/alibaba/QLExpress QLExpress是一个脚本引擎工具,类似Groovy,JRuby等,是为了解决当时电商规则动态编译、表达式高精度计算、复杂布尔运算、自定义函数和操作符号、语法树生成等需求而设计的。
16677 0
|
存储 数据采集 安全
各种系统架构图与详细说明
原文:各种系统架构图与详细说明 共享平台逻辑架构设计 如上图所示为本次共享资源平台逻辑架构图,上图整体展现说明包括以下几个方面: 1 应用系统建设 本次项目的一项重点就是实现原有应用系统的全面升级以及新的应用系统的开发,从而建立行业的全面的应用系统架构群。
26880 1
|
算法 Java JavaScript
规则引擎
我是阿里巴巴做规则引擎相关工作多年的java工程师一枚,本职工作就是通过规则引擎、规则管理平台等技术输出,来应对阿里巴巴复杂多变的上层规则相关业务的支持。限于技术保密、安全等因素,本文只讲一些个人对“规则引擎”的看法,欢迎大家一起探讨。
26757 1
|
Java API
QLExpress功能清单
QLExpress从一开始就是从复杂的阿里电商业务系统出发,并且不断完善的脚本语言解析引擎框架,在不追求java语法的完整性的前提下(比如异常处理,foreach循环,lambda表达式,这些都是groovy是强项),定制了很多普遍存在的业务需求解决方案(比如变量解析,spring打通,函数封装,操作符定制,宏替换),同时在高性能、高并发、线程安全等方面也下足了功夫,久经考验。
21797 1
|
存储 Java 应用服务中间件
Java规则引擎Drools急速入门
Java规则引擎Drools急速入门
Java规则引擎Drools急速入门
|
druid Java 数据库连接
SringBoot整合Druid+Mybatisplus实现多数据源
SringBoot整合Druid+Mybatisplus实现多数据源
SringBoot整合Druid+Mybatisplus实现多数据源
|
XML Java 数据库连接
解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题
解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题
14420 2
解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题
QLExpress的基本语法
1、操作符和java对象操作 普通java语法 //支持 +,-,*,/,<,>,<=,>=,==,!=,<>【等同于!=】,%,mod【取模等同于%】,++,--,&&,|| //in【类似sql】,like【类似sql】,&&,||,!,等操作符 //and、or 和java里面的&& || .
27397 0