基于规则引擎的数据处理方法、装置、设备及存储介质转让专利

申请号 : CN202210913579.5

文献号 : CN114996319B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐煌张镇潮施建生沈懿忱刘子星吴华亮

申请人 : 税友软件集团股份有限公司

摘要 :

本申请公开了一种基于规则引擎的数据处理方法、装置、设备及存储介质,涉及计算机软件开发技术领域。该方法包括:获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则;其中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体;通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体;根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果。通过本申请的技术方案,可以提升规则运算效率,提高规则引擎的适用范围。

权利要求 :

1.一种基于规则引擎的数据处理方法,其特征在于,包括:

获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则;其中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体;

通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体;

根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果;

所述通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体的过程中,还包括:将所述预设业务规则进行装载,并利用装载后得到的目标规则对不同的所述实体中的本体逐一进行匹配判断,以便对所述实体进行批量处理;

所述利用装载后得到的目标规则对不同的所述实体中的本体逐一进行匹配判断,包括:若当前本体与所述目标规则匹配判断完成,则在所述当前本体放置标志位,并继续利用所述目标规则与其他本体进行匹配判断;当所有本体匹配判断完成后,将所述实体中具有相同的实例,并且所述实例对应不同的目标规则进行合并,然后对所述实例中合并后的目标规则进行预编译。

2.根据权利要求1所述的基于规则引擎的数据处理方法,其特征在于,所述获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则之后,还包括:将所述预设业务规则进行拆解,以得到不同的规则语句;

将所述规则语句配置为相应的规则语法,以便对所述规则语法进行语法检查和语法测试。

3.根据权利要求1所述的基于规则引擎的数据处理方法,其特征在于,所述获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则之后,还包括:将所述本体映射为不同的所述数据源中的字段,并生成不同的与所述字段对应的配置项;

根据所述配置项对所述元数据进行数据装填,以得到与所述本体对应的实例。

4.根据权利要求3所述的基于规则引擎的数据处理方法,其特征在于,所述通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体,包括:通过预设数据获取方式获取所述实例,并根据所述配置项自动化执行相应的取数逻辑,以将所述实例与所述实例对应的本体装载为相应的实体。

5.根据权利要求1至4任一项所述的基于规则引擎的数据处理方法,其特征在于,所述根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果,包括:将所述预设业务规则中出现的本体与所述实体中的本体进行对齐,并判断所述实体是否满足所述预设业务规则;

若所述实体满足所述预设业务规则,则根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果;

若所述实体不满足所述预设业务规则,则输出所述实体中不满足所述预设业务规则的数据项,并对所述数据项提供用于使所述实体满足所述预设业务规则的补全建议。

6.一种基于规则引擎的数据处理装置,其特征在于,包括:

数据获取模块,用于获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则;其中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体;

实体装载模块,用于通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体;

规则运算模块,用于根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果;

所述实体装载模块,还用于将所述预设业务规则进行装载,并利用装载后得到的目标规则对不同的所述实体中的本体逐一进行匹配判断,以便对所述实体进行批量处理;

所述实体装载模块,具体用于若当前本体与所述目标规则匹配判断完成,则在所述当前本体放置标志位,并继续利用所述目标规则与其他本体进行匹配判断;当所有本体匹配判断完成后,将所述实体中具有相同的实例,并且所述实例对应不同的目标规则进行合并,然后对所述实例中合并后的目标规则进行预编译。

7.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至5任一项所述的基于规则引擎的数据处理方法。

8.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的基于规则引擎的数据处理方法。

说明书 :

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

技术领域

[0001] 本发明涉及计算机软件开发技术领域,特别涉及一种基于规则引擎的数据处理方法、装置、设备及存储介质。

背景技术

[0002] 目前,已经有大量规则引擎的出现来实现将业务规则从业务应用程序代码中分离出来,并且能够使用规则引擎预定义的语义模块编写规则,接受数据输入并且根据规则执行,并返回规则执行的结果,由于数据量的与日俱增,分布式的规则引擎技术也已经出现很多。然而,目前现有的规则引擎存在以下缺点:(1)缺乏可解释性,使之得出的结果无法有效的得到应用;缺乏规则补全的能力,对于税收优惠等专有业务场景无法满足。(2)传统的规则引擎没有对接入数据提出规范,导致规则引擎的语义需要在不同的环境中编写不同版本的规则,接入成本高、维护成本高、判断正确性成本高。(3)分布式运算仅限于优化介入数量大的情况下的规则计算优化,而引擎规则增加后需要耗费的时间仍然线性增加,耗费时间长,运算效率低下。
[0003] 综上可见,如何为业务应用场景提供解释性、提升数据接入效率以及提升规则运算效率是目前有待解决的问题。

