一、背景
前段时间,在做项目重构的时候,遇到很多地方需要做很多的条件判断。当然可以用很多的if-else判断去解决,但是当时也不清楚怎么回事,就想玩点别的。于是乎,就去调研了规则引擎。
当然,市面上有很多成熟的规则引擎,功能很多,性能很好。但是,就是想玩点不一样的(大家做技术选型别这样,这个是反面教材)。最终一款URule的规则引擎吸引了我,主要还是采用浏览器可直接配置,不需要过多安装,可视化规则也做的不错。经过一系列调研,后面就把它接入了项目中,顺便记录下调研的结果。
二、介绍
规则引擎其实是一种组件,它可以嵌入到程序当中。将程序复杂的判断规则从业务代码中剥离出来,使得程序只需要关心自己的业务,而不需要去进行复杂的逻辑判断;简单的理解是规则接受一组输入的数据,通过预定好的规则配置,再输出一组结果。
当然,市面上有很多成熟的规则引擎,如:Drools、Aviator、EasyRules等等。但是URule,它可以运行在Windows、Linux、Unix等各种类型的操作系统之上,采用纯浏览器的编辑模式,不需要安装工具,直接在浏览器上编辑规则和测试规则。
当然这款规则引擎有开源和pro版本的区别,至于pro版是啥,懂的都懂,下面放个表格,了解下具体的区别
| 特性 | PRO版 | 开源版 |
|---|---|---|
| 向导式决策集 | 有 | 有 |
| 脚本式决策集 | 有 | 有 |
| 决策树 | 有 | 有 |
| 决策流 | 有 | 有 |
| 决策表 | 有 | 有 |
| 交叉决策表 | 有 | 无 |
| 复杂评分卡 | 有 | 无 |
| 文件名、项目名重构 | 有 | 无 |
| 参数名、变量常量名重构 | 有 | 无 |
| Excel决策表导入 | 有 | 无 |
| 规则集模版保存与加载 | 有 | 无 |
| 中文项目名和文件名支持 | 有 | 无 |
| 服务器推送知识包到客户端功能的支持 | 有 | 无 |
| 知识包优化与压缩的支持 | 有 | 无 |
| 客户端服务器模式下大知识包的推拉支持 | 有 | 无 |
| 规则集中执行组的支持 | 有 | 无 |
| 规则流中所有节点向导式条件与动作配置的支持 | 有 | 无 |
| 循环规则多循环单元支持 | 有 | 无 |
| 循环规则中无条件执行的支持 | 有 | 无 |
| 导入项目自动重命名功能 | 有 | 无 |
| 规则树构建优化 | 有 | 无 |
| 对象查找索引支持 | 有 | 无 |
| 规则树中短路计算的支持 | 有 | 无 |
| 规则条件冗余计算缓存支持 | 有 | 无 |
| 基于方案的批量场景测试功能 | 有 | 无 |
| 知识包调用监控 | 有 | 无 |
| 更为完善的文件读写权限控制 | 有 | 无 |
| 知识包版本控制 | 有 | 无 |
| SpringBean及Java类的热部署 | 有 | 无 |
| 技术支持 | 有 | 无 |
三、安装使用
实际使用时,有四种使用URule Pro的方式,分别是嵌入式模式、本地模式、分布式计算模式以及独立服务模式。
但是我们这里不考虑URule Pro,咱自己整个开源版,在开源版集成springboot的基础上做一个二次开发,搜了一圈,其实就有解决方案。大致的项目模块如下:

文章介绍了在项目重构中使用URule规则引擎的原因和过程,包括URule的特点,如浏览器配置、可视化规则等。文章详细讲解了URule的基础概念,如库文件(变量库、常量库、参数库、动作库)、规则集和决策表的配置,并提供了集成到SpringBoot项目的示例。此外,文章还提到了URule在用户晋升规则场景中的应用。
最低0.47元/天 解锁文章
5471





