`
xinglijun1973
  • 浏览: 52223 次
社区版块
存档分类
最新评论

规则引擎的实现

阅读更多

规则引擎的技术创新说明

背景

         致力于为客户提供 客户忠诚度计划的科技,几年来为很多包括邮电、银行、航空等不同行业客户提供的 积分商城的 开发与运营工作,得到了客户的广大认可。但如何为客户提供 积分计划(即客户忠诚度计划)?而且,不同行业的积分计划输入要素(如航空关心不同座舱,银行可能关心不同的卡片等级),积分逻辑更是不同(按单笔奖励积分,按一定区间次数或合计额度奖励等)。势必涉及到不同行业积分计划的定制化,如何定制化后不必重启系统,而使业务人员能方便的管理积分计划?所有这些需求,都使得 有必要开发一套 积分计划引擎(规则引擎),使得可以面对不同行业的不同逻辑的积分计划。我在加入科技后,最初以xx积分需求为切入点,开发了 公司自主技术的 规则引擎组件。

规则引擎定义

         规则引擎是一套可以运行很多规则模板(以下简称模板)的引擎系统,被用来运行不同行业不同规则和逻辑的。不必对每个行业重新开发规则系统,只开发 发生变化的 模板部分即可,缩短了对不同规则的定制化开发时间,提高了实施效率。

 

 

结构以及设计思路

规则引擎就是一套计算框架,使得维护规则逻辑从代码中分离出来,方便的维护规则逻辑。

引擎结构如下:

引擎部分(整体部分):

模板自动加载(无需重启)

将模板编译后的class文件保存在共享文件系统中,而非java虚拟机的classpath中。这样可以动态加载类,而不需要重新启动系统。保存在共享文件系统中的好处,在于在集群环境中都可以访问到这个class

到文件系统加载类,需要用到动态类加载技术。

 

规则常驻内存

每当规则发送变化,更新内存中的规则。

整点(整日)扫描规则,对于 需要启动的规则进行加载

运行规则时,先从内存中读取,内存没有再到文件系统加载。

 

 

提供session数据框架

提供key-value结构的session数据,并提供管理功能。

 

模板部分(积分规则)

输入要素定制化

 

定义基本交易类型PiaolTrade ,要素含常用的用户id、交易码、交易时间、交易地点、交易送达终端类型、交易涉及商品的数量、名称、金额;其他行业可以继承这个对象并扩展。

 

引擎并不知道具体业务对象,模板中对应具体业务对象。

 

输出要素固定

输出要素为:

计算结果是否成功,

所获积分,

备注的文本信息

 

可以操作session数据

使用引擎提供的对session数据读取、保存操作。

积分中间数据,即上面提到的session数据。

 

待积分业务流水:送到规则引擎的外部业务系统的流水。

计算计算结果:即模板中的输出结果。

 

  规则参数自动生成

因为不同模板的参数不同,需要根据基于特征字模式匹配,自动识别出模板中的参数,供业务人员输入。

如对规则逻辑代码:

        

String 不积分商户=rule.parameters.get(“不积分商户”);//@参数说明@不积分的商户,用逗号隔开

将自动识别出 不积分商户这个参数,以及这个参数的解释“不积分的商户,用逗号隔开”.

 

 

好处

针对不同行业可以定义不同的业务对象。

定义不同的积分逻辑

模板在线上传,新建规则自动生效

积分计划逻辑常驻内存,无需访问硬盘,极速计算。经北京核心团队测试人员测试,处理500的并发游刃有余。

如何使用

业务人员根据市场需要,书写规则逻辑的文件。

>模板工程师根据市场提供的逻辑文件,编写 对应的模板(为java文件),测试并上传。

 

       1) 可用得到交易对象,规则参数值

       2)书写逻辑。包括数值、字符的比较判断,字符的包含判断,数值的四则运算等等。

       3)写返回的积分结果对象。

 

 

业务选择模板,确定模板中的参数(如积分比例,哪些pos要过滤等)建立一条规则。

引擎自动加载这条规则,并负责它的解释。

当业务系统的交易数据送到引擎时,引擎将该业务数据和模板结合并执行模板。

引擎输出的积分,可以外接账户系统(也可以不接),进行积分入账。

        

应用

积分奖励计划

其他 所有 基于 使用给定规则,做判断或计算的任何场所。

如抽奖(定义各等级奖品抽中概率、奖品数量、单用户抽中次数)。

商城各种活动规则等。

应用案例

         基于此引擎,

2015年,开发了xx规则模板:

连续签到奖励,下单奖励等。

2015年夏,在积分1.5版本中,开发了中心端奖励模板:

注册奖励、推荐奖励、积分转入转出奖励、积分消费奖励、积分充值奖励。

 

2016年,在积分商城中增加的抽奖互动活动中,开发的抽奖模板,也是靠此引擎运行。

                                                   

 

                                                                                             邢立军,2016.4

0
6
分享到:
评论

相关推荐

    规则引擎实现源码

    规则引擎,能够为用户提供方便快捷的规则判断服务,依据既定的规则判断与识别与规则匹配的条目项。是目前数据挖掘、机器学习中关于决策树方面的常用技术手段。

    Drools规则引擎实现原理及示例

    Drools规则引擎是一种嵌套在应用程序中的组件, 是用Java...它实现了将业务规则从程序代码忠分离出来,规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入、解释业务规则,并根据业务规则做出相应的决策。

    大数据平台数据服务框架,基于规则引擎实现客户标签、画像等相关功能

    大数据平台数据服务框架。实现了Kafka实时数据过滤、清洗、转换、消费,实现了Spark SQL对Redis、MongoDB等非关系型数据库的数据的读写;集成了规则引擎,可基于规则引擎实现客户标签、画像等相关功能

    使用 Drools 规则引擎实现业务逻辑

    使用规则引擎可以通过降低实现复杂业务逻辑的组件的复杂性,降低应用程序的维护和可扩展性成本。这篇更新的文章展示如何使用开源的 Drools 规则引擎让 Java™ 应用程序更适应变化。Drools 项目引入了一个新的本地...

    Drools规则引擎实现示例

    使用Java开源框架Drools实现的一个示例 可以直接运行

    规则引擎-规则流

    规则流是用来控制执行规则顺序的,我们可以在规则流程图中通过连线的方式,设置规则、规则集、决策表执行的顺序。需要注意的是在规则流程图中我们只能控制一级规则执行顺序,不能控制到规则集下面的子规则执行顺序。

    Drools-规则引擎

    规则引擎demo,内涵注释,有助于理解规则引擎实现

    FuzzyReasoningDemo:使用Jboss drools规则引擎实现的模糊推理演示

    使用 Jboss drools 规则引擎实现的模糊推理演示。 第一次后的rete加载时间短而稳定。 不管你的规则有多少,加载时间只会增加一点。 您可以使用编码来创建规则文件 (.drl)。 其中,规则0是控制循环的规则。 其他...

    drools整合apollo实现动态规则引擎

    drools整合apollo实现动态规则引擎,可以在不停服的情况下动态调整规则。无需数据库等存储,自动推送

    Drools规则引擎从入门到精通

    1 Drools简介1.1 Drools的作用1.2 使用规则引擎的优势1.3 规则引擎应用场景2 Drools初体验2.1 构建项目2.2 案例描述 2.3 代码实现3 Drools语法介绍3.1 规则文件的组成3.2 规则体语法结构3.3 Pattern模式匹配 ...

    Golang中的规则引擎实现-Golang开发

    “ Gopher掌握规则” Grule导入“ github.com/hyperjumptech/grule-rule-engine” Go的规则引擎是Golang编程语言的规则引擎库。 受著名的JBOSS Drools的启发,完成了“ Gopher掌握规则”,Grule导入了“ github....

    C# 利用 WF 实现规则引擎

    本 solution 给出了一种利用 C# 和 WWF 实现规则引擎的一种可能的实现方案,需要再进一步进行设计 设计时的开发还没有考虑,不过运行时已经有了方案,那设计时自然也很好搞定了

    JAVA规则引擎原理

    <br>第一部分简要介绍了规则引擎的产生背景和基于规则的专家系统, 第二部分介绍了什么是规则引擎及其架构和算法, 第三部分介绍了商业产品和开源项目实现等各种Java规则引擎, 第四部分对Java规则引擎...

    grule-rule-engine:Golang中的规则引擎实现

    “地鼠掌握了规则”规则引擎import "github.com/hyperjumptech/grule-rule-engine"Go的规则引擎Grule是用于Golang编程语言的规则引擎库。 受到著名的JBOSS Drools的启发,以非常简单的方式完成。 像Drools一样, ...

    规则引擎Drools入门实战案例

    Drools入门案例 ...6、使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单 对于一些存在比较复杂的业务规则并且业务规则会频繁变动的系统比较适合使用规则引擎,如下: 1、风险控制系统-

    规则引擎技术的可配置EOS平台的设计与实现

    文中提出了一个基于规则引擎的、结构灵活、具有良好的扩展性和易用性的嵌入式操作系统配置模型,而且在Vx-works系统平台下实现了应用。同时还对规则引擎,Vxworks Workbench,XML,XML Schema以及Eclipse插件开发等一...

    JBoss的Drools引擎.wps

    Java规则引擎是推理引擎的一种,它起源于基于规则的专家系统。...但值得注意的是,这个规范并没有强制统一规则定义的语法,因此,当需要将应用移植到其他的Java规则引擎实现时,可能需要变换规则定义。

    Drools规则引擎Drools规则引擎

    Drools是Jboss公司旗下一款开源的规则引擎,它完整的实现了Rete 算法;提供了强大的Eclipse Plugin开发支持; 通过使用其中的DSL(Domain Specific Language),可以实现用自然语言方式来描述业务规则,使得业务分析...

Global site tag (gtag.js) - Google Analytics