Drools项目实战

项目中复杂多变的条件

需求介绍

公司通过在头条、快手,腾讯等媒体平台上投放APP的广告,以此来长期塑造品牌形象以及达成拉新,活跃,留存等目的,广告的投放方式丰富多彩的,广告主关心的是哪种投放方式投入产出比ROI最优,通过实现广告投放系统中的回传上报和点击归因所产生的数据,进行投放和运营各层面的有效优化,从而用合理的投入成本,达到最大化效果产出。

使用规则引擎原因

其中回传上报模块中上报的条件复杂多变,且业务需要经常变更, 如果按照传统的逻辑思维,通常的做法首先要传进去参数,通过if…else或者通过像MyBatis中的动态SQL进行业务逻辑判断。其次获取到接口执行完毕后的结果。每次变更业务都要依赖开发人员改代码然后测试人员测试,这样做的话会增加开发人员、测试人员和运营的工作量。

规则引擎的出现就完美的解决了这些问题,规则引擎的核心目的之一就是将复杂且多变的规则从硬编码中解放出来,使其代码与业务解耦合。业务由业务操作员管理,不再依赖开发人员去修改代码

选用Drools的原因

规则引擎的种类很多,选用Drools是因为开源,成熟度高,有非常活跃的社区支持,为Java量身定制的基于Charles Forgy的RETE算法的规则引擎的实现。

规则模板后台

 规则详情编辑页面

实现中的关键点

项目初始化时加载规则

解析生成规则内容并入库

数据库中规则内容如下

 

希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。更多好文推荐,请关注我的微信公众号--JustJavaIt
原文地址:https://www.cnblogs.com/liaowenhui/p/15377085.html