发明内容

[0004] 有鉴于此,本发明的目的在于提供一种基于规则引擎的数据处理方法、装置、设备及存储介质,能够为业务应用场景提供解释性、提升数据接入效率以及提升规则运算效率。其具体方案如下:
[0005] 第一方面,本申请公开了一种基于规则引擎的数据处理方法,包括:
[0006] 获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则;其中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体;
[0007] 通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体;
[0008] 根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果。
[0009] 可选的,所述获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则之后,还包括:
[0010] 将所述预设业务规则进行拆解,以得到不同的规则语句;
[0011] 将所述规则语句配置为相应的规则语法,以便对所述规则语法进行语法检查和语法测试。
[0012] 可选的,所述获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则之后,还包括:
[0013] 将所述本体映射为不同的所述数据源中的字段,并生成不同的与所述字段对应的配置项;
[0014] 根据所述配置项对所述元数据进行数据装填,以得到与所述本体对应的实例。
[0015] 可选的,所述通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体,包括:
[0016] 通过预设数据获取方式获取所述实例,并根据所述配置项自动化执行相应的取数逻辑,以将所述实例与所述实例对应的本体装载为相应的实体。
[0017] 可选的,所述通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体的过程中,还包括:
[0018] 将所述预设业务规则进行装载,并利用装载后得到的目标规则对不同的所述实体中的本体逐一进行匹配判断,以便对所述实体进行批量处理。
[0019] 可选的,所述利用装载后得到的目标规则对不同的所述实体中的本体逐一进行匹配判断,包括:
[0020] 若当前本体与所述目标规则匹配判断完成,则在所述当前本体放置标志位,并继续利用所述目标规则与其他本体进行匹配判断;
[0021] 当所有本体匹配判断完成后,将所述实体中具有相同的实例,并且所述实例对应不同的目标规则进行合并,然后对所述实例中合并后的目标规则进行预编译。
[0022] 可选的,所述根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果,包括:
[0023] 将所述预设业务规则中出现的本体与所述实体中的本体进行对齐,并判断所述实体是否满足所述预设业务规则;
[0024] 若所述实体满足所述预设业务规则,则根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果;
[0025] 若所述实体不满足所述预设业务规则,则输出所述实体中不满足所述预设业务规则的数据项,并对所述数据项提供用于使所述实体满足所述预设业务规则的补全建议。
[0026] 第二方面,本申请公开了一种基于规则引擎的数据处理装置,包括:
[0027] 数据获取模块,用于获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则;其中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体;
[0028] 实体装载模块,用于通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体;
[0029] 规则运算模块,用于根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果。
[0030] 第三方面,本申请公开了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如前所述的基于规则引擎的数据处理方法。
[0031] 第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中所述计算机程序被处理器执行时实现如前所述的基于规则引擎的数据处理方法。
[0032] 本申请中,首先获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则;其中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体;然后通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体;最后根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果。可见,统一规则引擎数据接入格式,通过获取元数据对应的相关数据,装载为对应的数据实体作为数据接入,抛弃了以往的面向数据表的数据输入模式。保证了数据接入的统一性,使得在线、离线、近线等不同运行环境可以使用一套规则代码执行,不仅不同环境下仅需维护一份规则代码,而且不同环境数据源甚至可以混合使用,大幅提高规则引擎的适用范围。根据预设业务规则对实体进行批量的规则运算,实现了集约化批量规则计算,大幅提升业务规则运算效率。另外,通过本申请的技术方案,由于规则执行时每个实体中的每个数据项数据都已加载进入内存中,并且所有衍生指标均为本体内属性加工而来,因此每条业务规则哪一数据项不达标可以直接输出,所有衍生指标也可以快速溯源,给出本体的源头的数据来源,解决规则与结果脱离,为业务应用场景提供解释性。

附图说明

