规则引擎的技术创新说明
背景
致力于为客户提供 客户忠诚度计划的科技,几年来为很多包括邮电、银行、航空等不同行业客户提供的 积分商城的 开发与运营工作,得到了客户的广大认可。但如何为客户提供 积分计划(即客户忠诚度计划)?而且,不同行业的积分计划输入要素(如航空关心不同座舱,银行可能关心不同的卡片等级),积分逻辑更是不同(按单笔奖励积分,按一定区间次数或合计额度奖励等)。势必涉及到不同行业积分计划的定制化,如何定制化后不必重启系统,而使业务人员能方便的管理积分计划?所有这些需求,都使得 有必要开发一套 积分计划引擎(规则引擎),使得可以面对不同行业的不同逻辑的积分计划。我在加入科技后,最初以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。
相关推荐
### 使用 Drools 规则引擎实现业务逻辑 #### 引言 随着软件系统变得越来越复杂,管理和维护其中的业务逻辑也成为了开发过程中的一大挑战。传统的硬编码方式虽然能够实现业务需求,但在面对频繁变更的需求时显得...
通过研究这些源码,我们可以了解到规则引擎的具体实现细节,比如如何定义规则语法,如何高效地解析和执行规则,以及如何设计规则的更新和管理机制。对于开发人员来说,这有助于提升在实际项目中应用规则引擎的能力,...
Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。具有易于访问企业策略、易于...
Drools是一款强大的规则引擎,由Red Hat公司开发并维护,它主要用于实现业务规则的管理和执行。Drools提供了一种声明式的方式来定义业务规则,使得非技术人员也能理解和修改规则,从而降低了业务逻辑与代码的耦合度...
Drools规则引擎是一种嵌套在应用程序中的组件, 是用Java...它实现了将业务规则从程序代码忠分离出来,规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入、解释业务规则,并根据业务规则做出相应的决策。
大数据平台数据服务框架。实现了Kafka实时数据过滤、清洗、转换、消费,实现了Spark SQL对Redis、MongoDB等非关系型数据库的数据的读写;集成了规则引擎,可基于规则引擎实现客户标签、画像等相关功能
Drools是一款强大的规则引擎,它是Java开源社区JBOSS的一部分,主要用于业务规则管理。它允许开发者用一种声明式的方式定义业务规则,并在运行时高效地执行这些规则。本示例将带你深入了解如何使用Drools来实现一个...
以信用卡申请为例,我们可以通过Drools规则引擎实现如下功能: 1. **信息录入与合法性检查**:用户提交包含姓名、性别、年龄、学历、联系方式等个人信息的申请。Drools会依据预定义的规则(如检查学历与薪水)进行...
JSR-94提供了一套接口和类,使得不同的规则引擎实现能够以一致的方式集成到Java应用程序中,促进可移植性和互操作性。 规则引擎的体系结构通常包括以下几个关键组件: 1. **规则库**:存储业务规则的地方,可以是...
【业务规则引擎】是软件系统中用于处理业务逻辑的一种组件,它允许开发者将复杂的业务决策从应用程序的主要逻辑中分离出来...在实际项目中,应根据具体需求选择合适的规则引擎实现,并遵循最佳实践进行规则设计和实现。
Java作为企业级应用开发的主流语言之一,其规则引擎实现可能包括但不限于Drools、Easy Rules等,这些工具提供了丰富的API和管理界面,便于进行规则定义、管理及执行。 4. 硕士学位论文的结构与内容 从文中提到的...
在实际应用中,我们可以利用WF的规则引擎实现以下功能: 1. **业务决策**:根据预定义的规则,自动做出符合业务逻辑的决策。 2. **合规性检查**:确保操作符合法规或公司政策。 3. **流程自动化**:通过规则引擎驱动...
由于压缩包中的文件名为“myfirst”,我们可以假设这可能是博主或作者初次尝试使用规则引擎的一个项目或教程的起点,可能包含一个简单的规则引擎实现或使用案例。 规则引擎的核心组成部分通常包括规则定义、规则...
- **drools-dotnet.dll**:这是Drools.NET的主要库,包含了.NET平台上的核心规则引擎实现。 - **drools-3.0.dll**:这是Drools的原始Java版本,可能被IKVM转换为.NET兼容的版本。 - **drools-dotnet.examples.dll**...
通过上述步骤,我们不仅了解了如何基于ThingsBoard规则引擎实现数据处理流程,还探讨了一些典型的应用场景。规则引擎作为ThingsBoard平台的核心功能之一,为开发者提供了强大的工具来应对复杂的物联网项目需求。随着...
- **金融风控**:利用规则引擎实现快速、准确的风险评估。 - **电商促销**:根据用户行为触发不同的促销策略。 - **医疗诊断**:基于患者的症状和病史进行初步诊断。 - **供应链管理**:优化物流路径,减少运输成本...
在标题“C# 利用 WF 实现规则引擎”中,我们可以推断出,这个项目是利用WWF的活动和工作流概念来构建一个规则引擎。规则引擎的核心在于能够定义、存储和执行一系列规则,这些规则可以影响应用程序的行为。通过使用...
通过JSR94,开发者可以选择不同的规则引擎实现,而无需关心底层实现细节,增强了代码的可移植性。 综上所述,基于Java的规则引擎是软件系统中不可或缺的一部分,它通过分离业务决策与应用程序代码,提高了系统的...