规则引擎的实现方法及装置制造方法及图纸

技术编号:16326918 阅读:53 留言:0更新日期:2017-09-29 18:54
本发明专利技术提供了一种规则引擎的实现方法及装置,其中的方法包括:接收输入数据;将所述输入数据在所述规则引擎的规则集中匹配,其中,所述规则集包括多条规则,且所述规则是基于JSON格式配置的规则;对于所述规则,如果所述输入数据中包括规则对应的关键属性,则根据所述关键属性对所述输入数据进行规则校验,并根据所述规则对所述输入数据进行更新操作,如果所述输入数据中不包括所述关键属性,则从所述输入数据中提取出对象,利用Java反射机制,获取到所述对象对应的属性值,并根据所述对象及属性值对所述输入数据进行规则校验,并根据规则对所述输入数据进行更新操作。本发明专利技术可简化规则引擎的开发过程、提高效率。

【技术实现步骤摘要】
规则引擎的实现方法及装置
本专利技术涉及计算机及互联网
,特别是涉及一种规则引擎的实现方法及装置。
技术介绍
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。规则引擎的工作流程可以理解为:首先接受数据输入,然后解释业务规则,最后根据业务规则做出业务决策。对于业务系统而言,复杂及多变的业务规则,如果没有规则引擎的支撑,很难做到业务代码的解耦,无法及时响应业务的变化。现有的规则引擎,如开源的Drools(JBossRules,一种易于访问企业策略、易于调整以及易于管理的开源业务规则引擎),配置是基于Xml(ExtensibleMarkupLanguage,可扩展标记语言)和特有的Drl文件(扩展名为drl.的文件)实现,Drools规则配置的可视化编辑程度不高,主要靠后台开发人员维护,所以可视化开发及维护成本较高。
技术实现思路
为了简化规则引擎的开发,本专利技术实施例提供一种规则引擎的实现方法及装置。根据本专利技术的一个方面,提供一种规则引擎的实现方法,包括:接收输入数据;将所述输入数据在所述规则引擎的规则集中匹配,其中,所述规则集包括多条规则,且所述规则是基于JSON格式配置的规则;对于所述规则,如果所述输入数据中包括规则对应的关键属性,则根据所述关键属性对所述输入数据进行规则校验,并根据所述规则对所述输入数据进行更新操作,如果所述输入数据中不包括所述关键属性,则从所述输入数据中提取出对象,利用Java反射机制,获取到所述对象对应的属性值,并根据所述对象及属性值对所述输入数据进行规则校验,并根据规则对所述输入数据进行更新操作。可选的,所述规则包括条件对象和执行对象,所述方法还包括:基于JSON格式,配置所述条件对象和执行对象;其中,所述条件对象包括字段项参数、操作项目参数和取值项参数组成的JSON数组,所述执行对象包括字段项参数和设置值项参数组成的JSON数组。可选的,所述根据所述关键属性对所述输入数据进行规则校验包括:按照规则优先级获取到优先级最高的规则;针对当前获取的规则,根据所述规则中条件对象包括的各项参数,确定由一个参数或多个参数组成的关键属性格式;解析所述输入数据,提取出所述关键属性格式对应的关键属性;如果输入数据的关键属性对应的取值与所述条件对象中的关键属性取值一致,则确定为规则校验通过。可选的,所述根据所述规则对所述输入数据进行更新操作包括:根据所述规则中执行对象包括的各项参数,确定由一个参数或多个参数组成的关键属性格式;解析所述输入数据,提取出所述关键属性格式对应的关键属性;根据所述执行条件对象中的关键属性取值更新所述输入数据的关键属性的取值。可选的,如果所述输入数据中不包括所述关键属性,所述从所述输入数据中提取出对象、利用Java反射机制获取到所述对象对应的属性值包括:解析所述字段项参数为对象/属性的格式,并从所述输入数据中获取到对象;利用Java反射机制,从所述输入数据中提取出所述对象,并利用该对象的Get/Set方法得到该对象的属性值。可选的,所述规则是以分布式结构缓存的。根据本专利技术的另一个方面,提供一种规则引擎的实现装置,包括:输入数据接收单元,用于接收输入数据;规则匹配单元,用于将所述输入数据在所述规则引擎的规则集中匹配,其中,所述规则集包括多条规则,且所述规则是基于JSON格式配置的规则;规则校验及执行单元,用于对于所述规则,如果所述输入数据中包括规则对应的关键属性,则根据所述关键属性对所述输入数据进行规则校验,并根据所述规则对所述输入数据进行更新操作,如果所述输入数据中不包括所述关键属性,则从所述输入数据中提取出对象,利用Java反射机制,获取到所述对象对应的属性值,并根据所述对象及属性值对所述输入数据进行规则校验,并根据规则对所述输入数据进行更新操作。可选的,所述规则包括条件对象和执行对象,所述装置还包括:对象配置单元,用于基于JSON格式,配置所述条件对象和执行对象;其中,所述条件对象包括字段项参数、操作项目参数和取值项参数组成的JSON数组,所述执行对象包括字段项参数和设置值项参数组成的JSON数组。可选的,所述规则校验及执行单元包括:规则校验子单元,用于按照规则优先级获取到优先级最高的规则;针对当前获取的规则,根据所述规则中条件对象包括的各项参数,确定由一个参数或多个参数组成的关键属性格式;解析所述输入数据,提取出所述关键属性格式对应的关键属性;如果输入数据的关键属性对应的取值与所述条件对象中的关键属性取值一致,则确定为规则校验通过。可选的,所述规则校验及执行单元包括:规则执行子单元,用于根据所述规则中执行对象包括的各项参数,确定由一个参数或多个参数组成的关键属性格式;解析所述输入数据,提取出所述关键属性格式对应的关键属性;根据所述执行条件对象中的关键属性取值更新所述输入数据的关键属性的取值。可选的,如果所述输入数据中不包括所述关键属性,所述规则校验及执行单元包括:反射处理子单元,用于解析所述字段项参数为对象/属性的格式,并从所述输入数据中获取到对象;利用Java反射机制,从所述输入数据中提取出所述对象,并利用该对象的Get/Set方法得到该对象的属性值。优选的,所述规则是以分布式结构缓存的。可见,本专利技术规则引擎是基于JSON和反射机制实现,基于JSON的Rule规则配置,为规则引擎的前端可视化开发提供了便利,使得该规则引擎配置起来更加方便清晰;在Rule的配置上清晰明了,在实现上简单高效。采用轻量级的数据交换语言JSON和Java反射机制,能够通过动态的配置快速响应频繁变动的业务规则调整,减少开发和运维成本,提高系统灵活性;采用分布式结构缓存规则,降低解析规则造成的资源消耗,提高规则引擎运行效率。该规则引擎实现方案对于视频、图文等相关业务的审核策略提供了快速的响应,可极大减轻审核的工作量,节省审核人力成本和开发成本。附图说明图1是本专利技术一个实施例提供的一种规则引擎的实现方法流程图;图2是本专利技术另一个实施例提供的一种规则引擎中规则引擎类图示意图;图3是本专利技术另一个实施例提供的一种规则引擎的实现方法流程图;图4是本专利技术一个实施例提供的一种规则引擎的实现装置结构示意图。具体实施方式为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。参见图1,为本专利技术实施例提供的一种规则引擎的实现方法流程图,该方法包括:S101:接收输入数据;S102:将输入数据在规则引擎的规则集中匹配,其中,规则集包括多条规则,且规则是基于JSON格式配置的规则;S103:判断输入数据中是否包括规则对应的关键属性,如果包括执行步骤S104,如果不包括,执行步骤S105;S104:根据关键属性对输入数据进行规则校验,并根据规则对输入数据进行更新操作;S105:从输入数据中提取出对象,利用Java反射机制,获取到对象对应的属性值,并根据对象及属性值对输入数据进行规则校验,并根据规则对输入数据进行更新操作。可见,本专利技术基于审核系统频繁变更业务逻辑的场景,提出一种快速高效的实现方式,采用轻量级的数据交换语言JSON(JavaScriptObjectNotation,J本文档来自技高网...
规则引擎的实现方法及装置

【技术保护点】
一种规则引擎的实现方法,其特征在于,包括:接收输入数据;将所述输入数据在所述规则引擎的规则集中匹配,其中,所述规则集包括多条规则,且所述规则是基于JSON格式配置的规则;对于所述规则,如果所述输入数据中包括规则对应的关键属性,则根据所述关键属性对所述输入数据进行规则校验,并根据所述规则对所述输入数据进行更新操作,如果所述输入数据中不包括所述关键属性,则从所述输入数据中提取出对象,利用Java反射机制,获取到所述对象对应的属性值,并根据所述对象及属性值对所述输入数据进行规则校验,并根据规则对所述输入数据进行更新操作。

【技术特征摘要】
1.一种规则引擎的实现方法,其特征在于,包括:接收输入数据;将所述输入数据在所述规则引擎的规则集中匹配,其中,所述规则集包括多条规则,且所述规则是基于JSON格式配置的规则;对于所述规则,如果所述输入数据中包括规则对应的关键属性,则根据所述关键属性对所述输入数据进行规则校验,并根据所述规则对所述输入数据进行更新操作,如果所述输入数据中不包括所述关键属性,则从所述输入数据中提取出对象,利用Java反射机制,获取到所述对象对应的属性值,并根据所述对象及属性值对所述输入数据进行规则校验,并根据规则对所述输入数据进行更新操作。2.如权利要求1所述的方法,其特征在于,所述规则包括条件对象和执行对象,所述方法还包括:基于所述JSON格式,配置所述条件对象和执行对象;其中,所述条件对象包括字段项参数、操作项目参数和取值项参数组成的JSON数组,所述执行对象包括字段项参数和设置值项参数组成的JSON数组。3.如权利要求2所述的方法,其特征在于,所述根据所述关键属性对所述输入数据进行规则校验包括:按照规则优先级获取到优先级最高的规则;针对当前获取的规则,根据所述规则中条件对象包括的各项参数,确定由一个参数或多个参数组成的关键属性格式;解析所述输入数据,提取出所述关键属性格式对应的关键属性;如果输入数据的关键属性对应的取值与所述条件对象中的关键属性取值一致,则确定为规则校验通过。4.如权利要求2所述的方法,其特征在于,所述根据所述规则对所述输入数据进行更新操作包括:根据所述规则中执行对象包括的各项参数,确定由一个参数或多个参数组成的关键属性格式;解析所述输入数据,提取出所述关键属性格式对应的关键属性;根据所述执行条件对象中的关键属性取值更新所述输入数据的关键属性的取值。5.如权利要求2所述的方法,其特征在于,如果所述输入数据中不包括所述关键属性,所述从所述输入数据中提取出对象、利用Java反射机制获取到所述对象对应的属性值包括:解析所述字段项参数为对象/属性的格式,并从所述输入数据中获取到对象;利用Java反射机制,从所述输入数据中提取出所述对象,并利用该对象的Get/Set方法得到该对象的属性值。6.如权利要求1-5任一项所述的方法,其特征在于,所述规则是以分布式结构缓存的。7.一种规则引擎的实现装...

【专利技术属性】
技术研发人员:柴海鹏李顺龙樊京鑫张木召
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1