[0033] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0034] 图1为本申请公开的一种基于规则引擎的数据处理方法流程图;
[0035] 图2为本申请公开的一种基于规则引擎的数据处理系统数据流向示意图;
[0036] 图3为本申请公开的一种具体的税务领域模型数据处理示意图;
[0037] 图4为本申请公开的一种具体的基于规则引擎的数据处理方法流程图;
[0038] 图5为本申请公开的一种基于规则引擎的数据处理系统构成示意图;
[0039] 图6为本申请公开的一种基于规则引擎的数据处理装置结构示意图;
[0040] 图7为本申请公开的一种电子设备结构图。

具体实施方式

[0041] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0042] 目前现有的规则引擎存在以下缺点:(1)缺乏可解释性,使之得出的结果无法有效的得到应用;缺乏规则补全的能力,对于税收优惠等专有业务场景无法满足。(2)传统的规则引擎没有对接入数据提出规范,导致规则引擎的语义需要在不同的环境中编写不同版本的规则,接入成本高、维护成本高、判断正确性成本高。(3)分布式运算仅限于优化介入数量大的情况下的规则计算优化,而引擎规则增加后需要耗费的时间仍然线性增加,耗费时间长,运算效率低下。
[0043] 为此,本申请提供了一种基于规则引擎的数据处理方案,能够为业务应用场景提供解释性、提升数据接入效率以及提升规则运算效率。
[0044] 本发明实施例公开了一种基于规则引擎的数据处理,参见图1所示,该方法包括:
[0045] 步骤S11:获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则。
[0046] 由于传统的规则引擎中都是面向数据表的数据输入模式,因此对接入的数据没有提出规范,导致规则引擎的语义需要在不同的环境中编写不同版本的规则。本申请实施例中,通过面向不同的数据源并将不同的数据源以统一的数据装填格式进行装填,确定出元数据和预设业务规则,实现了获取元数据定义层和预设业务规则定义层的数据,进一步的可以根据元数据和预设业务规则拉取相关的数据。其中,所支持的数据源包括数据仓库、MYSQL业务库、在线接口等。
[0047] 本申请实施例中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体。例如,如果当前需要处理与税务领域相关的业务数据,则元数据定义层根据实际的税务规则进行相关的本体及衍生指标的定义。如定义纳税人本体中含有纳税人类型、纳税人所属行业、纳税人所有发票集合等事实元素;发票本体中含有销购双方纳税人识别号、发票类型、销售方行业、是否为销项发票等事实元素。
[0048] 可以理解的是,本体为公认的概念框架,在本申请实施例中,政策规则本体即为政策本身所包含的属性;发票本体即为以发票粒度的相关元素集合;纳税人本体即为纳税人如档案号、企业区域信息等纳税人相关信息,发票本体可以被组装嵌套进入纳税人本体。
[0049] 进一步的,本体的元数据定义完成后,可以针对本体中的目标本体加工和聚合出衍生指标的元数据。由于衍生指标是根据本体事实元素加工、聚合而产生的数据指标,例如:增长率、平均值等指标,其本身由事实元素组装而成,并且在多个规则中都会复用的衍生指标,所以所有衍生指标可以快速溯源,给出本体最源头的数据来源。需要指出的是,衍生指标是根据本体中已经定义好的属性聚合加工出的衍生指标,本质是计算逻辑与规则,在定义衍生指标的元数据时给出计算规则,但是不给出具体的数据。
[0050] 本申请实施例中,在获取到预设业务规则之后会将预设业务规则进行拆解,以得到不同的规则语句,也即,根据实际的预设业务规则将其拆解为具体的规则。然后将所述规则语句配置为相应的规则语法,以便对所述规则语法进行语法检查和语法测试,可以理解的是,只有通过语法检查和语法测试的规则才可以被使用,并且将通过语法检查和语法测试的规则进行存储以便后续的调用。
[0051] 步骤S12:通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体。
[0052] 本申请实施例中,在获取了元数据和预设业务规则之后根据元数据中的本体和预设业务规则进行数据装填。具体的,将所述本体映射为不同的所述数据源中的字段,并生成不同的与所述字段对应的配置项;根据所述配置项对所述元数据进行数据装填,以得到与所述本体对应的实例。例如,将获取的元数据中的本体映射为实际数据库中的字段、接口中的字段等,并且形成不同的配置项,以配合不同环境接入规则引擎时将实体取数JAVA程序包、接口地址与映射表元数据提供给规则引擎,使规则引擎能够在计算过程中获取到本体实例数据。
[0053] 本申请实施例中,通过预设数据获取方式获取所述实例,如通过接口/Map Reduce(编程模型)任务/JDBC(Java DataBase Connectivity,java数据库连接)等方式去获取相关数据;可以理解的是,获取到的相关数据为相应的本体、数据装填后的本体实例数据以及相应的衍生指标等数据,然后根据由不同的数据源形成的配置项自动化执行相应的取数逻辑,以将所述实例与所述实例对应的本体装载为相应的实体。也即,实体指本体与实例的组合,例如一条政策规则,一条发票数据,一条纳税人数据皆为实体。
[0054] 本申请实施例中,获取到元数据的相关数据后,规则引擎则会对数据进行装载。在规则装载时,为了提升预设业务规则对实体的判断效率,利用装载后得到的目标规则对不同的所述实体中的本体逐一进行匹配判断,以便对所述实体进行批量处理。
[0055] 需要指出的是,若当前本体与所述目标规则匹配判断完成,则在所述当前本体放置标志位,并继续利用所述目标规则与其他本体进行匹配判断;当所有本体匹配判断完成后,将所述实体中具有相同的实例,并且所述实例对应不同的目标规则进行合并,然后对所述实例中合并后的目标规则进行预编译。
[0056] 步骤S13:根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果。
[0057] 本申请实施例中,针对每一个被装载后得到的实体都会对其执行预设业务规则,进行批量的规则运算,然后针对计算的结果,将数据按照用户的需求,提供多种形式的数据返回,如接口、数仓、业务数据库等。
[0058] 本申请实施例中,由于在进行规则装载时对规则进行了批量处理,因此在进行规则计算时,可以将多条规则跑测重复加载数据变为单一实例统一加载数据,批量跑测规则。使得跑1条10条10000条规则都仅需加载一次实例数据,使其原线性时间复杂度降低为常数级别。大幅提升税务政策多、税收优惠多的情况下一个实例需要运行多个政策检查下的性能。
[0059] 如图2所示为在进行数据处理时整个系统的数据流向。规则引擎根据外部输入的元数据:预设业务规则、规则需要使用的本体、衍生指标等,并根据接入数据源对应的配置项,通过接口/Map Reduce任务/JDBC等方式去拉取相关数据装载为对应的实体,并且针对每个实例进行相应的规则计算。其中,数据来源可以是线上的生产的业务库/线上系统的接口/数据仓库等数据资产平台,不同的数据源以统一的数据装填格式进行装填,降低接入成本。最后规则引擎将对应的计算结果返回到调用方、对应的数据仓库、对应的业务库中,以支持(在线、离线、近线)跑测。
[0060] 示例性的,如图3所示为将本申请实施例应用于税务领域模型中的情况,垂直化建立纳税人本体、发票本体、税务政策本体。实体模型管理平台,负责预定义整个链路中的本体与一些复杂的衍生指标计算逻辑与规则(也即根据本体中已经定义好的属性聚合加工出的衍生指标,本质是计算逻辑与规则);税务模型管理平台:负责根据本体的属性集合,利用规则引擎预定义的语法进行规则配置;规则引擎:提供分布式规则执行功能;提供数据实体载入功能;提供规则补全功能;提供规则解释性功能;数据装填层:根据实体模型管理平台定义的本体,根据规则引擎的标准规范,为其装填数据(在线提供接口、数据库;离线提供一个JAR包以提供实体的取数)。
[0061] 本申请中,首先获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则;其中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体;然后通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体;最后根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果。可见,统一规则引擎数据接入格式,通过获取元数据对应的相关数据,装载为对应的数据实体作为数据接入,抛弃了以往的面向数据表的数据输入模式。保证了数据接入的统一性,使得在线、离线、近线等不同运行环境可以使用一套规则代码执行,不仅不同环境下仅需维护一份规则代码,而且不同环境数据源甚至可以混合使用,大幅提高规则引擎的适用范围。根据预设业务规则对实体进行批量的规则运算,实现了集约化批量规则计算,大幅提升业务规则运算效率。另外,通过本申请的技术方案,由于规则执行时每个实体中的每个数据项数据都已加载进入内存中,并且所有衍生指标均为本体内属性加工而来,因此每条业务规则哪一数据项不达标可以直接输出,所有衍生指标也可以快速溯源,给出本体的源头的数据来源,解决规则与结果脱离,为业务应用场景提供解释性。
[0062] 本申请实施例公开了一种具体的基于规则引擎的数据处理方法,参见图4所示,该方法包括:
[0063] 步骤S21:获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则。
[0064] 步骤S22:通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体。
[0065] 其中,关于上述步骤S21、步骤S22更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0066] 步骤S23:将所述预设业务规则进行装载,并利用装载后得到的目标规则对不同的所述实体中的本体逐一进行匹配判断,以便对所述实体进行批量处理。
[0067] 本申请实施例中,获取到元数据的相关数据后,规则引擎则会对数据进行装载。在规则装载时,为了提升预设业务规则对实体的判断效率,利用装载后得到的目标规则对不同的所述实体中的本体逐一进行匹配判断,以便对所述实体进行批量处理。例如,如果针对纳税人张三、李四、王五,需要判断的本体条件均为纳税人类型、所属行业和含税销售收入,如果想要确定出纳税人类型属于个体工商户、所属行业为服务业、含税销售收入为2万元的纳税人则逐一对其中的本体进行判断,如先判断纳税人类型筛选出符合条件的纳税人,然后判断所属行业,最后判断含税销售收入。
[0068] 步骤S24:若当前本体与所述目标规则匹配判断完成,则在所述当前本体放置标志位,并继续利用所述目标规则与其他本体进行匹配判断。
[0069] 需要指出的是,若当前本体与所述目标规则匹配判断完成,则在所述当前本体放置标志位,并继续利用所述目标规则与其他本体进行匹配判断。例如,如果针对纳税人张三,有两条数据:一条包括张三的纳税人类型和所属行业,另一条包括张三的所属行业和含税销售收入,则将与纳税人张三相关的数据进行合并,得到包括张三的纳税人类型、所属行业和含税销售收入的一条数据,如此一来,将同实例的不同目标规则进行合并和消歧,提升了规则的运行效率。
[0070] 步骤S25:当所有本体匹配判断完成后,将所述实体中具有相同的实例,并且所述实例对应不同的目标规则进行合并,然后对所述实例中合并后的目标规则进行预编译。
[0071] 本申请实施例中,将具有相同实例的对应的目标规则进行合并可以提升规则的运行效率,然后对合并后的规则进行预编译可以加快规则的运行速度。
[0072] 步骤S26:将所述预设业务规则中出现的本体与所述实体中的本体进行对齐,并判断所述实体是否满足所述预设业务规则。
[0073] 本申请实施例中,针对每一个被装载的实体,对其进行批量的规则运算。具体的,首先针对被装载实体批量执行预加载的规则,也即预编译的目标规则;随后,不同于以往方法,在规则计算过程中同时进行实例、规则、政策和建议基于语义嵌入的对齐和匹配,从而实现实体的规则运算。
[0074] 步骤S27:若所述实体满足所述预设业务规则,则根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果。
[0075] 当在进行实体判断时,如果实体满足预设业务规则,例如纳税人张三的纳税人类型属于个体工商户、所属行业为服务业、含税销售收入为2万元,而在规则判断时则要输出纳税人类型属于个体工商户、所属行业为服务业、含税销售收入不低于1万元的纳税人,则张三符合条件获取相应的数据支撑将其进行数据的输出。
[0076] 步骤S28:若所述实体不满足所述预设业务规则,则输出所述实体中不满足所述预设业务规则的数据项,并对所述数据项提供用于使所述实体满足所述预设业务规则的补全建议。
[0077] 本申请实施例中,规则执行完毕后,根据输入数据与形式化规则之间的关系,推导出满足条件和不满足条件的理由,包括业务规则的源头政策与优惠规则等。如果实体不满足所述预设业务规则,例如,在一种具体的实施方式中,存在纳税人张三的数据,包括纳税人类型属于个体工商户和所属行业为服务业,在进行规则判断时缺少纳税人的含税销售金额,则张三对应的数据属于缺少预设业务规则判断条件的数据,则对输出张三的数据提出需要补全含税销售金额的补全建议。在另一种具体的实施方式中,存在纳税人张三的数据,包括纳税人类型属于个体工商户、所属行业为服务业含税销售收入为8000元,如果在规则判断时需要输出纳税人类型属于个体工商户、所属行业为服务业、含税销售收入不低于1万元的纳税人,则张三不符合条件,因其收入小于规则规定的收入,则给出建议提升销售额以缴纳税款。
[0078] 本申请中,首先获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则;其中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体;然后通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体;将所述预设业务规则进行装载,并利用装载后得到的目标规则对不同的所述实体中的本体逐一进行匹配判断,以便对所述实体进行批量处理;若当前本体与所述目标规则匹配判断完成,则在所述当前本体放置标志位,并继续利用所述目标规则与其他本体进行匹配判断;当所有本体匹配判断完成后,将所述实体中具有相同的实例,并且所述实例对应不同的目标规则进行合并,然后对所述实例中合并后的目标规则进行预编译;将所述预设业务规则中出现的本体与所述实体中的本体进行对齐,并判断所述实体是否满足所述预设业务规则;若所述实体满足所述预设业务规则,则根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果。若所述实体不满足所述预设业务规则,则输出所述实体中不满足所述预设业务规则的数据项,并对所述数据项提供用于使所述实体满足所述预设业务规则的补全建议。可见,统一规则引擎数据接入格式,通过获取元数据对应的相关数据,装载为对应的数据实体作为数据接入,抛弃了以往的面向数据表的数据输入模式。保证了数据接入的统一性,使得在线、离线、近线等不同运行环境可以使用一套规则代码执行,不仅不同环境下仅需维护一份规则代码,而且不同环境数据源甚至可以混合使用,大幅提高规则引擎的适用范围。根据预设业务规则对实体进行批量的规则运算,实现了集约化批量规则计算,大幅提升业务规则运算效率。另外,通过本申请的技术方案,由于规则执行时每个实体中的每个数据项数据都已加载进入内存中,并且所有衍生指标均为本体内属性加工而来,因此每条业务规则哪一数据项不达标可以直接输出,所有衍生指标也可以快速溯源,给出本体的源头的数据来源,解决规则与结果脱离,为业务应用场景提供解释性。
[0079] 示例性的,如图5所示为一种具体的基于规则引擎进行数据处理的系统示意图。1、元数据定义层负责进行本体及衍生指标的定义。如定义纳税人本体中含有纳税人类型、纳税人所属行业、纳税人所有发票集合等事实元素;定义发票本体中含有销购双方纳税人识别号、发票类型、销售方行业、是否为销项发票等事实元素;衍生指标定义时给出如何由本体的哪些元素如何加工和聚合而成,给出计算规则但是不给出具体的数据,如发票税收分类编码前X位。2、规则定义层负责根据实际的税务规则,拆解成具体的规则,并且配置为规则引擎预定义的语法,并且将规则传递至规则引擎进行语法检查与语法测试,通过后将规则存储至规则引擎。3、数据装填层负责将元数据定义层中的本体映射为实际数据库中的字段、接口中的字段,并且形成不同的配置项,以配合不同环境接入规则引擎时将实体取数JAVA程序包、接口地址与映射表元数据提供给规则引擎,使规则引擎能够在计算过程中获取到本体实例数据。4、(1)规则引擎中规则装载负责规则装载、同实例规则条件合并以及规则预编译三个。首先,将规则结构化表示并载入系统;随后将实例规则判断进行批量处理,对于同一条件进行一次判断后放置标志位,并对同实例规则进行合并和消歧以提升规则的运行效率;最后对规则进行预编译,加快规则运行速度。(2)规则引擎中数据装载用于对不同数据源的数据进行结构化表示和读取。该模块拿到其他层定义的数据后,根据不同的配置项执行不同的取数逻辑,实现批量装载实例数据。同时,在数据装载时模块自动化的对不同的数据源进行不同的存取数据操作,所支持的数据源包括数据仓库、MYSQL业务库、在线接口等。(3)规则引擎中规则运算模块针对每一个被装载实体,对其进行批量的规则运算。首先针对被装载实体批量执行预加载的规则;随后,在规则计算过程中同时进行实例、规则、政策和建议基于语义嵌入的对齐和匹配,从而实现基于实例及运算规则获取相应的数据支撑及补全建议,以对符合的政策输出数据支撑、对于不符合的政策给出补全建议。(4)规则引擎中结果返回模块针对规则引擎计算的结果,将数据按照用户要求,提供多种形式的数据返回(接口、数仓、业务数据库)。(5)规则引擎中还包括其他功能项模块,该模块为传统的规则引擎拥有的模块,包括规则语法检查、规则语法测试、规则语法存储、规则定时任务、规则执行状态监控等平台功能,满足规则引擎基本业务使用。
[0080] 需要指出的是,数据装载位置可以改变,目前实体定义层、数据装载层为保证系统之间的解耦和运行性能,其本身只提供了本体的定义、衍生规则的加工方式、本体元素与实际数据表数据库接口之间的映射关系,本身并不负责取数,如果增加一个取数模块在规则引擎前取数并提供给规则引擎,也可以提升可解释性、数据标准统一等,但是此举由于一条规则一次加载一次数据,会严重降低系统的运行性能。另外,规则引擎直接获取数据表,不定义实体定义层、数据装载层,本质上规则引擎获取的也是数据表的数据,只不过规则引擎通过此举可以利用不同的配置快速接入不同的业务场景,提升业务接入效率,统一不同场景的规则语法。
[0081] 相应的,本申请实施例还公开了一种基于规则引擎的数据处理装置,参见图6所示,该装置包括:
[0082] 数据获取模块11,用于获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则;其中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体;
[0083] 实体装载模块12,用于通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体;
[0084] 规则运算模块13,用于根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果。
[0085] 其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0086] 由此可见,通过本实施例的上述方案,首先获取不同的数据源以统一的数据装填格式进行装填后确定出的元数据和预设业务规则;其中,所述元数据为用于记录与所述预设业务规则相关的本体以及利用所述元数据中的目标本体进行聚合确定出相应的衍生指标的元数据;所述目标本体为根据用户需求从所述元数据中选择的本体;然后通过预设数据获取方式获取与所述元数据对应的相关数据,并将所述相关数据装载为对应的实体;最后根据所述预设业务规则对所述实体进行批量的规则运算,以返回相应的处理结果。可见,统一规则引擎数据接入格式,通过获取元数据对应的相关数据,装载为对应的数据实体作为数据接入,抛弃了以往的面向数据表的数据输入模式。保证了数据接入的统一性,使得在线、离线、近线等不同运行环境可以使用一套规则代码执行,不仅不同环境下仅需维护一份规则代码,而且不同环境数据源甚至可以混合使用,大幅提高规则引擎的适用范围。根据预设业务规则对实体进行批量的规则运算,实现了集约化批量规则计算,大幅提升业务规则运算效率。另外,通过本申请的技术方案,由于规则执行时每个实体中的每个数据项数据都已加载进入内存中,并且所有衍生指标均为本体内属性加工而来,因此每条业务规则哪一数据项不达标可以直接输出,所有衍生指标也可以快速溯源,给出本体的源头的数据来源,解决规则与结果脱离,为业务应用场景提供解释性。
[0087] 进一步的,本申请实施例还公开了一种电子设备,图7是根据一示例性实施例示出的电子设备20结构图,图中内容不能认为是对本申请的使用范围的任何限制。
[0088] 图7为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的基于规则引擎的数据处理方法中的相关步骤。另外,本实施例中的电子设备20具体可以为计算机。
[0089] 本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
[0090] 另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,数据223可以包括各种各样的数据。存储方式可以是短暂存储或者永久存储。
[0091] 其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的基于规则引擎的数据处理方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
[0092] 进一步的,本申请实施例还公开了一种计算机可读存储介质,这里所说的计算机可读存储介质包括随机存取存储器(Random Access Memory,RAM)、内存、只读存储器(Read‑Only Memory,ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、磁碟或者光盘或技术领域内所公知的任意其他形式的存储介质。其中,所述计算机程序被处理器执行时实现前述基于规则引擎的数据处理方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0093] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0094] 结合本文中所公开的实施例描述的基于规则引擎的数据处理或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0095] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0096] 以上对本发明所提供的一种基于规则引擎的数据处理方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。