系统间数据准入校验方法、装置、计算机设备和存储介质与流程

文档序号:24028425发布日期:2021-02-23 22:15阅读:69来源:国知局
系统间数据准入校验方法、装置、计算机设备和存储介质与流程

[0001]
本申请涉及系统间数据准入领域,特别是涉及一种系统间数据准入校验方法、装置、计算机设备和存储介质。


背景技术:

[0002]
系统间的数据交互方式纷繁复杂,数据格式也很多样,比如有json(javascript object notation,js对象简谱)、xml(extensible markup language,可扩展标记语言)等格式,这些数据的分拣、过滤、校验带来较大的工作,会产生越来越多的判断分支,逻辑运算,即便经过了重构拆解,圈复杂度(cyclomatic complexity)依然居高不下,给后期维护也带来了挑战。
[0003]
目前系统间数据准入的校验模式,一般是通过硬编码的方式实现的,这种方式的不足主要有:1、为了实现复杂的业务规则(例如组合关系、优先级排列等)而导致条件分支愈发臃肿;2、当需要调整业务规则时需要在各种条件分支中相应修改,但是这样容易改出问题,维护性差;3、要实现业务规则的调整必须走上线发布流程,然而这种调整方式周期很长;4、每接入一个新的系统数据,都需要为其定制一套规则代码,这样做的重复性工作多,效率低下。


技术实现要素:

