基于规则引擎的数据处理方法、装置及存储介质与流程

文档序号:28815433发布日期:2022-02-09 05:48阅读:81来源:国知局
基于规则引擎的数据处理方法、装置及存储介质与流程

1.本发明涉及计算机技术领域,具体涉及一种基于规则引擎的数据处理方法、装置及存储介质。


背景技术:

2.在业务场景日益复杂的环境下,涉及的场景多、规则多、变化多、对象多,业务系统固定业务规则难以适应这种快速的迭代速度和变化,常常需要在规则判断中增加很多判断逻辑代码和变更,导致系统日益复杂和臃肿,难以维护,大大增加了系统的研发效率和成本。


技术实现要素:

3.针对现有技术中的技术缺陷,本发明实施例的目的在于提供一种基于规则引擎的数据处理方法、装置及存储介质,以解决业务系统的规则多变引起的系统维护性问题、研发效率问题及其研发成本问题。
4.为实现上述目的,第一方面,本发明实施例提供了一种基于规则引擎的数据处理方法,包括:
5.设置多个自定义规则对象及条件对象数据;多个所述自定义规则对象继承同一个父规则类;
6.初始化所述自定义规则对象;
7.初始化规则组集合对象,并传入初始化后的所述自定义规则对象;
8.初始化规则引擎对象,并在规则引擎对象的方法中注入所述条件对象数据和初始化后的规则组集合对象,形成目标规则组;
9.执行规则引擎程序,按照所述目标规则组中的执行顺序依次执行每一条规则,得到执行成功或执行失败的处理结果。
10.作为本技术的一种具体实施方式,设置多个自定义规则对象具体为:
11.对匹配的对象数据进行抽象,封装为数据泛型对象;
12.所述数据泛型对象可实现迭代接口,且包含set集合,该数据泛型对象内封装有添加、移除和遍历方法。
13.在本技术的某些具体实施方式中,设置条件对象数据具体为:
14.对匹配的规则对象进行封装,得到规则组对象;该规则组对象可实现迭代接口,且包含set集合,该规则组对象内封装有注入、移除和遍历方法;
15.封装自定义注解;该自定义注解包括条件注解、执行动作注解和规则类注解;
16.封装接口;该接口包括规则引擎接口和规则接口;
17.封装基础规则实现类;该类可实现规则引擎接口并重写dorun方法;
18.封装基础案例规则类;该类内部封装有when(boolean flag)方法,且添加有方法注解。
19.在本技术的某些优选实施方式中,所述方法还包括:
20.若执行失败,则得到失败原因并打印日志。
21.第二方面,本发明实施例还提供了一种基于规则引起的数据处理装置,包括:
22.设置单元,用于设置多个自定义规则对象及条件对象数据;多个所述自定义规则对象继承同一个父规则类;
23.初始化单元,用于初始化所述自定义规则对象;
24.所述初始化单元还用于初始化规则组集合对象,并传入初始化后的所述自定义规则对象;
25.所述初始化单元还用于初始化规则引擎对象,并在规则引擎对象的方法中注入所述条件对象数据和初始化后的规则组集合对象,形成目标规则组;
26.执行单元,用于执行规则引擎程序,按照所述目标规则组中的执行顺序依次执行每一条规则,得到执行成功或执行失败的处理结果。
27.第三方面,本发明实施例提供了一种基于规则引擎的数据处理装置,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器通过总线相互连接,所述存储器用于存储计算机程序,所述计算机程序包括程序指令。其中,所述处理器被配置用于调用所述程序指令,执行上述第一方面所述的方法步骤。
28.第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序/指令。该计算机程序/指令被处理器执行时实现如上述第一方面所述的方法步骤。
29.实施本发明实施例,有效地解决了业务系统的规则多变引起的系统维护性问题、研发效率问题及其研发成本问题。
附图说明
30.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。
31.图1是本发明第一实施例提供的基于规则引擎的数据处理方法的流程图;
32.图2是本发明第二实施例提供的基于规则引擎的数据处理方法的流程图;
33.图3是本发明实施例提供的基于规则引擎的数据处理装置的一种结构图;
34.图4是本发明实施例提供的基于规则引擎的数据处理装置的另一种结构图。
具体实施方式
35.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
36.本发明的发明构思是:基于规则引擎,其利用现有的jexl表达式语言引擎,对要匹配的对象和匹配的规则进行高度抽象,形成执行引擎、执行规则、执行数据、执行接口四个基础核心类库,在执行引擎类里面遍历执行规则,同时匹配执行数据,根据不同的执行规则类型调用不同的执行接口,最终得到想要的结果。
37.请参考图1,本发明第一实施例提供的基于规则引擎的数据处理方法包括:
38.s1,准备规则的对象及其条件对象数据。
39.s2,初始化预选编辑好的自定义规则对象。
40.s3,初始化规则组集合对象并注入上述准备好的规则对象。
41.s4,初始化规则引擎环境及其对象并在规则引擎对象方法中传入上述准备好的条件对象数据和规则组集合。
42.s5,执行规则引擎程序,规则引擎程序会按照规则组里面的规则执行顺序依次执行每一条规则,执行成功会根据各自的定好的规则逻辑给出结果,执行失败则会抛出失败原因并打印日志,本次执行程序结束。
43.再请参考图2,是本发明数据处理方法的另一实施例,包括如下步骤:
44.s201,设置多个自定义规则对象及条件对象数据。
45.其中,多个所述自定义规则对象继承同一个父规则类;设置多个自定义规则对象具体为:
46.对匹配的对象数据进行抽象,封装为数据泛型对象;
47.所述数据泛型对象可实现迭代接口,且包含set集合,该数据泛型对象内封装有添加、移除和遍历方法等。
48.进一步地,所述条件对象数据包括规则组合对象、自定义注解、接口、基础规则实现类和基础案例规则类;设置条件对象数据具体为:
49.对匹配的规则对象进行封装,得到规则组对象;该规则组对象可实现迭代接口,且包含set集合,该规则组对象内封装有注入、移除和遍历方法;
50.封装自定义注解;该自定义注解包括条件注解、执行动作注解和规则类注解;
51.封装接口;该接口包括规则引擎接口和规则接口;
52.封装基础规则实现类;该类可实现规则引擎接口并重写dorun方法;
53.封装基础案例规则类;该类内部封装有when(boolean flag)方法,且添加有方法注解。
54.s202,初始化所述自定义规则对象。
55.s203,初始化规则组集合对象,并传入初始化后的所述自定义规则对象。
56.s204,初始化规则引擎对象,并在规则引擎对象的方法中注入所述条件对象数据和初始化后的规则组集合对象,形成目标规则组。
57.s205,执行规则引擎程序,按照所述目标规则组中的执行顺序依次执行每一条规则,得到执行成功或执行失败的处理结果。
58.s206,若执行失败,则得到失败原因并打印日志。
59.从以上描述可以得知,本发明实施例有效地解决了业务系统的规则多变引起的系统维护性问题、研发效率问题及其研发成本问题。
60.进一步地,本发明实施例所提供的数据处理方法,抽象了匹配规则和匹配对象,匹配规则可以是任何一种自定义的匹配规则,这些自定义的规则都继承同一个父规则类,匹配数据对象可以是对象、集合、及其数据基本类型,保证了在规则引擎中支持按照自定义规则匹配以上数据类型并得到想要的结果,因此有了这个规则引擎方法组件后,各个系统只要引用了该组件,针对满足该组件的业务规则匹配就不需要改动代码,只需要简单的对数据进行配置就能得到想要的效果,并且也不用每个业务系统都研发自己的规则系统,因此
大大提高研发效率和成本,同时系统的可维护性也会大大提高。
61.为了更好地理解前述方法实施例,下面进行举例说明:
62.1、对匹配的对象数据进行抽象,封装一个实现了iterable(迭代)接口和包含了set(集合中的一种)集合的数据泛型对象targets(自定义命名的java类),所有规则的条件数据都可以添加到该targets,其封装了添加、移除、遍历等方法,操作条件数据。
63.2、对匹配的规则对象进行封装,得到实现了iterable接口和包含set集合的规则组对象rulegroup(自定义命名的java类),规则组中封装了注入、移除、遍历等方法,操作规则对象。
64.3、封装自定义注解:@docondition(条件注解,自定义命名的java注解接口类)、@doaction(执行动作注解,自定义命名的java注解接口类)、@dorule(规则类注解,自定义命名的java注解接口类);
65.封装接口:dorulesengine(规则引擎接口,自定义命名的java接口类)、dorule(规则接口,自定义命名的java接口类);
66.封装baserulesengine(基础规则实现类,自定义命名的java实现类),该类实现了dorulesengine接口并重写了dorun方法,该会方法遍历所有规则并执行规则的条件方法和动作方法。该方法是调用doruleproxy(规则调用代理类,自定义命名的java类)来执行规则类的方法,因为doruleproxy会根据反射原理来获取普通规则类的注解从而识别和调用普通规则类的条件方法(docondition)和执行动作方法(doaction)最终达到代理执行规则类的效果。
67.4、封装一个基础案例规则类(caserule)添加了类注解dorule,该类封装了两个方法,分别是when(boolean flag)方法并添加了方法注解docondition以及doprint()方法,该方法添加了注解doaction,when方法内判断了入参flag是否为true,并返回判断结果,根据返回结果值判断是否执行doprint方法,并在doprint方法内执行业务规则,由于只是案例关系此方法内只是打印一句话“hello rule!”。
68.5、初始化targets对象并添加一个boolean类型的参数flag,值为true。
69.6、初始化caserule和rulegroup对象,并在rulegroup内注入caserule。
70.7、初始化baserulesengine对象。并传入初始化后的targets对象和caserule。
71.8、开始执行baserulesengine的运行方法dorun,执行程序会根据规则引擎设计的逻辑执行caserule的规则代码,最后得到想要的结果,根据本案例的条件设定,由于flag满足true,所以会执行到doprint方法,因此在控制台打印出了“hello rule!”,程序结束。
72.该方法是可以根据这个设计框架方法继续拓展可以适应多种业务场景,有效减少业务中的多重逻辑和规则代码,提高研发效率和系统可维护性。
73.基于相同的发明构思,请参考图3,本发明实施例提供了一种基于规则引擎的数据处理装置。如图所示,该数据处理装置包括:
74.设置单元10,用于设置多个自定义规则对象及条件对象数据;多个所述自定义规则对象继承同一个父规则类;
75.初始化单元11,用于初始化所述自定义规则对象;
76.所述初始化单元11还用于初始化规则组集合对象,并传入初始化后的所述自定义规则对象;
77.所述初始化单元11还用于初始化规则引擎对象,并在规则引擎对象的方法中注入所述条件对象数据和初始化后的规则组集合对象,形成目标规则组;
78.执行单元12,用于执行规则引擎程序,按照所述目标规则组中的执行顺序依次执行每一条规则,得到执行成功或执行失败的处理结果。
79.进一步地,所述设置单位10具体用于:
80.对匹配的对象数据进行抽象,封装为数据泛型对象;所述数据泛型对象可实现迭代接口,且包含set集合,该数据泛型对象内封装有添加、移除和遍历方法等;
81.对匹配的规则对象进行封装,得到规则组对象;该规则组对象可实现迭代接口,且包含set集合,该规则组对象内封装有注入、移除和遍历方法;
82.封装自定义注解;该自定义注解包括条件注解、执行动作注解和规则类注解;
83.封装接口;该接口包括规则引擎接口和规则接口;
84.封装基础规则实现类;该类可实现规则引擎接口并重写dorun方法;
85.封装基础案例规则类;该类内部封装有when(boolean flag)方法,且添加有方法注解等。
86.进一步地,所述执行单元12还用于:
87.若执行失败,则得到失败原因并打印日志。
88.可选地,在本技术的另一优选实施例中,如图4所示,该数据处理装置可以包括:一个或多个处理器101、一个或多个输入设备102、一个或多个输出设备103和存储器104,上述处理器101、输入设备102、输出设备103和存储器104通过总线105相互连接。存储器104用于存储计算机程序,所述计算机程序包括程序指令,所述处理器101被配置用于调用所述程序指令执行前述方法步骤。
89.应当理解,在本发明实施例中,所称处理器101可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
90.输入设备102可以包括键盘等,输出设备103可以包括显示器(lcd等)、扬声器等。
91.该存储器104可以包括只读存储器和随机存取存储器,并向处理器101提供指令和数据。存储器104的一部分还可以包括非易失性随机存取存储器。例如,存储器104还可以存储设备类型的信息。
92.具体实现中,本发明实施例中所描述的处理器101、输入设备102、输出设备103可执行本发明实施例提供的方法的实施例中所描述的实现方式,在此不再赘述。
93.需要说明的是,关于数据处理装置更为具体的工作流程,请参考前述方法实施例部分,在此不再赘述。
94.进一步地,对应于上述基于规则引擎的数据处理方法,本发明实施例还提供了一种可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现:上述方法实施例部分的方法。
95.所述计算机可读存储介质可以是前述实施例所述的客户机的内部存储单元,例如
系统的硬盘或内存。所述计算机可读存储介质也可以是所述系统的外部存储设备,例如所述系统上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述计算机可读存储介质还可以既包括所述系统的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述系统所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
96.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
97.在本技术所提供的几个实施例中,应该理解到,所揭露的单元和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
98.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1