CN112395339B - ***间数据准入校验方法、装置、计算机设备和存储介质 - Google Patents

***间数据准入校验方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN112395339B
CN112395339B CN202011254849.3A CN202011254849A CN112395339B CN 112395339 B CN112395339 B CN 112395339B CN 202011254849 A CN202011254849 A CN 202011254849A CN 112395339 B CN112395339 B CN 112395339B
Authority
CN
China
Prior art keywords
system data
node
determining
way tree
java object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011254849.3A
Other languages
English (en)
Other versions
CN112395339A (zh
Inventor
王鑫
林仁山
葛伟
朱华兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suning Cloud Computing Co Ltd
Original Assignee
Suning Cloud Computing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suning Cloud Computing Co Ltd filed Critical Suning Cloud Computing Co Ltd
Priority to CN202011254849.3A priority Critical patent/CN112395339B/zh
Publication of CN112395339A publication Critical patent/CN112395339A/zh
Priority to CA3138761A priority patent/CA3138761A1/en
Application granted granted Critical
Publication of CN112395339B publication Critical patent/CN112395339B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及***间数据准入领域,具体涉及一种***间数据准入校验方法、装置、计算机设备和存储介质。所述方法包括:在接收到来自任一个外部***的***数据时,将***数据转换为包括一个或多个待校验目标的java对象,获取***数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出***数据的准入校验结果。本发明实施例能够提高对***数据的准入校验效率。

Description

***间数据准入校验方法、装置、计算机设备和存储介质
技术领域
本申请涉及***间数据准入领域,特别是涉及一种***间数据准入校验方法、装置、计算机设备和存储介质。
背景技术
***间的数据交互方式纷繁复杂,数据格式也很多样,比如有 JSON(JavaScriptObject Notation,JS对象简谱)、XML(eXtensible Markup Language,可扩展标记语言)等格式,这些数据的分拣、过滤、校验带来较大的工作,会产生越来越多的判断分支,逻辑运算,即便经过了重构拆解,圈复杂度(Cyclomatic complexity)依然居高不下,给后期维护也带来了挑战。
目前***间数据准入的校验模式,一般是通过硬编码的方式实现的,这种方式的不足主要有:1、为了实现复杂的业务规则(例如组合关系、优先级排列等)而导致条件分支愈发臃肿;2、当需要调整业务规则时需要在各种条件分支中相应修改,但是这样容易改出问题,维护性差;3、要实现业务规则的调整必须走上线发布流程,然而这种调整方式周期很长;4、每接入一个新的***数据,都需要为其定制一套规则代码,这样做的重复性工作多,效率低下。
发明内容
本发明针对现有技术的缺点,提供了一种***间数据准入校验方法、装置、计算机设备和存储介质,本发明实施例能够提高对***数据的准入校验效率。
本发明根据第一方面提供了一种***间数据准入校验方法,在一个实施例中,该方法应用于接入通用校验框架的***,该***对接有多个外部***;该方法包括:
***在接收到来自任一个外部***的***数据时,将***数据转换为 java对象,java对象包括一个或多个待校验目标;
获取***数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;
在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成;
根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出***数据的准入校验结果,根节点是多叉树中有对应子节点且没有对应父节点的节点。
在一个实施例中,将***数据转换为java对象的步骤,包括:
确定***数据的数据格式;
使用预置的若干个转换器中与数据格式对应的转换器将***数据转换为java对象。
在一个实施例中,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则的步骤,包括:
根据业务标识查询预配置的规则配置表,得到业务标识的规则配置列表;
从规则配置列表中获取java对象包括的每个待校验目标对应的校验规则。
在一个实施例中,根据java对象包括的多个待校验目标构建多叉树的步骤,包括:
确定***数据的长度,使用与***数据的长度匹配的方式构建初始多叉树,初始多叉树包括的节点与多个待校验目标一一对应;
按照自顶向下的遍历顺序确定初始多叉树包括的各个节点对应的填充顺序;
依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树。
在一个实施例中,使用与***数据的长度匹配的方式构建初始多叉树的步骤,包括:
若***数据的长度满足预设条件,使用递归算法构建初始多叉树;
若***数据的长度不满足预设条件,使用栈操作构建初始多叉树。
在一个实施例中,根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值的步骤,包括:
确定多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定根节点的各个子节点对应的计算顺序;
按照计算顺序依次确定根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;
根据根节点的所有子节点的值确定出根节点的值。
在一个实施例中,该方法还包括:在java对象包括的待校验目标的数量为一个时,根据java对象包括的待校验目标所对应的校验规则对该待校验目标进行准入校验以确定出***数据的准入校验结果。
本发明根据第二方面提供了一种***间数据准入校验装置,在一个实施例中,该装置包括:
转换模块,用于在接收到来自任一个外部***的***数据时,将***数据转换为java对象,java对象包括一个或多个待校验目标;
校验规则获取模块,用于获取***数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;
多叉树构建模块,用于在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成;
第一校验结果确定模块,用于根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出***数据的准入校验结果,根节点是多叉树中有对应子节点且没有对应父节点的节点。
本发明根据第三方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一方法的实施例的步骤。
本发明根据第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一方法的实施例的步骤。
在本发明实施例中,***在接收到来自其对接的任一个外部***的***数据时,对该***数据进行过滤,即将***数据转换为包括一个或多个待校验目标的java对象,然后获取***数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出***数据的准入校验结果。其中,通用校验框架能够为***提供一套通用的准入校验功能,***基于该框架能够对接收到的***数据进行过滤和校验,并且可以针对不同外部***的数据进行准入校验规则独立配置,支持配置规则的优先级且可以组合成或、与等关系,校验规则可配置的方式相比以往硬编码的方式可读性好且易维护,显著提高对***数据的准入校验效率。
附图说明
图1为一个实施例中一种***间数据准入校验方法的流程示意图;
图2为一个实施例中一种***间数据准入校验方法的应用环境图;
图3为一个实施例中通用校验框架的功能示意图;
图4为一个实施例中将***数据转换为java对象的流程示意图;
图5为一个实施例中多叉树对象设计的示意图;
图6为一个实施例中挑选手机示例对应的多叉树的示意图;
图7为一个实施例中一种***间数据准入校验装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本发明提供了一种***间数据准入校验方法。在一个实施例中,如图 1所示,该方法包括以下步骤:
S110:在接收到来自任一个外部***的***数据时,将***数据转换为java对象,java对象包括一个或多个待校验目标。
在本实施例中,该***间数据准入校验方法的应用环境可以如图2所示,其中,***10(以下称为本***)需要与多个外部***(外部***是指本***之外的***),如外部***21、22和23等进行数据交互,其中,本***和各外部***可以分别用独立的服务器或者是多个服务器组成的服务器集群来实现,此外,本***和各外部***也可以是部署在同一服务器中。具体地,可以通过在本***中集成通用校验框架的代码以及引入相关依赖(比如规则引擎的依赖包)实现在本***中接入通用校验框架。进一步地,如图3所示,该框架提供了数据适配器、规则解析和业务校验等功能,可以通过刷脚本或者其他方式来建立模型即规则配置表,之后为本***与各个要对接的外部***之间存在的业务场景定义相关报文数据,并且在规则配置表中为各个业务场景配置相应的校验规则。
在本实施例中,在本***接收任一个外部***的***数据之前,该方法还包括:建立规则配置表;为本***及其需要对接的任一个外部***之间所存在的每个业务场景分配唯一的业务标识,为每个业务标识定义对应的***数据,每个***数据包括一个或多个待校验信息;在规则配置表中为该任一个外部***对应的每个业务场景配置对应的规则校验列表。
传统方案因为接入的各个外部***的逻辑都是独立的,无法实现逻辑复用,因此当本***需要接入新的外部***时,需要针对新接入的外部***的数据定制开发相应的逻辑,粗略估计需要10人天的工作量。在本实施例中,通过将本***接入通用校验框架,当需要接入新的外部***时,只需要为该新的外部***的各个业务场景配置相应的校验规则即可开始使用,减少大量分支定制开发,显著提升本***的拓展性,工作人员(如开发人员)不需要再专门为新的外部***开发相应的校验逻辑,只要为新的外部***的业务场景梳理出具体规则并进行相应配置即可,这样可以将工作量缩短为2-3人天,大大减轻了工作人员的工作量。
进一步地,该方法还包括:在本***需要对接新的外部***时,为本***与该新的外部***之间所存在的每个业务场景分配唯一的业务标识,为每个业务标识定义对应的***数据,每个***数据包括一个或多个待校验信息;在规则配置表中为每个业务标识配置对应的规则校验列表,每个规则校验列表包括与该业务标识对应的***数据包括的每个待校验信息所对应的校验规则。
具体地,针对已接入外部***的数据规则变更,传统方案因为逻辑都在代码中,无法动态调整,只能走版本进行发布操作,少则半月多则一个多月(具体视版本周期而定),使用该框架后,由于框架逻辑是通用的,只是具体配置的校验规则不同,所以要变更校验规则时不需要走发布,在该框架支持的范围内(绝大部分逻辑判断都能支持)可以直接修改校验规则,修改后会直接应用最新的规则进行数据校验,做到了实时生效。此外,由于校验规则的配置都是精确匹配,因此只要配置正确,那么在校验时就不存在误判等情况。
示例性地,在MySQL数据库中建立的规则配置表的配置信息可以如下表一所示:
表一:
Figure BDA0002772796280000071
示例性地,某个业务场景中需要挑选手机,挑选要求是手机的品牌要是“华为”,手机的价格在“2000到6000之间”,手机的屏幕大小“大于5寸或分辨率达到1080p以上”,手机的屏幕材质必须是“AMOLED”。将上述挑选要求写成表达式可以是:品牌=“华为”&&价格>=2000&& 价格<=6000&&((屏幕大小>5寸||屏幕分辨率>1080p)&&材质=“AMOLED”。在定义报文数据时,可以定义phone(表示手机)和display (表示手机的屏幕)等对象。为该业务场景配置的规则配置列表可以如下表二所示:
表二:
Figure BDA0002772796280000072
当本***接收到来自任何一个外部***的***数据(***数据是指本***对接的任一个外部***发送的数据,比如报文数据)后,将***数据转换为包括一个或多个待校验目标的java对象。
进一步地,在一个实施方式中,将***数据转换为java对象的步骤,包括:确定***数据的数据格式;使用预置的若干个转换器中与数据格式对应的转换器将***数据转换为java对象。其中,java对象包括一个或多个待校验目标,比如“phone”、“phone.brand”、“phone.price”、“phoneDisplay”、“display.size”、“display.resolution”以及“display.material”等目标。
具体地,如图4所示,本***可以结合各类Java对象转换API (ApplicationProgramming Interface,应用程序接口),根据入参对象 (***数据)的格式(比如,json、xml、map等格式)选择相应的适配器 (即转换器),将入参对象统一转换为Java对象。
S120:获取***数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则。
在本实施例中,每个业务场景都对应一个唯一的业务标识,***可以通过获取***数据对应的业务标识,进而根据业务标识来获取每个待校验目标对应的预配置的校验规则。
在一个实施方式中,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则的步骤,包括:
根据业务标识查询预配置的规则配置表,得到业务标识的规则配置列表;
从规则配置列表中获取java对象包括的每个待校验目标对应的校验规则。
具体地,业务标识是规则配置表中的一个字段,不同业务标识对应各自的记录,互不影响。因此,***通过业务标识可以在规则配置表中查询得到该业务标识对应的记录即规则配置列表(比如表二所示的列表),然后从规则配置列表中即可获得每个待校验目标对应的校验规则(或者称为表达式)。
比如,从表二所示的规则配置列表中可以获得“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”。
S130:在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树。多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成。
在本实施例中,如果java对象包括的待校验目标的数量只是一个,那么本***可以直接根据java对象包括的那个待校验目标所对应的校验规则对该待校验目标进行准入校验以确定出***数据的准入校验结果。比如,在另一个挑选手机的业务场景中,只要求手机的品牌是华为,那么对应的校验规则可以是phone.brand=“huawei”,因此只需要获取***数据中 phone.brand这一待校验目标对应的信息,然后判断该信息是否为“huawei”,如果是,那么确定***数据的准入校验结果为校验成功,反之,如果该信息不是“huawei”,比如是“xiaomi”,则确定***数据的准入校验结果为校验失败。进一步地,如果java对象包括的待校验目标的数量为多个(比如2个,3个,7个等等),那么需要根据java对象包括的多个待校验目标来构建多叉树,之后再对多叉树进行解析以对各个待校验目标进行校验。
在一个实施方式中,根据java对象包括的多个待校验目标构建多叉树的步骤,包括:
确定***数据的长度,使用与***数据的长度匹配的方式构建初始多叉树,初始多叉树包括的节点与多个待校验目标一一对应;
按照自顶向下的遍历顺序确定初始多叉树包括的各个节点对应的填充顺序;
依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树。
在本实施方式中,多叉树的对象设计可以示例性地如图5所示。其中,图中的filterCode和parentCode以及children这三个成员会构成一棵树 (比如上述挑选手机示例中的手机这一对象及其包括的品牌、价格、屏幕等内部对象、和屏幕这一对象及其包括的大小、分辨率、材质等内部对象构成一棵树)(filterCode为本节点id,parentCode为filterCode的父节点id,children为本节点的孩子节点),而其他的成员均和校验规则有关,树上的一个节点代表一个校验规则,存放待校验目标的实例数据以及校验规则,此外通过表达式引擎(用于计算出树中各节点对应的值)校验得到的结果也会保存下来。在计算树的根节点的值时,一个包含子节点的父节点需要进行规则校验时,必须保证所有的子节点都已经计算完成(特别说明,在短路的情况下可以直接得到结果而提前返回),为此,树中每个节点都会对应有图中所示的ruleExecuteFlag这一成员,该成员用于表征与其对应的节点是否经过校验。
进一步地,构建初始多叉树时通常使用递归的方式来进行构建,然而,使用递归来构建多叉树时在方法的调用和返回都会有额外的开销,调用层次过深很可能导致OOM(OutOfMemory,内存溢出),因此,在本实施方式中,本***在构建初始多叉树时,根据***数据的长度来选用递归的方式或栈操作的方式来构建初始多叉树,避免出现上述问题,比如当***数据的长度满足预设条件(比如长度达到预设阈值)时,就使用递归算法构建初始多叉树,当***数据的长度不满足预设条件时,使用栈操作构建初始多叉树。该预设条件可以根据实际运行情况进行调整,以达到最优性能。
在构建出初始多叉树之后,本***再采用自顶向下的顺序依次为初始多叉树中的各个节点填充相应的对象实例。具体可以是层次遍历该初始多叉树,从其根节点出发,找到所有子节点,然后通过反射机制来调用父节点对象实例的getter方法进而得到子节点对象实例,直至底层。进一步地,这里可以通过map来缓存方法以减少性能开销,可以采用ConcurrentHashMap(是一个并发散列映射表)来保存,保存形式是 key-value形式,其中key为类的成员变量名,value是对应变量名的 getter方法的Method对象,当需要获取子节点对象实例时先从Map中取,如果Map中没有,再通过反射工具类调用Java反射API获取到Method对象,并将获取到的该Method对象缓存到Map中。
S140:根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出***数据的准入校验结果。其中,根节点是多叉树中有对应子节点且没有对应父节点的节点。
在本实施例中,本***根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值的步骤,可以包括:确定多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定根节点的各个子节点对应的计算顺序;按照计算顺序依次确定根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;根据根节点的所有子节点的值确定出根节点的值。具体地,本***在计算根节点的值时,采用的顺序是自底向上的顺序,从子节点开始向上逐层计算表达式,并替换父节点表达式上的结果,最终汇聚到根节点。计算过程中,如果遇到一个子问题还未求解,那么就先求解子问题,如果子问题已经求解,那么直接使用子问题的解,递归该过程,最终得到根节点的值。
比如,在一个示例中,上述挑选手机的业务场景所生成的多叉树可以如图6所示,图中树的顶层“手机”是树的根节点,该根节点对应的子节点是处于树第二层的“品牌”、“价格”和“屏幕”这三个节点,其中,“屏幕”这个节点既是“手机”的子节点同时也是一个父节点(即对应有子节点的节点),其对应的子节点是处于树底层的“大小”、“分辨率”和“材质”这三个节点。从图中也可以知道树中各个节点对应的校验规则 (或者称为表达式),比如,“手机”这一节点的表达式是“brand&&price &&display”,“品牌”这一节点的表达式是“phone.brand=“huawei””。对于树中不作为父节点的节点,如“品牌”和“价格”这两个节点,本***在计算出其对应的值后,替换根节点表达式中与其名称对应的值为true 或者false,例如计算出“品牌”的值为true,那么就将根节点“phone”的表达式“brand&&price&&display”中“brand”的替换为true,其他子节点即“价格”或“屏幕”的值计算出来后,也是进行上述操作,当根节点对应的所有子节点都计算完成之后,根节点的属性都会被替换掉,例如品牌、价格和屏幕等三个子节点均被替换成了true或者false,这样可以通过计算根节点表达式得到最终结果。需要说明的是,“屏幕”这个节点既作为根节点的子节点同时又作为其他一些节点(即“大小”、“分辨率”和“材质”这三个节点)的父节点,计算时需要先计算出其对应的所有子节点的值,之后才能计算出其对应的值,计算方式同上述根节点的计算方式相同。
进一步地,在计算节点的值时,如果需要减少不必要的节点计算,可以应用短路开关,在某个节点计算完表达式并进行父节点替换时,进行这一层的逻辑判断,例如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。
基于相同的发明构思,本发明还提供了一种***间数据准入校验装置。在一个实施例中,如图7所示,该***间数据准入校验装置包括以下模块:
转换模块110,用于在接收到来自任一个外部***的***数据时,将***数据转换为java对象,java对象包括一个或多个待校验目标;
校验规则获取模块120,用于获取***数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;
多叉树构建模块130,用于在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成;
第一校验结果确定模块140,用于根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出***数据的准入校验结果,根节点是多叉树中有对应子节点且没有对应父节点的节点。
在一个实施例中,转换模块,包括:
格式确定子模块,用于确定***数据的数据格式;
转换子模块,用于使用预置的若干个转换器中与数据格式对应的转换器将***数据转换为java对象。
在一个实施例中,校验规则获取模块,包括:
查询子模块,用于根据业务标识查询预配置的规则配置表,得到业务标识的规则配置列表;
校验规则获取子模块,用于从规则配置列表中获取java对象包括的每个待校验目标对应的校验规则。
在一个实施例中,多叉树构建模块,包括:
初始树构建子模块,用于确定***数据的长度,使用与***数据的长度匹配的方式构建初始多叉树,初始多叉树包括的节点与多个待校验目标一一对应;
填充顺序确定子模块,用于按照自顶向下的遍历顺序确定初始多叉树包括的各个节点对应的填充顺序;
填充子模块,用于依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树。
在一个实施例中,初始树构建子模块,还用于在***数据的长度满足预设条件时,使用递归算法构建初始多叉树,在***数据的长度不满足预设条件时,使用栈操作构建初始多叉树。
在一个实施例中,第一校验结果确定模块,包括:
计算顺序确定子模块,用于确定多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定根节点的各个子节点对应的计算顺序;
子节点值确定子模块,用于按照计算顺序依次确定根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;
根节点值确定子模块,用于根据根节点的所有子节点的值确定出根节点的值。
在一个实施例中,该装置还包括第一校验结果确定模块;第一校验结果确定模块,用于在java对象包括的待校验目标的数量为一个时,根据 java对象包括的待校验目标所对应的校验规则对该待校验目标进行准入校验以确定出***数据的准入校验结果。
关于***间数据准入校验装置的具体限定可以参见上文中对于***间数据准入校验方法的限定,在此不再赘述。上述***间数据准入校验装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图8 所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储规则配置表等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种***间数据准入校验方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
在接收到来自任一个外部***的***数据时,将***数据转换为java 对象,java对象包括一个或多个待校验目标;获取***数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成;根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出***数据的准入校验结果,根节点是多叉树中有对应子节点且没有对应父节点的节点。
在一个实施例中,处理器执行计算机程序,实现将***数据转换为 java对象时,还实现以下步骤:
确定***数据的数据格式;使用预置的若干个转换器中与数据格式对应的转换器将***数据转换为java对象。
在一个实施例中,处理器执行计算机程序,实现根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则时,还实现以下步骤:
根据业务标识查询预配置的规则配置表,得到业务标识的规则配置列表;从规则配置列表中获取java对象包括的每个待校验目标对应的校验规则。
在一个实施例中,处理器执行计算机程序,实现根据java对象包括的多个待校验目标构建多叉树时,还实现以下步骤:
确定***数据的长度,使用与***数据的长度匹配的方式构建初始多叉树,初始多叉树包括的节点与多个待校验目标一一对应;按照自顶向下的遍历顺序确定初始多叉树包括的各个节点对应的填充顺序;依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树。
在一个实施例中,处理器执行计算机程序,实现使用与***数据的长度匹配的方式构建初始多叉树时,还实现以下步骤:
若***数据的长度满足预设条件,使用递归算法构建初始多叉树;若***数据的长度不满足预设条件,使用栈操作构建初始多叉树。
在一个实施例中,处理器执行计算机程序,实现根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值时,还实现以下步骤:
确定多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定根节点的各个子节点对应的计算顺序;按照计算顺序依次确定根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;根据根节点的所有子节点的值确定出根节点的值。
在一个实施例中,处理器执行计算机程序时,还实现以下步骤:
在java对象包括的待校验目标的数量为一个时,根据java对象包括的待校验目标所对应的校验规则对该待校验目标进行准入校验以确定出***数据的准入校验结果。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
在接收到来自任一个外部***的***数据时,将***数据转换为java 对象,java对象包括一个或多个待校验目标;获取***数据的业务标识,根据业务标识获取java对象包括的每个待校验目标对应的预配置的校验规则;在java对象包括的待校验目标的数量为多个时,根据java对象包括的多个待校验目标构建多叉树;多叉树包括多个节点,该多个节点与多个待校验目标一一对应,多叉树由至少一个父节点以及每个父节点对应的子节点组成;根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值,根据根节点的值确定出***数据的准入校验结果,根节点是多叉树中有对应子节点且没有对应父节点的节点。
在一个实施例中,计算机程序被处理器执行,将***数据转换为java 对象时,还实现以下步骤:
确定***数据的数据格式;使用预置的若干个转换器中与数据格式对应的转换器将***数据转换为java对象。
在一个实施例中,计算机程序被处理器执行,根据业务标识获取java 对象包括的每个待校验目标对应的预配置的校验规则时,还实现以下步骤:
根据业务标识查询预配置的规则配置表,得到业务标识的规则配置列表;从规则配置列表中获取java对象包括的每个待校验目标对应的校验规则。
在一个实施例中,计算机程序被处理器执行,根据java对象包括的多个待校验目标构建多叉树时,还实现以下步骤:
确定***数据的长度,使用与***数据的长度匹配的方式构建初始多叉树,初始多叉树包括的节点与多个待校验目标一一对应;按照自顶向下的遍历顺序确定初始多叉树包括的各个节点对应的填充顺序;依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树。
在一个实施例中,计算机程序被处理器执行,使用与***数据的长度匹配的方式构建初始多叉树时,还实现以下步骤:
若***数据的长度满足预设条件,使用递归算法构建初始多叉树;若***数据的长度不满足预设条件,使用栈操作构建初始多叉树。
在一个实施例中,计算机程序被处理器执行,根据java对象包括的每个待校验目标对应的校验规则确定出多叉树的根节点的值时,还实现以下步骤:
确定多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定根节点的各个子节点对应的计算顺序;按照计算顺序依次确定根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;根据根节点的所有子节点的值确定出根节点的值。
在一个实施例中,计算机程序被处理器执行时,还实现以下步骤:
在java对象包括的待校验目标的数量为一个时,根据java对象包括的待校验目标所对应的校验规则对该待校验目标进行准入校验以确定出***数据的准入校验结果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (7)

1.一种***间数据准入校验方法,其特征在于,所述方法应用于接入通用校验框架的***,所述***对接有多个外部***;所述方法包括:
所述***在接收到来自任一个所述外部***的***数据时,将所述***数据转换为java对象,所述java对象包括多个待校验目标;
获取所述***数据的业务标识,根据所述业务标识获取所述java对象包括的每个待校验目标对应的预配置的校验规则;
在所述java对象包括的待校验目标的数量为多个时,根据所述java对象包括的多个待校验目标构建多叉树;所述多叉树包括多个节点,所述多个节点与所述多个待校验目标一一对应,所述多叉树由至少一个父节点以及每个父节点对应的子节点组成;其中,所述根据所述java对象包括的多个待校验目标构建多叉树的步骤,包括:确定***数据的长度,使用与所述***数据的长度匹配的方式构建初始多叉树,所述初始多叉树包括的节点与所述多个待校验目标一一对应;按照自顶向下的遍历顺序确定所述初始多叉树包括的各个节点对应的填充顺序;依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树;其中,所述使用与所述***数据的长度匹配的方式构建初始多叉树的步骤,包括:若所述***数据的长度满足预设条件,使用递归算法构建初始多叉树;若所述***数据的长度不满足预设条件,使用栈操作构建初始多叉树;
根据所述java对象包括的每个待校验目标对应的校验规则确定出所述多叉树的根节点的值,根据所述根节点的值确定出所述***数据的准入校验结果,所述根节点是所述多叉树中有对应子节点且没有对应父节点的节点;其中,所述根据所述java对象包括的每个待校验目标对应的校验规则确定出所述多叉树的根节点的值的步骤,包括:确定所述多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定所述根节点的各个子节点对应的计算顺序;按照计算顺序依次确定所述根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;根据所述根节点的所有子节点的值确定出所述根节点的值。
2.如权利要求1所述的方法,其特征在于,
所述将所述***数据转换为java对象的步骤,包括:
确定所述***数据的数据格式;
使用预置的若干个转换器中与所述数据格式对应的转换器将所述***数据转换为java对象。
3.如权利要求1所述的方法,其特征在于,
所述根据所述业务标识获取所述java对象包括的每个待校验目标对应的预配置的校验规则的步骤,包括:
根据所述业务标识查询预配置的规则配置表,得到所述业务标识的规则配置列表;
从所述规则配置列表中获取所述java对象包括的每个待校验目标对应的校验规则。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:在所述java对象包括的待校验目标的数量为一个时,根据所述java对象包括的待校验目标所对应的校验规则对所述待校验目标进行准入校验以确定出所述***数据的准入校验结果。
5.一种***间数据准入校验装置,其特征在于,包括:
转换模块,用于在接收到来自任一个外部***的***数据时,将所述***数据转换为java对象,所述java对象包括多个待校验目标;
校验规则获取模块,用于获取所述***数据的业务标识,根据所述业务标识获取所述java对象包括的每个待校验目标对应的预配置的校验规则;
多叉树构建模块,用于在所述java对象包括的待校验目标的数量为多个时,根据所述java对象包括的多个待校验目标构建多叉树;所述多叉树包括多个节点,所述多个节点与所述多个待校验目标一一对应,所述多叉树由至少一个父节点以及每个父节点对应的子节点组成;其中,所述根据所述java对象包括的多个待校验目标构建多叉树的步骤,包括:确定***数据的长度,使用与所述***数据的长度匹配的方式构建初始多叉树,所述初始多叉树包括的节点与所述多个待校验目标一一对应;按照自顶向下的遍历顺序确定所述初始多叉树包括的各个节点对应的填充顺序;依次为各个填充顺序对应的节点填充与其相应的对象实例以得到多叉树;其中,所述使用与所述***数据的长度匹配的方式构建初始多叉树的步骤,包括:若所述***数据的长度满足预设条件,使用递归算法构建初始多叉树;若所述***数据的长度不满足预设条件,使用栈操作构建初始多叉树;
第一校验结果确定模块,用于根据所述java对象包括的每个待校验目标对应的校验规则确定出所述多叉树的根节点的值,根据所述根节点的值确定出所述***数据的准入校验结果,所述根节点是所述多叉树中有对应子节点且没有对应父节点的节点;其中,所述根据所述java对象包括的每个待校验目标对应的校验规则确定出所述多叉树的根节点的值的步骤,包括:确定所述多叉树中根节点的所有子节点,按照自底向上的遍历顺序确定所述根节点的各个子节点对应的计算顺序;按照计算顺序依次确定所述根节点的子节点所对应的待校验目标,根据与该待校验目标对应的校验规则对该子节点进行校验以确定出该节点的值;根据所述根节点的所有子节点的值确定出所述根节点的值。
6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
CN202011254849.3A 2020-11-11 2020-11-11 ***间数据准入校验方法、装置、计算机设备和存储介质 Active CN112395339B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011254849.3A CN112395339B (zh) 2020-11-11 2020-11-11 ***间数据准入校验方法、装置、计算机设备和存储介质
CA3138761A CA3138761A1 (en) 2020-11-11 2021-11-12 Method, device, computer equipment and storage medium for verifying inter-system data admission

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011254849.3A CN112395339B (zh) 2020-11-11 2020-11-11 ***间数据准入校验方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN112395339A CN112395339A (zh) 2021-02-23
CN112395339B true CN112395339B (zh) 2023-04-21

Family

ID=74599841

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011254849.3A Active CN112395339B (zh) 2020-11-11 2020-11-11 ***间数据准入校验方法、装置、计算机设备和存储介质

Country Status (2)

Country Link
CN (1) CN112395339B (zh)
CA (1) CA3138761A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115065636A (zh) * 2022-04-29 2022-09-16 北京达佳互联信息技术有限公司 数据分发方法、装置、电子设备及存储介质
CN117788057B (zh) * 2024-02-27 2024-06-11 浙江恒中养老产业发展有限公司 一种补贴发放及使用方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8345707B2 (en) * 2009-06-03 2013-01-01 Voxer Ip Llc Method for synchronizing data maintained at a plurality of nodes
CN103544074B (zh) * 2012-07-09 2016-06-29 阿里巴巴集团控股有限公司 一种业务的校验方法及装置
CN106845279A (zh) * 2017-02-17 2017-06-13 宇龙计算机通信科技(深圳)有限公司 安全服务管理实体ssme模块的校验方法及装置

Also Published As

Publication number Publication date
CN112395339A (zh) 2021-02-23
CA3138761A1 (en) 2022-05-11

Similar Documents

Publication Publication Date Title
CN112148509A (zh) 数据处理方法、装置、服务器及计算机可读存储介质
CN112395339B (zh) ***间数据准入校验方法、装置、计算机设备和存储介质
CN108256870B (zh) 基于拓扑结构生成描述信息及更新、数据处理方法和装置
CN111694547A (zh) 一种基于数据状态变化的自动编码数据处理应用设计工具
CN107330014B (zh) 一种数据表的创建方法与设备
CN106557307B (zh) 业务数据的处理方法及处理***
CN111240772B (zh) 一种基于区块链的数据处理方法、装置及存储介质
CN103678591A (zh) 自动执行多业务单据统计处理的装置和方法
CN111078573A (zh) 一种测试报文的生成方法及装置
CN112052157B (zh) 测试报文的构造方法、装置及***
CN115525534A (zh) 基于swagger的接口测试的测试用例生成方法、生成平台
CN111124883B (zh) 一种基于树形表格的测试用例库引入方法、***及设备
CN109117152B (zh) 服务生成***及方法
CN110806973A (zh) 一种接口报文的自动生成方法及装置
CN115391188A (zh) 一种场景测试用例生成方法、装置、设备及存储介质
CN113868138A (zh) 测试数据的获取方法、***、设备及存储介质
CN113342647A (zh) 一种测试数据的生成方法及装置
CN114860566A (zh) 源代码测试方法、装置、电子设备及存储介质
CN115543485B (zh) 一种数据转换配置生成方法、装置、计算机设备及介质
CN116739397B (zh) 一种新能源指标的动态管理方法
CN116560722B (zh) 运维流程处理方法、装置、电子设备及存储介质
CN117435177B (zh) 应用程序接口构建方法、***、设备及存储介质
CN117992133A (zh) 包管理器适配方法、装置、设备、存储介质及程序产品
CN117112424A (zh) 测试用例的生成方法、装置、设备、介质和产品
CN116185385A (zh) 一种可视化接口管理方法、***、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant