最近调研了三家公司的规则引擎产品,各有利弊,具体情况如下:
1. URule Pro
配置本地环境:
Web端测试样例:
产品特点:
编程语言 | Java语言 |
是否有Python接口 | 否 |
核心算法 | 3.0及之前的版本 Rete算法 4.0之后版本 模式匹配算法(rete升级版) |
支持的数据库 | 包括但不限于Oracle |
规则操作 | 普通决策表、交叉决策表、决策树、决策流 |
操作环境 | 只有浏览器版 |
运行效率 | 16核+32G内存(普通)-> 2000tps 可参考 |
优点:
- 规则定义较灵活
- 支持用Docker部署、私有云部署、热部署
- 支持科学计算
- 支持规则间的继承关系
- 可设置规则执行的优先级
- 支持高并发(多业务同时调用该规则引擎),具体性能需要测试
缺点:
(1)操作繁琐,比如:库文件需要频繁导入,变量不能复制,上移属性时每次只能移一位。
(2)优先级只在一个规则文件中写多条规则时有用;如果要决定多个规则文件的执行顺序,需要用决策流,但是决策流很难用。
(3)不支持HTTP接口交互和代码生成,只能通过Web端操作
2. Visual Rules Solution(VRS)
试用产品:
产品特点:
编程语言 | Java语言(支持Java 8.0及以上版本) |
是否有Python接口 | 是 |
核心算法 | 不涉及算法,根据语言逻辑直接生成代码执行 |
支持的数据库 | 包含但不限于Oracle、MongoDB、Redis |
规则操作 | 关联决策表、交叉决策表、多维决策表、决策树、决策池、流程图、评分卡、表达式规则、表达式表格 |
操作环境 | 有单机版和网页版,单机版开发效率更高 |
优点:
(1)计算表格对象(多个集合遍历匹配时效率高)
(2)可调用外界的函数
缺点:
(1)规则定义的方式不灵活
(2)此产品不能检测规则间是否存在矛盾
3. ILOG ODM
产品特点:
编程语言 | Java语言 |
是否有Python接口 | 有 |
核心算法 | Rete算法/顺序执行 |
支持的数据库 | 包括但不限于Oracle |
规则操作 | 决策表、规则流 |
操作环境 | Eclipse+插件/ Web端 |
运行效率 | ms级 |
调用方式 | Restful Api/Soap Api/Java Api |
优点:
(1)使用的算法可以选择Rete算法、顺序执行(通过规则流体现)、快速路径(Rete算法的变种,执行效率更高)
(2)规则追踪(可以查某个规则的输入,执行结果)
(3)不同规则文件设置优先级,即可按照优先级的顺序执行(实际使用时,更推荐使用规则流的形式)
(4)决策表中录入重复数据时会有错误提示信息
(5)编译的接口和部署的接口都是开放的
(6)支持容器化部署
缺点:
(1)当两条业务规则有冲突时,系统检测不出来。如果两条规则输入相同,输出不同,系统会以最后一条为准。
以上的调研结果供大家参考~
感谢友友们的点赞和关注!!希望我写的内容可以帮助到您~