积分系统是2c服务很重要的一部分,想运营好一个类似商城之类的网站,不断的调整积分活动可以增加用户的粘度。但是对于开发人员来说就比较痛苦了,积分规则复杂还好说,最麻烦是变化太频繁。
前言
比较常见的解决方式是使用规则引擎,很多很多年前用过 ILOG ,印象是比较重的一个软件,功能强大可以让业务人员来定义规则,但是用来对付积分系统,特别是笔者的项目不是一个真正的复杂的商城,应该用不上这么高射炮打蚊子。
再查了一下现在比较通用的 Java 规则引擎 Drools ,感觉还是比较复杂,需要学习和定义特定语法的规则文件,类似如下图:
image.png
我们的系统上线后,运营过程中不断的有积分规则变化的需求,我们不能不断的把 Java 项目重新编译发布生产环境。理想情况是把不断变化的规则定义和逻辑用自然语言的配置文件来描述,这样业务人员就可以去改了。
这个比较难,简化一点,不用自然语言配置文本,改用脚本语言 JavaScript 来描述,虽然不能完全由业务人员来改规则,但是可以由一般的开发人员来改,毕竟JavaScript简单而且会的人不要太多。另外就是改完规则,测试完直接就发布,不需要编译和重新发布。
补充一句,在 Java 中调用 JavaScript 以及在 JavaScript 里调用 Java 非常简单和方便。
设计
这样大概方案就是规则定义用 js 来描述,其他还是用 Java