规则引擎能够搞啥?通常使用场景,是经过可视化节目进行拖拉或者简单的操做指定流程和规则,将规则输入获得目标输出。性能
规则编排的过程是各类条件的组合,相似于搭积木,指定逻辑规则,细化逻辑因子,好比指定选人规则,一个用户id进来以后根据指定的不一样逻辑规则获得该用户能够发的券集合。一样能够用来筛选商品,筛选营销规则等。编码
在交易系统中主要是和用户和营销策略相关,好比根据历史订单,是否会员信息,是否门店新老客等规则因子,组合规则因子,也就是指定决策逻辑。动态的去响应不一样用户的不一样策略。3d
规则引擎的难点在于:规则的易变和定制化。blog
规则每每处于热更新的状态,在产品决策过程当中由于ABTest等缘由,可能随时调整规则。同时一套营销规则可能由于用户画像不一样致使千人前面的策略,有必定的定制特色。产品
在没有规则引擎以前,系统实现规则引擎通常采用硬编码,if/else登方式。哪怕是将规则相关逻辑单独抽离到规则模块,代码规则实现存在硬编码难以热更新的问题依然存在。可视化
可是硬编码并不是一无可取,较粗粒度的规则仍是须要固化到系统中,这样能够达到更好封装和抽象的目的,下降必定的迭代成本。配置
规则引擎被定义为系统中的一组规则组件,能够将业务逻辑和决策逻辑进行拆分,抽离出来。im
规则引擎的关键词:d3
为更好的固化和沉淀一部分规则到系统中,咱们通常创建一套规则管理系统,以可视化方式提供给使用方,在可视化界面操做规则编排,规则的变动最好加上版本,以区分和热更新,避免硬切规则形成的数据不一致状况,能够平滑过分到下一个规则中。数据
规则引擎的难点在于,对于配置化的规则进行系统性的解析和业务逻辑的执行,当咱们经过存储系统对规则进行存储以后,在将规则以原子性的方式拉取出来后,执行规则便成了比较复杂的地方了,通常能够采用Drools,Aviator等三方引擎,也能够本身定制。