一种应用数据校验方法、装置及电子设备与流程

文档序号:15076546发布日期:2018-08-01 01:52阅读:122来源:国知局
本申请属于终端应用开发的数据处理
技术领域
:,尤其涉及一种应用数据校验方法、装置及电子设备。
背景技术
::随着业务的不断发展和扩展,目前终端应用所涉及的业务领域也越来越广泛,所获取以及需要处理的数据也越来越多。在应用程序运行的过程中,通常会产生一些事先无法确定的数据,如用户在表单中的输入数据、需要在运行时经过计算才能得到的数据等。这些应用本地产生的数据是否符合预定的规则决定了应用下一步该如何执行。因此目前在设计和编写应用程序时,通常需要加入对上述数据校验的逻辑和过程。例如一个典型的示例中,应用展示出表单让用户填写个人信息,其中手机号码这一字段要求是11位0-9阿拉伯数字。如果用户的输入数据经过校验后符合要求,则程序正常执行下一个流程(如跳转下一项填写表单或向填写的手机号码发送验证码等);反之则展示错误信息告知用户。目前主流使用的校验方案主要分为两个步骤:第一步,读取待校验数据;第二步,对每个待校验的数据,判断其是否符合规则。但是,随着应用的不断开发、维护,当需要增加新的来源的待校验数据或数据校验规则时,现有中这种读取每一项具体的底层业务数据并利用该底层业务数据的规则进行校验的方式则出现许多不足。例如,不同来源的待校验数据读取方式不同,每增加一种新来源的待校验数据时,需要相应地增加读取这种数据的代码逻辑。因此现有的方案中,数据读取这一步骤可扩展性很弱,不够灵活,无法统一处理数据读取的逻辑。并且,数据的校验规则可能会随着业务的发展发生变化。如校验用户输入的手机号码,开始的规则是“11位0-9阿拉伯数字”,后来规则增加为“11位0-9阿拉伯数字且以数字1开头”。现有的方案在处理这种情况时,需要在数据校验的过程中新增一个分支逻辑来判断读取到的数据是否符合新增的规则。例如示意伪代码如下:definemobilenumber;//待校验数据if(mobilenumber不是11位0-9的阿拉伯数字)return失败;//下面为新增的规则校验的分支逻辑if(mobilenumber不是以1开头)return失败;return成功;现有技术中本地数据校验的方法由于不同来源的待校验数据读取逻辑和校验规则不同,且随着业务的发展可能发生变化,每一种业务数据都需对应的校验逻辑,无法统一处理数据读取的逻辑,数据读取和校验部分扩展性较弱,不够灵活。同时,不同数据的校验规则不同,体现为校验规则多且杂,数据校验的处理较为复杂。使用现有方案,待校验数据和对应的校验规则也不能得到有序的组织和管理,数据校验实现代码复用性较差,数据校验执行以及管理效率较低。技术实现要素:本申请目的在于提供一种应用数据校验方法、装置及电子设备,将本地待校验的数据、校验规则进行了抽象,将数据读取和数据来源隔离,数据读取逻辑得到统一,解决了应用程序在进行本地数据校验时,由于运行时产生数据的不确定性所带来的数据校验业务逻辑繁杂、实现代码难于维护等问题。本申请提供的一种应用数据校验方法、装置及电子设备是这样实现的:一种应用数据校验方法,所述方法包括:接收数据对象的校验请求,所述数据对象符合定义待校验数据的规定数据特征;获取与所述数据对象匹配的校验对象,所述校验对象包括预先构造待校验数据和所述待校验数据的至少一个校验规则;调用所述校验对象的方法,根据相应的校验规则对所述数据对象进行校验;返回所述数据对象的校验结果的标志值。一种应用数据校验装置,所述装置包括:数据获取模块,用于接收数据对象的校验请求,所述数据对象符合定义待校验数据的规定数据特征;匹配模块,用于构造和保存与所述数据对象匹配的校验对象,所述校验对象包括预先构造的待校验数据和所述待校验数据的至少一个校验规则;校验模块,用于调用所述校验对象的方法,根据相应的校验规则对所述数据对象进行校验;结果返回模块,用于返回所述数据对象的校验结果的标志值。一种电子设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器被配置成,用于接收数据对象的校验请求,所述数据对象符合定义待校验数据的规定数据特征;还用于获取与所述数据对象匹配的校验对象,所述校验对象包括预先构造的待校验数据和所述待校验数据的至少一个校验规则;还用于调用所述校验对象的方法,根据相应中的校验规则对所述数据对象进行校验;还用于返回所述数据对象的校验结果的标志值。一种实现本地数据校验的方法,包括:以键值对的数据格式存储向其注册的待校验数据和所述待校验数据满足的校验规则,所述键值对中所述待校验数据为键、与所述待校验数据对应的校验实体为值;其中,对注册的待校验数据和对应的校验规则进行数据封装生成的校验实体;在接收到应用产生的本地待校验数据时,所述本地待校验数据符合的规定数据特征,从所述字典数据库中获取与所述本地待校验数据匹配的校验对象;调用所述校验对象的方法,根据相应的校验规则对所述本地待校验数据进行校验,并返回校验结果的标志值。本申请提供的一种应用数据校验方法、装置及电子设备,将待校验的数据、校验规则进行了抽象,定义数据和规则的特征,将常规复杂多变的待校验的业务数据抽象为具有规定特征的数据同时将其校验规则和校验过程逻辑封装到校验实体中,不再关心具体的数据和具体的规则,将数据读取和数据来源隔离,使得待校验数据和对应的校验规则得到有序的组织和管理。本申请实施方案中,可以预先通过抽象的方式统一定义待校验数据和校验规则,并通过指定的数据格式方式把数据和规则统一管理起来,判断逻辑收拢到校验的目标校验对象内部。使用本方案时,可以预先注册待校验数据和对应的校验规则,并定义返回调用的方法用于接收校验结果。注册完毕后,进行数据校验时可以通过暴露的接口调用校验实体和校验方法。然后检验其返回值,便可得知数据是否符合校验规则,完成数据校验。利用本申请实施方案,通过给定的待校验数据可以方便高效地查询、修改其校验规则,且便于校验规则的增删,并使得待校验数据和对应的校验规则得到有序的组织和管理,校验数据读取逻辑得到统一,应用校验运作流程就变得清晰可控,可以有效提高数据校验执行以及待校验数据和其校验规则的管理效率,大大提高数据校验的扩展性和管理、维护的便利性。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请提供的一种应用数据校验方法一种实施例的方法流程图;图2是本申请提供的一个具体的校验实体类的示意类图;图3是本申请一个实施例中保存了待校验数据至校验实体的映射关心的自定义字典类的一个示意类图;图4是本申请提供的使用校验器件数据校验时所使用的自定义字典的结构示意图;图5是本申请一个实施例中自定义字典类数据和规则的管理部分整体示意类图;图6是本申请提供的一种利用本申请所述方法进行数据校验的一个处理流程示意图;图7是本申请提供的一种应用数据校验装置一种实施例的模块结构示意图;图8是本申请提供的所述装置的另一种实施例的模块结构示意图;图9是本申请一个示例场景中对用户在客户端填写的本地数据进行校验的场景示意图。具体实施方式为了使本
技术领域
:的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。图1是本申请所述一种应用数据校验方法一种实施例的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理的实施环境)。以下为了清楚起见,以具体的一个移动终端应用校验用户在页面输入的数据为实施应用场景进行说明。但是,本领域技术人员能够理解到,可以将本方案的实质精神应用到其他依校验应用、终端设备、系统等运行时产生的本地数据校验的实施场景中。需要理解的是,所述实施本地数据校验的“本地”,在一个示例中通常的可以理解为终端设备中的应用无须通过任何形式与其它程序进行数据传输,或没有通过任何形式依赖其它程序或者被其它程序依赖。所述的运行时可以是指的程序运行过程中的上下文,包括但不限于程序运行过程中的数据、变量、代码、环境等。通过本申请提供的实施方式,通过抽象的方式统一定义待校验数据和校验规则特性,满足(实现)了抽象的待校验数据所规定特征的对象均可利用内置的数据读取逻辑来读取数据,进而进行后续的数据校验,并通过自定义字典的方式把数据和规则统一管理起来,判断逻辑收拢到校验实体对象内部将校验过程封装到校验实体类中,校验的逻辑得以复用,可以通过暴露回调接口的方式告知外部校验结果,剥离了底层具体不同业务数据校验的复杂性,使得数据校验逻辑统一、清晰可控,大大提高数据校验的扩展性和管理、维护的便利性。所述的扩展性,通常是指无须大规模修改原有系统架构和原有实现逻辑完成新逻辑的添加或者旧逻辑的删除的能力。具体的一种实施例如图1所示,本申请提供的一种应用数据校验方法的一种实施例中,所述方法可以包括:s1:接收数据对象的校验请求,所述数据对象符合定义待校验数据的规定数据特征。本申请实施例所述的数据对象可以被定义为符合定义所述待校验数据时所需满足的规则数据特征。本实施例中所述的待校验数据可以被抽象“任何可以提供一个字符串类型的数据的对象”,甚至泛化为“任何可以提供一个任意实例的对象”。在实际处理中,可以根据需要验证的业务的数据对象需要满足哪些规定的数据特征,然后将符合这些规定数据特征的数据统一定义为一种待校验数据。规定了待校验数据的特征,在不同的业务场景中,可以定义设置凡是具备(满足)了该规则数据特征的数据均可以在本申请实施方案中被校验。因此当新增一种待校验数据时,可以只要通过简单的改造使这种数据满足规定的条件,即可利用本申请内置的数据读取方法,统一完成数据读取。这种方式可以把数据读取和数据来源隔离,数据读取不再关心数据来源,逻辑得到统一。以objective-c程序设计语言为例,可以定义如下接口,规定待校验数据的特征。@protocolaevalidatable<nsobject>@required-(nsstring*)validationtext;@end上述是待校验数据特征的一个程序设计语言示意描述。@required这一行标明若某对象声称自己满足本特征,则它必须实现下一行定义的方法。-(nsstring*)validationtext这一行是特征本体。即如果一个对象实现了这个方法,返回一个nsstring(字符串)类型的变量,那么它就满足了特征。@protocolaevalidatable<nsobject>定义了待校验数据的特征的名字,aevalidatable。也即所有满足(实现)了上述接口所规定特征的对象均可利用系统内置的数据读取逻辑,读取数据,进而进行后续的数据校验。在具体实现方式中,定义了接口同时即规定了待校验数据的特征,规定数据特征的这个过程到具体的程序设计语言上,即是上述定义了一个接口。即凡是实现了该接口的类的实例,均可以使用统一的系统内置数据读取逻辑,读取到待校验数据,进行后续的校验。例如,textfield类实现这个接口,返回其文字内容,则它的实例便可以在实施本方案的应用中进行校验。这个具体的示例中,uitextfield声称自己满足了aevalidatable。它实现了特征本体规定的方法,返回了一个字符串变量(self.text),因此,使用textfield类的数据对象可以在实施本方案的应用如移动终端应用中进行校验。基于上述描述可以理解的是,本申请实施例所述的发起校验请求的数据对象也是满足了抽象的待校验数据所要求的规定数据特征。具体的应用场景中,所述的数据对象为符合待校验数据的规则数据特征的被校验对象,如一个文本框。在初始注册时即规定了这个文本框的数据对象中的内容需要满足哪些规则。在发起校验时,所述文本框作为待校验的数据对象。s2:获取与所述数据对象匹配的校验对象,所述校验对象包括预先构造的待校验数据和所述待校验数据的至少一个校验规则。本实施例中为管理待校验数据和对应的校验规则,可以定义校验对象。所述的校验对象中可以保持待校验数据和期望所述待校验数据所需满足的校验规则。所述的规则可以理解为预定的条件、特征、特点。当然,所述的校验规则可以包括一个或者多个校验规则。本申请提供的一种实施例中,所述的校验对象可以采用定义校验实体类,在所述校验实体类中保存注册的待校验数据和至少一个校验规则。在此,所述的校验规则也可以被抽象为接收待校验的数据并返回标识是否符合数据形态规则的变量值的对象。当然,本申请不排除其他的采用不使用校验实体类,不封装校验过程,把校验过程的实现放在校验执行主体如校验器里面的实施方式。具体的一个实施例中,所述校验对象可以包括:s201:对注册的待校验数据和对应的校验规则进行数据封装生成的校验实体,所述注册的待校验数据被定义为满足规定数据特征的数据的对象,所述校验规则被定义为接收待校验的数据并返回标识是否符合数据形态规则的变量值的对象。具体的一个示例中,校验规则可以被抽象为“接收一个字符串并返回一个标识是否符合规则的布尔值的对象”。仍以objective-c语言为例,可以定义如下接口,规定校验规则的特征:@protocolaevalidationrule<nsobject>-(bool)validate:(nsstring*)text;-(nsstring*)errormessage;@end那么凡是实现了上述接口的类的实例,均可以用作所述移动终端应用的校验规则。例如,校验规则可以为:数据的长度须为11,满足则通过校验,否则不通过。这个规则具体实现如下:当然,本申请中所提到“校验规则”是指抽象的校验规则。图2是本申请提供的一个具体的校验实体类的示意类图。进一步的,本申请提供的另一种实施方式中,可以使用字典来保存待校验数据和其校验规则的映射。所述的字典是一种数据结构,保存一对键和值,通过给定的键可以在常数复杂度内查找到对应的值。本申请的另一种实施例可以使用自定义字典作为管理的容器,存储待校验数据至校验实体类的映射,这样可以通过暴露的接口可以方便的查找给定待校验数据的校验规则。图3是本申请一个实施例中保存了待校验数据至校验实体的映射关心的自定义字典类的一个示意类图。具体的一种实施方式中,所述获取与所述数据对象匹配的校验对象可以包括:s202:以所述数据对象作为查询键,从自定义字典存储的键值对中获取所述查询键的取值相同的键和对应的值;所述自定义字典被设置成,以键值对的数据格式存储向其注册的待校验数据和所述待校验数据满足的校验规则,所述键值对中所述待校验数据为键、与所述待校验数据对应的校验实体为值。例如一个示例中,确定待校验数据d和其校验规则后,把校验规则放在一个列表中,如[a,b,…],列表中定义了待校验数据d的校验规则a、b等。然后可以把待校验数据d和校验规则的列表[a,b,…]封装到一个校验对象e中(即述的校验实体类)。所述的自定义字典里的键是d,值是e。图4是本申请提供的使用校验器件数据校验时所使用的自定义字典的结构示意图。一般的,一个校验器里面有一个自定义字典,校验器和自定义字典可以是一一对应的关系。一个校验器支持校验所有的满足规定数据特征的数据对象。(预先把不同的业务的数据对象和对应的校验规则列表注册到自定义字典中即可)。当然,本身不排除在一些实施例中,不同的业务域使用单独的校验器对象,这样可维护性的更好。图5是本申请一个实施例中自定义字典类数据和规则的管理部分整体示意类图。采用自定义字典的方法,把抽象的待校验数据作为键,校验实体作为值,统一管理和保存,使用者通过注册的方式添加数据和规则。具体的以一个实施例中,当确认增加新业务数据对象的校验时,将所述新业务数据对象和对应的校验规则注册到所述自定义字典中,生成以所述新业务数据对象为键、将所述新业务数据对象和对应的校验规则封装生成的校验实体为值的键值对。具体的示例,如前述校验用户输入的手机号码时,开始的规则是“11位0-9阿拉伯数字”,后来规则增加为“11位0-9阿拉伯数字且以数字1开头”。那么利用本实施方案在处理上述校验规则增加的情况时,无需增加分支逻辑,只需把新增的规则注册给移动终端应用,便完成了规则的增加。规则减少的方式类似。这样数据校验部分便可以灵活增删校验规则,提高了系统的扩展性。伪代码如下。definemobilenumber;//待校验数据definevalidator;//本系统提供的校验器对象validator.register(mobilenumber,forrules:[11位0-9阿拉伯数字,以数字1开头])returnvalidator.validate()原方案是规则由“a”变为“a且b”,而且“是否满足a,是否满足b”,这样的判断逻辑要自己去实现;本方案规则由一个只有一个元素a的列表[a]变为由两个元素构成的列表[a,b],且这个列表是系统内部维护的,对使用者透明。使用者可以只需要把新增的规则b通过系统暴露的api注册进去,就可以完成逻辑的新增。规则删除同理。这样,使用者也可以无需再了解原校验规则逻辑,直接使用新的规则注册即可,使得整个校验管理高效、简单、易扩展。s3:调用所述校验对象的方法,根据相应的校验规则对所述数据对象进行校验。在实际应用进行数据校验时,可以提供一个校验器,其内部拥有一个自定义字典的实例。外部调用校验器暴露的接口,向校验器注册待校验数据和期望数据满足的校验规则。校验器内部利用二者生成校验实体,并将数据和对应的校验实体以键值的形式保存在它的自定义字典实例中。校验器也可以提供解注册的接口,用于取消对某数据的校验。校验器的校验结果可以通过调用回调方法来通知外部,回调方法由外部指定。在对数据对象校验时,可以依次从字典中取出键和值,调用校验实体的校验方法,检验其返回值,便可得知数据是否符合校验规则。s4:返回所述数据对象的校验结果的标志值。如前所述,校验执行完毕后可以得到数据对象的校验结果,本实施例中由于采用校验数据和其校验规则的抽象数据类的处理,可以设置其返回的是表示数据对象校验结果的一个标志值。例如可以是在校验器内部设置一个标志变量,来标识校验结果,外部通过检验这个变量的值来获知校验结果。本申请提供的一种实施方式中,可以采用回调的方式通知外部校验结果。具体的,本申请提供的一种实施例中,所述返回所述数据对象的校验结果的标志值可以包括:s401:通过方法回调的方式将所述数据对象的校验结果返回给校验请求发起方。将校验过程封装到校验实体类中,校验的逻辑得以复用,系统通过暴露回调接口的方式告知外部校验结果。一种实施方式中,所述返回的校验结果可以为标识是否符合校验规则的布尔值。前述中,一种待校验数据可以包括一个或者多个校验规则。本申请对校验规则也进行了抽象,可以封装到校验实体中。本申请提供的一种应用数据校验方法中,所述校验实体中的校验规则以校验规则列表的形式进行存储,所述校验规则列表中保留至少一个待校验数据的校验规则。使用了校验规则列表的方式来存储定义待校验数据的校验规则,可以提高校验规则的管理,便于添加、删除等操作。因此,所述方法还包括:当确认增加待校验数据的第一校验规则时,将所述第一校验规则注册到所述自定义字典中所述待校验数据对应的校验规则列表中;当确认删除待校验数据的第二校验规则时,从所述待校验数据对应的校验规则列表中删除所述第二校验规则;当确认修改待校验数据的第三校验规则时,将修改后的第三校验规则替换掉所述待校验数据对应的校验规则列表中的原始第三校验规则。另外,本申请的另一个实施例中,所述校验实体中还可以封装所述待校验数据的校验逻辑;相应的,所述调用所述校验对象中的校验规则对所述数据对象进行校验包括根据所述校验逻辑确定使用所述校验规则对所述数据对象的校验执行方式。例如,依次校验数据是否满足规则列表中的每一条规则。图6是本申请提供的一种利用本申请所述方法进行数据校验的一个处理流程示意图。本申请提供的方案,以预先通过抽象的方式统一定义待校验数据和校验规则,并通过指定的数据格式方式把数据和规则统一管理起来,判断逻辑收拢到校验的目标校验对象内部。使用本方案时,可以预先注册待校验数据和对应的校验规则,并实现回调方法用于接收校验结果。注册完毕后,进行数据校验时可以通过暴露的接口调用校验实体和校验方法。然后检验其返回值,便可得知数据是否符合校验规则,完成数据校验。利用本申请实施方案,通过给定的待校验数据可以方便高效地查询、修改其校验规则,且便于校验规则的增删,并使得待校验数据和对应的校验规则得到有序的组织和管理,校验数据读取逻辑得到统一,应用校验运作流程就变得清晰可控,可以有效提高数据校验执行以及待校验数据和其校验规则的管理效率,大大提高数据校验的扩展性和管理、维护的便利性。基于上述实施例或场景所述的应用数据校验方法,本申请还提供一种应用数据校验装置。所述的装置可以包括使用了本申请所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器等并结合必要的实施硬件的装置。基于同一创新构思,本申请提供的一种实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本申请具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的具体的。图7是本申请提供的一种应用数据校验装置一种实施例的模块结构示意图,如图7所示,所述装置可以包括:数据获取模块101,可以用于接收数据对象的校验请求,所述数据对象符合定义待校验数据的规定数据特征;匹配模块102,可以用于构造和保存与所述数据对象匹配的校验对象,所述校验对象包括预先构造的待校验数据和所述待校验数据的至少一个校验规则;校验模块103,可以用于调用所述校验对象的方法,根据相应的校验规则对所述数据对象进行校验;结果返回模块104,可以用于返回所述数据对象的校验结果的标志值。在本申请所述装置的一个实施例中,所述的数据对象可以是校验实体的实施方式,因此。一种实施例中,所述校验对象可以包括:对注册的待校验数据和对应的校验规则进行数据封装生成的校验实体,所述注册的待校验数据被定义为满足规定数据特征的数据的对象,所述校验规则被定义为接收待校验的数据并返回标识是否符合数据形态规则的变量值的对象。所述装置另一种实施方式中,可以用于字典存储待校验数据和其校验规则的映射关系。图8是本申请提供的所述装置的另一种实施例的模块结构示意图,如图8所示,所述装置还可以包括:自定义字典105,可以用于以键值对的数据格式存储向其注册的待校验数据和所述待校验数据满足的校验规则,所述键值对中所述待校验数据为键、与所述待校验数据对应的校验实体为值;相应的,所述匹配模块102获取与所述数据对象匹配的校验对象包括从所述自定义字典105中获取与所述待校验数据键的取值相同的校验实体。另一种实施方式中,所述校验实体中还封装了所述待校验数据的校验逻辑;相应的,所述校验模块103调用所述校验对象的方法根据相应中的校验规则对所述数据对象进行校验包括根据所述校验逻辑确定使用所述校验规则对所述数据对象的校验执行方式。所述装置的另一种实施方式中,所述结果返回模块104返回所述数据对象的校验结果的标志值包括:通过方法回调的方式将标识所述数据对象是否符合校验规则的布尔值返回给校验请求发起方。上述实施例所述装置的具体的实施方式可以参照前述方法实施例相关内容的描述。不同实施例重点描述的是与其他实施例的区别之处,其相同或相似的实施部分相互参见即可,在此不做一一赘述。本申请所述的方法或装置可以以校验器的实施方式实现,所述校验器可以采用某种编程设计语言如objective-c实现本申请上述的业务逻辑。一般的,一个校验器实例中有一个自定义字典实例,该自定义字典实例支持保存多种(符合既定特征的)校验数据,在实践中也实施一个校验器对象保存某个业务域下所有的待校验数据。举个例子,可以同时保存文本框a的待校验数据、文本框b的待校验数据,多选框c的待校验数据。本申请中实现的校验器既可以调用方法m1,例如m1(a),来告知校验器只校验文本框a的数据,也可以调用方法m2,来校验全部的已注册数据——a、b、c,具体根据使用者的需求来确定,校验器具备这个能力。使用者在使用的时候,调用的是校验器暴露给使用者的接口(api),校验器的内部实现对使用者透明,使用者可以不需要直接跟校验实体或自定义字典对象打交道,可以只需要注册数据和规则。当需要时,调用api来发起校验过程,接受校验结果即可,站在使用者的角度,校验器是一个黑盒。面向对象的程序设计语言均可实现本申请的技术方案,如objective-c语言。当然,所述装置或方法其他的实施例中也可以不使用校验实体类,不封装校验过程,可以把校验过程的实现放在校验器里面。甚至,其他实施方式中,管理待校验数据也可以不使用字典(即不保存数据和规则的映射关系),不使用map、table等数据类型,仅使用一个list来保存校验实体。校验器的校验结果也可以不使用回调方式通知,而是在校验器内部设置一个标志变量,来标识校验结果,外部通过检验这个变量的值来获知校验结果的方式实现。基于本申请创新思想的其他实施例都应属于本申请的范围之内。本申请提供的一种应用数据校验装置,可以预先通过抽象的方式统一定义待校验数据和校验规则,并通过指定的数据格式方式把数据和规则统一管理起来,判断逻辑收拢到校验的目标校验对象内部。使用本方案时,可以预先注册待校验数据和对应的校验规则,并定义返回调用的方法用于接收校验结果。注册完毕后,进行数据校验时可以通过暴露的接口调用校验实体和校验方法。然后检验其返回值,便可得知数据是否符合校验规则,完成数据校验。利用本申请实施方案,通过给定的待校验数据可以方便高效地查询、修改其校验规则,且便于校验规则的增删,并使得待校验数据和对应的校验规则得到有序的组织和管理,校验数据读取逻辑得到统一,应用校验运作流程就变得清晰可控,可以有效提高数据校验执行以及待校验数据和其校验规则的管理效率,大大提高数据校验的扩展性和管理、维护的便利性。前述所述的应用数据校验方法或装置可以应用在多种终端应用或服务器系统中,有效解决本地数据校验时,由于运行时产生数据的不确定性所带来的数据校验业务逻辑繁杂、实现代码难于维护等问题。因此,本申请还提供一种电子设备,所述电子设备可以包括移动终端(如手机)、pc、服务器、分布式系统等,所述电子设备包括处理器以及用于存储处理器可执行指令的存储器,所述处理器被配置成,可以用于接收数据对象的校验请求,所述数据对象符合定义待校验数据的规定数据特征;还用于获取与所述数据对象匹配的校验对象,所述校验对象包括预先构造的待校验数据和所述待校验数据的至少一个校验规则;还用于调用所述校验对象的方法,根据相应中的校验规则对所述数据对象进行校验;还用于返回所述数据对象的校验结果的标志值。另一种实施例中,所述电子设备还可以包括存储单元,所述存储单元耦合于所述处理器,用于以键值对的数据格式存储向其注册的待校验数据和所述待校验数据满足的校验规则,所述键值对中所述待校验数据为键、与所述待校验数据对应的校验实体为值;相应的,所述处理器获取与所述数据对象匹配的校验对象并进行校验包括从所述自定义字典中获取与所述待校验数据键的取值相同的校验实体的数据,在所述校验实体中完成数据校验。当然,所述的电子设备参照前述方法或装置实施例的描述还可以有其他实施方式,具体的可以参照前述方法或装置的描述,在此不做赘述。本申请所述的方法或装置可以应用在客户端一侧,也可以用于服务器一侧,由客户端或服务器一侧单独实现方法或装置的功能,实现客户端或服务器对本地数据的校验。或者,本申请不排除在一些实施例中部分步骤由服务器一侧实现,例如获取与所述数据对象匹配的校验对象这一实施过程,可以由服务器一侧存储字典,然后根据校验请求匹配校验对象并实现校验,最后将校验结果发送给客户端一侧。本申请提供的应用数据校验方法的另一些实施场景中,获取的待校验的数据对象可以是客户端的本地数据,例如一种移动终端中某个应用运行过程中用户填写表单中的手机号码产生的本地数据。而对这个手机号码的本地数据进行校验的处理过程,例如包括前述实施例所述的获取校验对象、根据对应的校验规则实施校验、返回是否校验通过的值等,均可以在本地终端中实现,在本地数据校验的处理过程中可以无需与服务端一侧交互。具体的,本申请还提供一种实现本地数据校验的方法,具体的,可以包括:以键值对的数据格式存储向其注册的待校验数据和所述待校验数据满足的校验规则,所述键值对中所述待校验数据为键、与所述待校验数据对应的校验实体为值;其中,对注册的待校验数据和对应的校验规则进行数据封装生成的校验实体;在接收到应用产生的本地待校验数据时,所述本地待校验数据符合的规定数据特征,从所述字典数据库中获取与所述本地待校验数据匹配的校验对象;调用所述校验对象的方法,根据相应的校验规则对所述本地待校验数据进行校验,并返回校验结果的标志值。本申请实施例提供的实现本地数据校验的方法,可以存储包含多个预先设计的针对不同待校验数据的校验实体,这些校验实体与对应的待校验数据的映射关系可以存储在客户端的数据库中。可以通过字典数据库暴露的接口从字典数据库中取出与待校验数据对应的键和值,然后调用校验实体的校验方法,校验并返回校验结果的值,便可以得到客户端应用产生的数据是否符合校验规则。当然,所述实现本地数据校验的方法还可以用于其他终端设备,如服务器、智能穿戴设备、车载系统等,可以终端设备对本地数据完成校验。图9是本申请一个示例场景中对用户在客户端填写的本地数据进行校验的场景示意图。如图9所示,用户在应用的一个注册业务项中的表单中填写了多个业务数据。若采用现有常规的方式,则通常是通过校验姓名文本框的接口调用姓名的规则来校验姓名是否符合要求、通过校验电话文本框的接口调用电话的规则1:“11位0-9阿拉伯数字”来校验电话填写是否符合要求等。若新增该应用其他的业务,例如密码修改业务项时,新增新来源的待校验数据时相应的增加这种数据的代码逻辑,并且设置该密码修改业务对输入数据校验的调用接口。现有的方案中,数据读取这一步骤可扩展性很弱,不够灵活,无法统一处理数据读取的逻辑。而采用本申请实施例方案,将待校验数据进行抽象,规定了待校验数据的特征,即凡是具备某种特点的数据均可以被校验。因此在新增一种待校验数据时,只要通过简单的改造使这种数据满足规定的条件,即可利用本申请内置的数据读取方法,统一完成数据读取。这种方式可以把数据读取和数据来源隔离,数据读取不再关心数据来源,逻辑得到统一。例如图9所示的场景中,可以实行动态注册规则,灵活、便捷的对各种待校验数据预先注册和管理。各种待校验数据(表单中的姓名、电话号码)进行校验时可以调用对应的校验实体类,完成校验。如果规则变更,例如增加电话规则2:“11位0-9阿拉伯数字且以数字1开头”,则可以直接将该规则2注册到字典中,当然,原规则1可以直接删除。数据校验的复杂性体现为校验规则多且杂。使用现有方案,待校验数据和对应的校验规则不能得到有序的组织和管理。本申请实施例提供的技术方案可以使用自定义字典的方式,将抽象的待校验数据作为key,自定义的封装了校验过程的校验实体作为value,校验实体类中保存了校验规则列表,这样可以通过给定的待校验数据方便高效地查询其校验规则,且便于校验规则的增删。尽管本申请内容中提到回调方式反馈校验结果、采用字典管理校验数据、使用校验实体类封装校验过程、objective-c程序设计语言实现自定义字典等之类的数据定义、匹配、交互、计算、判断等描述,但是,本申请并不局限于必须是符合业内数据通信标识、标准组件工具调用、标准计算机语言处理/数据库存储加载方法或本申请实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的配置数据定义、存储、判断、设置方式等获取的实施例,仍然可以属于本申请的可选实施方案范围之内。在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。上述实施例阐明的设备、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1