[0004]
本发明针对现有技术的缺点,提供了一种系统间数据准入校验方法、装置、计算机设备和存储介质,本发明实施例能够提高对系统数据的准入校验效率。
[0005]
本发明根据第一方面提供了一种系统间数据准入校验方法,在一个实施例中,该方法应用于接入通用校验框架的系统,该系统对接有多个外部系统;该方法包括:
[0006]
系统在接收到来自任一个外部系统的系统数据时,将系统数据转换为java对象,java对象包括一个或多个待校验目标;
[0007]
获取系统数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;
[0008]
在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成;
[0009]
根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出系统数据的准入校验结果,根节点是多叉树中有对应子节点且没有对应父节点的节点。
[0010]
在一个实施例中,将系统数据转换为java对象的步骤,包括:
[0011]
确定系统数据的数据格式;
[0012]
使用预置的若干个转换器中与数据格式对应的转换器将系统数据转换为java对象。
[0013]
在一个实施例中,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则的步骤,包括:
[0014]
根据业务标识查询预配置的规则配置表,得到业务标识的规则配置列表;
[0015]
从规则配置列表中获取java对象包括的每个待校验目标对应的校验规则。
[0016]
在一个实施例中,根据java对象包括的多个待校验目标构建多叉树的步骤,包括:
[0017]
确定系统数据的长度,使用与系统数据的长度匹配的方式构建初始多叉树,初始多叉树包括的节点与多个待校验目标一一对应;
[0018]
按照自顶向下的遍历顺序确定初始多叉树包括的各个节点对应的填充顺序;
[0019]
依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树。
[0020]
在一个实施例中,使用与系统数据的长度匹配的方式构建初始多叉树的步骤,包括:
[0021]
若系统数据的长度满足预设条件,使用递归算法构建初始多叉树;
[0022]
若系统数据的长度不满足预设条件,使用栈操作构建初始多叉树。
[0023]
在一个实施例中,根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值的步骤,包括:
[0024]
确定多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定根节点的各个子节点对应的计算顺序;
[0025]
按照计算顺序依次确定根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;
[0026]
根据根节点的所有子节点的值确定出根节点的值。
[0027]
在一个实施例中,该方法还包括:在java对象包括的待校验目标的数量为一个时,根据java对象包括的待校验目标所对应的校验规则对该待校验目标进行准入校验以确定出系统数据的准入校验结果。
[0028]
本发明根据第二方面提供了一种系统间数据准入校验装置,在一个实施例中,该装置包括:
[0029]
转换模块,用于在接收到来自任一个外部系统的系统数据时,将系统数据转换为java对象,java对象包括一个或多个待校验目标;
[0030]
校验规则获取模块,用于获取系统数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;
[0031]
多叉树构建模块,用于在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成;
[0032]
第一校验结果确定模块,用于根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出系统数据的准入校验结果,根节点是多叉树中有对应子节点且没有对应父节点的节点。
[0033]
本发明根据第三方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一方法的实施例的步骤。
[0034]
本发明根据第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,
计算机程序被处理器执行时实现上述任一方法的实施例的步骤。
[0035]
在本发明实施例中,系统在接收到来自其对接的任一个外部系统的系统数据时,对该系统数据进行过滤,即将系统数据转换为包括一个或多个待校验目标的java对象,然后获取系统数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出系统数据的准入校验结果。其中,通用校验框架能够为系统提供一套通用的准入校验功能,系统基于该框架能够对接收到的系统数据进行过滤和校验,并且可以针对不同外部系统的数据进行准入校验规则独立配置,支持配置规则的优先级且可以组合成或、与等关系,校验规则可配置的方式相比以往硬编码的方式可读性好且易维护,显著提高对系统数据的准入校验效率。
附图说明
[0036]
图1为一个实施例中一种系统间数据准入校验方法的流程示意图;
[0037]
图2为一个实施例中一种系统间数据准入校验方法的应用环境图;
[0038]
图3为一个实施例中通用校验框架的功能示意图;
[0039]
图4为一个实施例中将系统数据转换为java对象的流程示意图;
[0040]
图5为一个实施例中多叉树对象设计的示意图;
[0041]
图6为一个实施例中挑选手机示例对应的多叉树的示意图;
[0042]
图7为一个实施例中一种系统间数据准入校验装置的结构框图;
[0043]
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
[0044]
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
[0045]
本发明提供了一种系统间数据准入校验方法。在一个实施例中,如图1所示,该方法包括以下步骤:
[0046]
s110:在接收到来自任一个外部系统的系统数据时,将系统数据转换为java对象,java对象包括一个或多个待校验目标。
[0047]
在本实施例中,该系统间数据准入校验方法的应用环境可以如图2所示,其中,系统10(以下称为本系统)需要与多个外部系统(外部系统是指本系统之外的系统),如外部系统21、22和23等进行数据交互,其中,本系统和各外部系统可以分别用独立的服务器或者是多个服务器组成的服务器集群来实现,此外,本系统和各外部系统也可以是部署在同一服务器中。具体地,可以通过在本系统中集成通用校验框架的代码以及引入相关依赖(比如规则引擎的依赖包)实现在本系统中接入通用校验框架。进一步地,如图3所示,该框架提供了数据适配器、规则解析和业务校验等功能,可以通过刷脚本或者其他方式来建立模型即规则配置表,之后为本系统与各个要对接的外部系统之间存在的业务场景定义相关报文数据,并且在规则配置表中为各个业务场景配置相应的的校验规则。
[0048]
在本实施例中,在本系统接收任一个外部系统的系统数据之前,该方法还包括:建立规则配置表;为本系统及其需要对接的任一个外部系统之间所存在的每个业务场景分配唯一的业务标识,为每个业务标识定义对应的系统数据,每个系统数据包括一个或多个待校验信息;在规则配置表中为该任一个外部系统对应的每个业务场景配置对应的规则校验列表。
[0049]
传统方案因为接入的各个外部系统的逻辑都是独立的,无法实现逻辑复用,因此当本系统需要接入新的外部系统时,需要针对新接入的外部系统的数据定制开发相应的逻辑,粗略估计需要10人天的工作量。在本实施例中,通过将本系统接入通用校验框架,当需要接入新的外部系统时,只需要为该新的外部系统的各个业务场景配置相应的校验规则即可开始使用,减少大量分支定制开发,显著提升本系统的拓展性,工作人员(如开发人员)不需要再专门为新的外部系统开发相应的校验逻辑,只要为新的外部系统的业务场景梳理出具体规则并进行相应配置即可,这样可以将工作量缩短为2-3人天,大大减轻了工作人员的工作量。
[0050]
进一步地,该方法还包括:在本系统需要对接新的外部系统时,为本系统与该新的外部系统之间所存在的每个业务场景分配唯一的业务标识,为每个业务标识定义对应的系统数据,每个系统数据包括一个或多个待校验信息;在规则配置表中为每个业务标识配置对应的规则校验列表,每个规则校验列表包括与该业务标识对应的系统数据包括的每个待校验信息所对应的校验规则。
[0051]
具体地,针对已接入外部系统的数据规则变更,传统方案因为逻辑都在代码中,无法动态调整,只能走版本进行发布操作,少则半月多则一个多月(具体视版本周期而定),使用该框架后,由于框架逻辑是通用的,只是具体配置的校验规则不同,所以要变更校验规则时不需要走发布,在该框架支持的范围内(绝大部分逻辑判断都能支持)可以直接修改校验规则,修改后会直接应用最新的规则进行数据校验,做到了实时生效。此外,由于校验规则的配置都是精确匹配,因此只要配置正确,那么在校验时就不存在误判等情况。
[0052]
示例性地,在mysql数据库中建立的规则配置表的配置信息可以如下表一所示:
[0053]
表一:
[0054]
[0055]
示例性地,某个业务场景中需要挑选手机,挑选要求是手机的品牌要是“华为”,手机的价格在“2000到6000之间”,手机的屏幕大小“大于5寸或分辨率达到1080p以上”,手机的屏幕材质必须是“amoled”。将上述挑选要求写成表达式可以是:品牌=“华为”&&价格>=2000&&价格<=6000&&((屏幕大小>5寸||屏幕分辨率>1080p)&&材质=“amoled”。在定义报文数据时,可以定义phone(表示手机)和display(表示手机的屏幕)等对象。为该业务场景配置的规则配置列表可以如下表二所示:
[0056]
表二:
[0057][0058]
当本系统接收到来自任何一个外部系统的系统数据(系统数据是指本系统对接的任一个外部系统发送的数据,比如报文数据)后,将系统数据转换为包括一个或多个待校验目标的java对象。
[0059]
进一步地,在一个实施方式中,将系统数据转换为java对象的步骤,包括:确定系统数据的数据格式;使用预置的若干个转换器中与数据格式对应的转换器将系统数据转换为java对象。其中,java对象包括一个或多个待校验目标,比如“phone”、“phone.brand”、“phone.price”、“phonedisplay”、“display.size”、“display.resolution”以及“display.material”等目标。
[0060]
具体地,如图4所示,本系统可以结合各类java对象转换api(application programming interface,应用程序接口),根据入参对象(系统数据)的格式(比如,json、xml、map等格式)选择相应的适配器(即转换器),将入参对象统一转换为java对象。
[0061]
s120:获取系统数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则。
[0062]
在本实施例中,每个业务场景都对应一个唯一的业务标识,系统可以通过获取系统数据对应的业务标识,进而根据业务标识来获取每个待校验目标对应的预配置的校验规则。
[0063]
在一个实施方式中,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则的步骤,包括:
[0064]
根据业务标识查询预配置的规则配置表,得到业务标识的规则配置列表;
[0065]
从规则配置列表中获取java对象包括的每个待校验目标对应的校验规则。
[0066]
具体地,业务标识是规则配置表中的一个字段,不同业务标识对应各自的记录,互不影响。因此,系统通过业务标识可以在规则配置表中查询得到该业务标识对应的记录即
规则配置列表(比如表二所示的列表),然后从规则配置列表中即可获得每个待校验目标对应的校验规则(或者称为表达式)。
[0067]
比如,从表二所示的规则配置列表中可以获得“phone”的校验规则为phone.brand=“huawei”&&phone.price>=2000&&phone.price<=6000&&phonedisplay,“phone.brand”的校验规则为phone.brand=“huawei”,“phone.price”的校验规则为phone.price>=2000,“phonedisplay”的校验规则为(display.size>5||display.resolution>1080p)&&display.material=“amoled”。
[0068]
s130:在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树。多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成。
[0069]
在本实施例中,如果java对象包括的待校验目标的数量只是一个,那么本系统可以直接根据java对象包括的那个待校验目标所对应的校验规则对该待校验目标进行准入校验以确定出系统数据的准入校验结果。比如,在另一个挑选手机的业务场景中,只要求手机的品牌是华为,那么对应的校验规则可以是phone.brand=“huawei”,因此只需要获取系统数据中phone.brand这一待校验目标对应的信息,然后判断该信息是否为“huawei”,如果是,那么确定系统数据的准入校验结果为校验成功,反之,如果该信息不是“huawei”,比如是“xiaomi”,则确定系统数据的准入校验结果为校验失败。进一步地,如果java对象包括的待校验目标的数量为多个(比如2个,3个,7个等等),那么需要根据java对象包括的多个待校验目标来构建多叉树,之后再对多叉树进行解析以对各个待校验目标进行校验。
[0070]
在一个实施方式中,根据java对象包括的多个待校验目标构建多叉树的步骤,包括:
[0071]
确定系统数据的长度,使用与系统数据的长度匹配的方式构建初始多叉树,初始多叉树包括的节点与多个待校验目标一一对应;
[0072]
按照自顶向下的遍历顺序确定初始多叉树包括的各个节点对应的填充顺序;
[0073]
依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树。
[0074]
在本实施方式中,多叉树的对象设计可以示例性地如图5所示。其中,图中的filtercode和parentcode以及children这三个成员会构成一棵树(比如上述挑选手机示例中的手机这一对象及其包括的品牌、价格、屏幕等内部对象、和屏幕这一对象及其包括的大小、分辨率、材质等内部对象构成一棵树)(filtercode为本节点id,parentcode为filtercode的父节点id,children为本节点的孩子节点),而其他的成员均和校验规则有关,树上的一个节点代表一个校验规则,存放待校验目标的实例数据以及校验规则,此外通过表达式引擎(用于计算出树中各节点对应的值)校验得到的结果也会保存下来。在计算树的根节点的值时,一个包含子节点的父节点需要进行规则校验时,必须保证所有的子节点都已经计算完成(特别说明,在短路的情况下可以直接得到结果而提前返回),为此,树中每个节点都会对应有图中所示的ruleexecuteflag这一成员,该成员用于表征与其对应的节点是否经过校验。
[0075]
进一步地,构建初始多叉树时通常使用递归的方式来进行构建,然而,使用递归来构建多叉树时在方法的调用和返回都会有额外的开销,调用层次过深很可能导致oom(outofmemory,内存溢出),因此,在本实施方式中,本系统在构建初始多叉树时,根据系统
数据的长度来选用递归的方式或栈操作的方式来构建初始多叉树,避免出现上述问题,比如当系统数据的长度满足预设条件(比如长度达到预设阈值)时,就使用递归算法构建初始多叉树,当系统数据的长度不满足预设条件时,使用栈操作构建初始多叉树。该预设条件可以根据实际运行情况进行调整,以达到最优性能。
[0076]
在构建出初始多叉树之后,本系统再采用自顶向下的顺序依次为初始多叉树中的各个节点填充相应的对象实例。具体可以是层次遍历该初始多叉树,从其根节点出发,找到所有子节点,然后通过反射机制来调用父节点对象实例的getter方法进而得到子节点对象实例,直至底层。进一步地,这里可以通过map来缓存方法以减少性能开销,可以采用concurrenthashmap(是一个并发散列映射表)来保存,保存形式是key-value形式,其中key为类的成员变量名,value是对应变量名的getter方法的method对象,当需要获取子节点对象实例时先从map中取,如果map中没有,再通过反射工具类调用java反射api获取到method对象,并将获取到的该method对象缓存到map中。
[0077]
s140:根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出系统数据的准入校验结果。其中,根节点是多叉树中有对应子节点且没有对应父节点的节点。
[0078]
在本实施例中,本系统根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值的步骤,可以包括:确定多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定根节点的各个子节点对应的计算顺序;按照计算顺序依次确定根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;根据根节点的所有子节点的值确定出根节点的值。具体地,本系统在计算根节点的值时,采用的顺序是自底向上的顺序,从子节点开始向上逐层计算表达式,并替换父节点表达式上的结果,最终汇聚到根节点。计算过程中,如果遇到一个子问题还未求解,那么就先求解子问题,如果子问题已经求解,那么直接使用子问题的解,递归该过程,最终得到根节点的值。
[0079]
比如,在一个示例中,上述挑选手机的业务场景所生成的多叉树可以如图6所示,图中树的顶层“手机”是树的根节点,该根节点对应的子节点是处于树第二层的“品牌”、“价格”和“屏幕”这三个节点,其中,“屏幕”这个节点既是“手机”的子节点同时也是一个父节点(即对应有子节点的节点),其对应的子节点是处于树底层的“大小”、“分辨率”和“材质”这三个节点。从图中也可以知道树中各个节点对应的校验规则(或者称为表达式),比如,“手机”这一节点的表达式是“brand&&price&&display”,“品牌”这一节点的表达式是“phone.brand=“huawei
””
。对于树中不作为父节点的节点,如“品牌”和“价格”这两个节点,本系统在计算出其对应的值后,替换根节点表达式中与其名称对应的值为true或者false,例如计算出“品牌”的值为true,那么就将根节点“phone”的表达式“brand&&price&&display”中“brand”的替换为true,其他子节点即“价格”或“屏幕”的值计算出来后,也是进行上述操作,当根节点对应的所有子节点都计算完成之后,根节点的属性都会被替换掉,例如品牌、价格和屏幕等三个子节点均被替换成了true或者false,这样可以通过计算根节点表达式得到最终结果。需要说明的是,“屏幕”这个节点既作为根节点的子节点同时又作为其他一些节点(即“大小”、“分辨率”和“材质”这三个节点)的父节点,计算时需要先计算出其对应的所有子节点的值,之后才能计算出其对应的值,计算方式同上述根节点的计算方
式相同。
[0080]
进一步地,在计算节点的值时,如果需要减少不必要的节点计算,可以应用短路开关,在某个节点计算完表达式并进行父节点替换时,进行这一层的逻辑判断,例如true||(x),则x不需要计算,整个表达式替换为true,反之false&&(x)同理。比如,图6中的“屏幕节点”的表达式为“display.size||display.resolution&&display.material”,对于该表达式中的“display.size||display.resolution”,如果“display.size”(或“display.resolution”)为true,那么不需要判断“display.resolution”即可直接将“display.size||display.resolution”替换为true。
[0081]
基于相同的发明构思,本发明还提供了一种系统间数据准入校验装置。在一个实施例中,如图7所示,该系统间数据准入校验装置包括以下模块:
[0082]
转换模块110,用于在接收到来自任一个外部系统的系统数据时,将系统数据转换为java对象,java对象包括一个或多个待校验目标;
[0083]
校验规则获取模块120,用于获取系统数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;
[0084]
多叉树构建模块130,用于在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成;
[0085]
第一校验结果确定模块140,用于根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出系统数据的准入校验结果,根节点是多叉树中有对应子节点且没有对应父节点的节点。
[0086]
在一个实施例中,转换模块,包括:
[0087]
格式确定子模块,用于确定系统数据的数据格式;
[0088]
转换子模块,用于使用预置的若干个转换器中与数据格式对应的转换器将系统数据转换为java对象。
[0089]
在一个实施例中,校验规则获取模块,包括:
[0090]
查询子模块,用于根据业务标识查询预配置的规则配置表,得到业务标识的规则配置列表;
[0091]
校验规则获取子模块,用于从规则配置列表中获取java对象包括的每个待校验目标对应的校验规则。
[0092]
在一个实施例中,多叉树构建模块,包括:
[0093]
初始树构建子模块,用于确定系统数据的长度,使用与系统数据的长度匹配的方式构建初始多叉树,初始多叉树包括的节点与多个待校验目标一一对应;
[0094]
填充顺序确定子模块,用于按照自顶向下的遍历顺序确定初始多叉树包括的各个节点对应的填充顺序;
[0095]
填充子模块,用于依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树。
[0096]
在一个实施例中,初始树构建子模块,还用于在系统数据的长度满足预设条件时,使用递归算法构建初始多叉树,在系统数据的长度不满足预设条件时,使用栈操作构建初始多叉树。
[0097]
在一个实施例中,第一校验结果确定模块,包括:
[0098]
计算顺序确定子模块,用于确定多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定根节点的各个子节点对应的计算顺序;
[0099]
子节点值确定子模块,用于按照计算顺序依次确定根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;
[0100]
根节点值确定子模块,用于根据根节点的所有子节点的值确定出根节点的值。
[0101]
在一个实施例中,该装置还包括第一校验结果确定模块;第一校验结果确定模块,用于在java对象包括的待校验目标的数量为一个时,根据java对象包括的待校验目标所对应的校验规则对该待校验目标进行准入校验以确定出系统数据的准入校验结果。
[0102]
关于系统间数据准入校验装置的具体限定可以参见上文中对于系统间数据准入校验方法的限定,在此不再赘述。上述系统间数据准入校验装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0103]
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储规则配置表等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种系统间数据准入校验方法。
[0104]
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0105]
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
[0106]
在接收到来自任一个外部系统的系统数据时,将系统数据转换为java对象,java对象包括一个或多个待校验目标;获取系统数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成;根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出系统数据的准入校验结果,根节点是多叉树中有对应子节点且没有对应父节点的节点。
[0107]
在一个实施例中,处理器执行计算机程序,实现将系统数据转换为java对象时,还实现以下步骤:
[0108]
确定系统数据的数据格式;使用预置的若干个转换器中与数据格式对应的转换器将系统数据转换为java对象。
[0109]
在一个实施例中,处理器执行计算机程序,实现根据业务标识获取java对象包括
的每个待校验目标对应的预配置的校验规则时,还实现以下步骤:
[0110]
根据业务标识查询预配置的规则配置表,得到业务标识的规则配置列表;从规则配置列表中获取java对象包括的每个待校验目标对应的校验规则。
[0111]
在一个实施例中,处理器执行计算机程序,实现根据java对象包括的多个待校验目标构建多叉树时,还实现以下步骤:
[0112]
确定系统数据的长度,使用与系统数据的长度匹配的方式构建初始多叉树,初始多叉树包括的节点与多个待校验目标一一对应;按照自顶向下的遍历顺序确定初始多叉树包括的各个节点对应的填充顺序;依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树。
[0113]
在一个实施例中,处理器执行计算机程序,实现使用与系统数据的长度匹配的方式构建初始多叉树时,还实现以下步骤:
[0114]
若系统数据的长度满足预设条件,使用递归算法构建初始多叉树;若系统数据的长度不满足预设条件,使用栈操作构建初始多叉树。
[0115]
在一个实施例中,处理器执行计算机程序,实现根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值时,还实现以下步骤:
[0116]
确定多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定根节点的各个子节点对应的计算顺序;按照计算顺序依次确定根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;根据根节点的所有子节点的值确定出根节点的值。
[0117]
在一个实施例中,处理器执行计算机程序时,还实现以下步骤:
[0118]
在java对象包括的待校验目标的数量为一个时,根据java对象包括的待校验目标所对应的校验规则对该待校验目标进行准入校验以确定出系统数据的准入校验结果。
[0119]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0120]
在接收到来自任一个外部系统的系统数据时,将系统数据转换为java对象,java对象包括一个或多个待校验目标;获取系统数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成;根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出系统数据的准入校验结果,根节点是多叉树中有对应子节点且没有对应父节点的节点。
[0121]
在一个实施例中,计算机程序被处理器执行,将系统数据转换为java对象时,还实现以下步骤:
[0122]
确定系统数据的数据格式;使用预置的若干个转换器中与数据格式对应的转换器将系统数据转换为java对象。
[0123]
在一个实施例中,计算机程序被处理器执行,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则时,还实现以下步骤:
[0124]
根据业务标识查询预配置的规则配置表,得到业务标识的规则配置列表;从规则
配置列表中获取java对象包括的每个待校验目标对应的校验规则。
[0125]
在一个实施例中,计算机程序被处理器执行,根据java对象包括的多个待校验目标构建多叉树时,还实现以下步骤:
[0126]
确定系统数据的长度,使用与系统数据的长度匹配的方式构建初始多叉树,初始多叉树包括的节点与多个待校验目标一一对应;按照自顶向下的遍历顺序确定初始多叉树包括的各个节点对应的填充顺序;依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树。
[0127]
在一个实施例中,计算机程序被处理器执行,使用与系统数据的长度匹配的方式构建初始多叉树时,还实现以下步骤:
[0128]
若系统数据的长度满足预设条件,使用递归算法构建初始多叉树;若系统数据的长度不满足预设条件,使用栈操作构建初始多叉树。
[0129]
在一个实施例中,计算机程序被处理器执行,根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值时,还实现以下步骤:
[0130]
确定多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定根节点的各个子节点对应的计算顺序;按照计算顺序依次确定根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;根据根节点的所有子节点的值确定出根节点的值。
[0131]
在一个实施例中,计算机程序被处理器执行时,还实现以下步骤:
[0132]
在java对象包括的待校验目标的数量为一个时,根据java对象包括的待校验目标所对应的校验规则对该待校验目标进行准入校验以确定出系统数据的准入校验结果。
[0133]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0134]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0135]
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1