1. 适用场景调研
需要满足条件
(1)拥有灵活的配置页面,方便运营自助配置
(2)可插件式集成大数据数据决策:关键点,插件式,大数据
(3)业务无关,开源
2. 调研
(1)市场上通用的规则引擎:drools,urule等,Siddhi,Esper, RuleEngine,Easy Rules
(2)开源社区中获取:开源中国,github:aswan,RuleEngine,
(3)各大厂解决方案调研,表达式引擎类:qlexpress,aviator, groovy
(4)自研可行性分析:大数据生态调研
3. 使用场景测试
(1)
(2)
(3)qlexpress
aviator
表达式的求值上,java的选择非常多,强大的如Groovy、JRuby,N年没维护的beanshell,包括javaeye上朋友的IKExpression。为什么还需要Aviator?或者说Aviator的特点是什么?
我将Aviator定位在Groovy这样全功能的脚本和IKExpression这样的简易的表达式求值之间的东西,如果你不希望带上Groovy那么庞大的jar却只用上一点点的功能,如果你希望功能和性能上比IKExpression好那么一些,那么也许你可以考虑Aviator。
Aviator的设计思路跟利用GroovyObject的求值是一样,通过编译并动态生成字节码的方式将表达式编译成一个类,然后反射执行这个类,因此会在效率上比纯解释执行的IKExpression好一些。
4. 实现