一种校验规则的执行方法和装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种校验规则的执行方法和装置。
背景技术
不同的系统或同一系统的各个业务之间会有各种各样的调用关系,而这些调用关系可以以节点(node)的形式来实现,节点可以为远程调用方法、数据访问接口的调用方法、消息等。为了验证系统的可靠性,通常需要根据节点的调用关系来编写校验规则(以下简称规则)并执行上述规则以对系统的一些数据或其它的一些参数进行校验。
现有技术中在执行规则时,首先需要通过分析系统间所有的调用关系进而得到一种调用树结构拓扑图,每个调用树可以根据业务含义而具体命名,如图1所示,图1所示的业务1中,节点0同时调用节点1和节点2,同时节点2又调用节点3和节点4。这些节点可能分布在一个系统或多个系统中,然后再基于这样一个树模型结构进行编写规则,在执行规则时需要等树模型中的全部节点中的每个节点对应的节点数据均到齐后才能执行规则。如果调用树结构上的某节点数据而没有收到,则基于树结构的规则就无法执行,因此规则执行时的时效性较低。
发明内容
为解决上述技术问题,本申请实施例提供一种校验规则的执行方法和装置,用于提高校验规则执行的时效性。
本申请实施例采用下述技术方案:
一种校验规则的执行方法,所述方法包括:接收节点的节点数据;查找包含有所述节点的节点集,所述节点集包括至少一个节点,当节点集包括两个以上节点时,所述节点集内节点之间具有校验关系;判断节点集内每个节点对应的节点数据是否到达;如果是,则执行与所述节点集对应的校验规则,所述节点集对应的校验规则为根据节点集内节点之间的校验关系编写的规则。
优选地,判断节点集内每个节点对应的节点数据是否到达,具体包括:查询所有节点数据,根据查询结果确定节点集内每个节点对应的节点数据是否到达;或,将节点集内节点的编码值之和与第一预设值做与操作,判断操作结果和节点集内节点的编码值之和是否相等,根据判断结果确定节点集内每个节点对应的节点数据是否到达,其中节点集内每个节点都有唯一的编码值。
优选地,将节点集内节点的编码值之和与第一预设值做与操作,判断操作结果和节点集内节点的编码值之和是否相等之前,所述方法还包括:接收节点的节点数据后将所述节点的编码值与第一预设值做或操作,并将操作结果赋值给第一预设值,其中每个节点集均对应有一个第一预设值。
优选地,执行与所述节点集对应的校验规则之后,所述方法还包括:记录执行过校验规则的节点集。
优选地,记录执行过校验规则的节点集,具体包括:将所述节点集内节点的编码值之和与第二预设值做或操作,并将操作结果赋值给第二预设值,其中节点集内每个节点都有唯一的编码值。
优选地,执行与所述节点集对应的校验规则之前,所述方法还包括:判断所述节点集是否执行过校验规则。
优选地,判断所述节点集是否执行过校验规则,具体包括:将节点集内节点的编码值之和与第二预设值做与操作,判断操作结果和节点集内节点的编码值之和是否相等,根据判断结果确定所述节点集是否执行过校验规则,其中每个节点集均对应有一个第二预设值。
优选地,执行与所述节点集对应的校验规则之后,所述方法还包括:反馈校验规则的执行结果。
一种校验规则的执行装置,所述装置包括:接收模块,查找模块,判断模块和执行模块,其中:所述接收模块,用于接收节点的节点数据;所述查找模块,用于查找包含有所述节点的节点集,所述节点集包括至少一个节点,当节点集包括两个以上节点时,所述节点集内节点之间具有校验关系;所述判断模块,用于判断节点集内每个节点对应的节点数据是否到达;所述执行模块,用于在判断模块的结果为是时,执行与所述节点集对应的校验规则,所述节点集对应的校验规则为根据节点集内节点之间的校验关系编写的规则。
优选地,所述判断模块具体包括:查询结果判断模块或编码值判断模块,其中:所述查询结果判断模块,用于查询所有节点数据,根据查询结果确定节点集内每个节点对应的节点数据是否到达;所述编码值判断模块,用于将节点集内节点的编码值之和与第一预设值做与操作,判断操作结果和节点集内节点的编码值之和是否相等,根据判断结果确定节点集内每个节点对应的节点数据是否到达,其中节点集内每个节点都有唯一的编码值。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:接收节点的节点数据之后进而查找包含有所述节点的节点集,如果节点集内每个节点对应的节点数据到达即可执行与节点集对应的校验规则,节点集对应的校验规则为根据节点集内节点之间的校验关系编写的规则。在执行校验规则时只要与校验规则相关的节点集内节点数据到达时就可以立即执行,无需等到整个业务系统中所有节点数据到达,降低规则执行的响应时间。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为现有技术中校验规则执行时所需的树模型示意图;
图2为本申请实施例1提供的一种校验规则的执行方法的具体实现流程示意图;
图3为本申请实施例2提供的一种校验规则的执行方法的应用场景示意图;
图4为本申请实施例3提供的一种校验规则的执行方法的应用场景示意图;
图5为本申请实施例4提供的一种校验规则的执行装置的具体结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
实施例1
如前所述,不同的系统或同一系统的各个业务之间会有各种各样的调用关系,而这些调用关系可以以节点的形式来实现,节点可以为远程调用方法、数据访问接口的调用方法、消息等。为了验证系统的可靠性,通常需要根据节点的调用关系来编写规则并执行上述规则以对系统的一些数据或其它的一些参数进行校验。
现有技术中在执行规则校验时,首先通过分析系统间所有的调用关系得到一种调用树结构拓扑图,然后基于这样一个树模型结构进行编写规则,在执行规则时等树模型上的全部节点到齐后执行规则进行校验。然而规则执行时需要等到一个树上的所有节点数据都到齐时才能执行,调用树结构上的某节点数据而没有收到,则这个树上的规则都无法执行,规则执行的时效性较低。因此,本申请实施例1提供了一种校验规则的执行方法,用于提高规则执行的时效性。该方法的具体流程示意图如图2所示,包括下述步骤:
步骤S11:接收节点的节点数据;
不同的系统或同一系统的各个业务之间会有各种各样的调用关系,这里可以这些调用关系的组合称为业务系统,业务系统中通常会包括很多节点,每个节点将会对应有规则执行时所需要的节点数据,则可以根据业务系统中的节点,接收每个节点的节点数据。
步骤S12:查找包含有所述节点的节点集;
节点集中可以只包括有一个节点,当然也可以包括有多个节点,当节点集包括两个以上(包括两个)节点时,节点集内节点之间具有校验关系,例如节点集(A,B)中包括A,B两个节点,则业务系统中的校验规则可以为节点A中的节点数据等于节点B中的节点数据。
通常一个节点可能包含于多个节点集内,则查找时,则可以找出包含有所述节点的所有节点集。例如步骤S11中接收到节点A的数据时,则可以查找到的包含有节点A的节点集(A),节点集(A,B,C)和节点集(A,B,D)等等。
步骤S13:判断节点集内每个节点对应的节点数据是否到达;
一个节点集内如果有多个节点,在规则执行前,则需要判断节点集内其它的节点所以对应的节点数据是否到达。具体判断时,可以通过查找节点数据的方式,如果查找到哪个节点数据,则说明该节点对应的节点数据已经到达。
步骤S14:执行与所述节点集对应的校验规则。
如果节点集内只有一个节点,接收到节点数据之后则可以直接执行与所述节点集对应的规则;节点集内有多个节点时,如果步骤S13中的判断结果为是,即节点集内所有节点对应的节点数据全部到达,则可以执行与节点集对应的规则。
需要说明的是,所述节点集对应的校验规则为根据节点集内节点之间的校验关系编写的规则。例如节点A和节点B为两个不同的函数,其中节点A调用节点B的输出参数作为节点A的输入参数,A和B有与其它函数之间没有调用关系,则可以将(A,B)称为一个节点集,为避免数据传输过程中出现问题而需要对A的输入参数及B的输出参数是否相等进行校验,编写的规则以文字的形式可以体现为:A的输入参数等于B的输出参数。
采用实施例1提供的方法,接收节点的节点数据之后进而查找包含有所述节点的节点集,如果节点集内每个节点对应的节点数据到达即可执行与节点集对应的校验规则,节点集对应的校验规则为根据节点集内节点之间的校验关系编写的规则。在执行校验规则时只要与校验规则相关的节点集内节点数据到达时就可以立即执行,无需等到整个业务系统中所有节点数据到达,降低规则执行的响应时间。
在实施例1的步骤S13中,判断节点集内每个节点对应的节点数据是否到达时,具体可以有以下两种可选方式:
一:查询业务系统中的所有节点数据,根据所述查询结果判断节点集内节点数据是否到达。这种方式可以降低每次到来节点数据都查找其它节点数据是否到达的次数,通过一次性查找得出多个判断结果,得出哪些节点的数据已经到达,哪些节点的数据还没有到达。
二:将节点集内节点的编码值之和与第一预设值做与操作,判断操作结果和节点集内节点的编码值之和是否相等,根据判断结果确定节点集内每个节点对应的节点数据是否到达,且所有的节点集内每个节点都有唯一的编码值。如果操作结果和第一预设值相等,则说明节点集内每个节点对应的节点数据已经到达,反之,则说明节点数据未到齐。
需要说明的是,业务系统中所有的节点集内每个节点都有唯一的二进制编码值,这个编码值可以只有一位为1,其他的位数均为0。例如业务系统中一共用到A,B,C,D四个节点,节点集可以是A,B,C,D四个节点中任意一个或几个节点之间的组合,编码则可以用一个四位的整形数组来标识,则A的编码值可以为0001,B的编码值可以为0010,C的编码值可以为0100,D的编码值可以为1000,起到每个节点有一个编码值,且一个编码值只有一位为1,其他位均为0的效果。
在实际应用中,接收节点的节点数据之后,节点数据通常可以存储到tair,memorycache等高速缓存系统中或者数据库中。当节点对应的节点数据量比较大时,判断节点集内每个节点对应的节点数据是否到达时时,通常是在节点集中某一个节点到了去查找节点集内其他节点对应的节点数据是否到达,这种查找节点数据的性能不高。将节点集内节点的编码值之和与第一预设值做与操作,判断操作结果和节点集内节点的编码值之和是否相等,根据判断结果确定节点集内每个节点对应的节点数据是否到达,这种利用编码的判断方式即可利用少许的本地缓存,大大降低频繁查询节点数据的资源消耗。
将节点集内节点的编码值之和与第一预设值做与操作,判断操作结果和节点集内节点的编码值之和是否相等之前,可以在每次接收到节点数据后,将所述节点的编码值与第一预设值做或操作,并将操作结果赋值给第一预设值。其中业务系统中的每个节点都具有唯一的编码值,同样,编码值可以为二进制编码值,将所述节点的编码值与第一预设值做或操作,并将操作结果赋值给第一预设值时,由于一个编码值只有一位为1,其他位均为0,相当于将节点的编码值加上第一预设值的编码值求和,并将结果重新赋值给第一预设值,其中第一预设值为变量,其初始二进制值可以为零。通过此操作,即可避免每次节点数据到达时频繁查找节点集内其它节点对应的节点数据是否到达,只需根据编码值的判断结果即可确定节点集内的节点数据是否到齐。
在实施例1的步骤S14之后,执行与所述节点集对应的校验规则之后,所述方法还可以包括以下步骤:记录执行过校验规则的节点集。记录执行过校验规则的节点集,具体可以为将所述节点集内节点的编码值之和与第二预设值做或操作,并将操作结果赋值给第二预设值,其中节点集内每个节点都有唯一的编码值,且每一个节点集均对应有一个第二预设值。编码值可以为二进制编码值,将节点集内所有节点的编码值之和与第二预设值做或操作,并将操作结果赋值给第二预设值时,由于一个编码值只有一位为1,其他位均为0,相当于将节点集内所有节点的编码值之和再加上第二预设值的编码值,并将求和结果重新赋值给第二预设值,其中第二预设值为变量,其初始二进制值可以为零。
另外,执行与所述节点集对应的校验规则之前,所述方法还包括:判断所述节点集是否执行过校验规则。通过此操作,如果节点集已经执行过规则,则可避免重复执行规则。在判断所述节点集是否执行过校验规则时,具体可以按以下步骤操作:将节点集内节点的编码值之和与第二预设值做与操作,判断操作结果和节点集内节点的编码值之和是否相等,根据判断结果确定所述节点集是否执行过校验规则。如果节点集内节点的编码值之和与第二预设值相等,则说明此节点集已经执行过规则,如过节点集内节点的编码值之和与第二预设值不相等,说明节点集还未执行过规则。
在之前的所有方法实施例中执行与节点集对应的校验规则之后,所述方法还包括:反馈校验规则的执行结果,如果规则的执行结果为是,则说明节点间的调用关系正常,如果节点的执行结果为否,则说明说明节点间的调用关系出现异常,进而可以及时进行进一步处理。
实施例2
实施例1详细叙述了本申请的发明构思,为了便于更好的理解本申请的技术特征、手段和效果,下面以一种具体的实施实例,对本申请的规则执行方法进行说明,从而形成了本申请的又一个实施例。实施例2的具体应用场景可以如图3所示。在此实施例的业务系统中主要应用到A,B,C,D等几个节点,首先已经针对节点集内节点之间的校验关系编写有规则,节点集和规则的对应关系可以存储在图3中的RuleStore中,具体对应关系可以如下表所示,其中规则集合中的小写字母可以为节点对应的属性值、入参出参等,节点集和规则的对应关系可以通过对规则的分析得出每个规则用到的节点数据。
节点集 |
规则集合 |
(A) |
A.aa.a=A.bb.b,A.st=“Y”… |
(A,B) |
A.a=B.b,A.c=B.e+B.f… |
(B,C,D) |
B.e=C.e+D.e… |
… |
… |
实施例2具体包括以下几个步骤:
(1)接收节点A的节点数据;
接收节点A的节点数据之后,可以将节点A的节点数据存储在图3所示的DataStore中,节点数据可以包括的信息如下表所示:
节点签名 |
节点相关数据 |
数据标识 |
节点别名 |
HashA |
DataA |
TraceIdA |
A |
HashB |
DataB |
TraceIdB |
B |
HashC |
DataC |
TraceIdC |
C |
HashD |
DataD |
TraceIdD |
D |
节点数据通过AliasHashtable中的节点别名,得到如上表所示的数据格式,AliasHashTable可以用来存储节点签名与节点别名之间的映射关系,并以traceId+别名作为key存储到DataStore中,DataStore可采用tair等内存性数据库来实现。以traceId+别名而不是traceId+hash来作为key是因为别名一般比节点签名有更小的长度,进而可以加快读取速度。当然如果别名长度超过节点签名的长度,则还可以采用traceId+节点签名作为key。
(2)查找包含有节点A的节点集;
具体地可以从图3所示的NodeIndex中查找包含有节点A的节点集,进而找到(A)和(A,B)两个节点集。NodeIndex可以为RuleStore的索引表结构,可以根据某个节点快速找到相应的节点集。例如可以根据A,可以定位(A)本身与(A,B)组合,组合中还可以存储规则集的引用指针。另外,NodeIndex的结构是索引表,可以常驻在内存来提高检索速度。
(3)判断所述节点集内每个节点的节点数据是否到达;
对于(A,B),由于A的节点数据已经到达,则可以从DataStroe中查找节点B的节点数据是否到达。
(4)执行与A对应的规则以及与(A,B)对应的规则。
首先对于节点A,可以从RuleStore中找出与A相应规则并执行,并反馈执行结果。
如果步骤(3)判断结果得出B的数据到达,则执行(A,B)对应的规则,并把(A,B)放到对应的TracerQueue中,如果B的数据未到达,则结束。当然在此步骤中可以首先判断节点集(A,B)是否执行过规则。
其中,TracerQueue可以存储已经执行过规则的节点集,以避免重复执行,相同的traceId数据会有一个tracerQueue。另外还可以有TracerManager(图4中未标出)负责管理tracerQueue,定时清理过期的TracerQueue以释放内存空间。
另外,在步骤(4)中执行与A对应的规则以及与(A,B)对应的规则之前,上述方法步骤中当然还可以先判断与A对应的规则以及与(A,B)对应的规则是否执行过。
同理:
(5)接收节点B的节点数据后,从NodeIndex查找包含有节点B的节点集,找到(A,B),(B,C,D)。
(6)检查TracerQueue中如果有(A,B),说明(A,B)已经执行过规则,则忽略继续处理(B,C,D),如果没有则执行(A,B)对应的规则,执行完规则之后把(A,B)放到TracerQueue中。
处理(B,C,D)时检查节点C的数据是否到达,如果达到继续检查D节点的数据是否到达,如果都到达可以执行(B,C,D)对应的规则,并把(B,C,D)放到TracerQueue中,否则结束。
同理:
(7)接收节点C的节点数据后,从NodeIndex查找包含有节点C的节点集,找到(B,C,D),首先查看(B,C,D)是否执行过规则,如果未执行则检检查节点B的数据是否到达,如果达到继续检查B、D节点的数据是否到达,如果均到达则执行(B,C,D)对应的规则,并把(B,C,D)放到TracerQueue中,否则结束。
同理:
(8)接收节点D的节点数据后,与步骤(7)类似。
采用实施例2提供的方法,接收节点的节点数据之后进而查找包含有所述节点的节点集,如果节点集内每个节点对应的节点数据到达即可执行与节点集对应的校验规则,节点集对应的校验规则为根据节点集内节点之间的校验关系编写的规则。在执行校验规则时只要与校验规则相关的节点集内节点数据到达时就可以立即执行,无需等到整个业务系统中所有节点数据到达,降低规则执行的响应时间。另外还可以记录执行过规则的节点集,避免重复查找节点数据及避免重复执行规则。
实施例3
在实施例2的步骤(3)中需要判断节点组合中的节点数据是否到达,为降低每次接收到节点数据都查找节点组合中的数据是否到达的次数,且简化判断是否执行过规则,实施例3提供的规则执行方法中可以使用基于编码的查找算法,以降低查询次数。
在实际应用中,接收节点的节点数据之后,节点数据通常可以存储到tair,memorycache等高速缓存系统中或者数据库中,即图4所示的DateStore,当节点数据量比较大时,将节点集内节点的编码值之和与预设值DataCount做与操作,并判断操作结果和节点集内节点的编码值之和是否相等,根据判断结果确定节点集内每个节点对应的节点数据是否到达,这种利用编码的方式即可利用少许的本地缓存,大大降低频繁查询节点数据的资源消耗。
因此实施例3与实施例2的不同之处主要为:首先可以对RuleStore中的节点集分析并划分组,每个组中的节点相关联,且每个组中的节点不重复,具体的划分组的依据可以是将规则中会相互应用到的相同节点的几个节点划分在一个组中。例如组1(group1)中包括A,B,C,D四个节点,因为(A,B),(B,C,D)中共同应用到了节点B,当然还可以使其它的划分方式,然后对组1中每个节点进行编码,编码值可以如下表所示:
节点 |
A |
B |
C |
D |
编码(二进制) |
0001 |
0010 |
0100 |
1000 |
编码可以用Byte[]数组来标识,例如,如果每个组的节点个数不超过32个,则可以用一个32位整型来标识,且每个编码值可以只有一位为1,其他的位数均为0。。
然后主要是在TracerQueue中维护一个数据累计器DataCount,其初始值二进制值可以为0,用来标识节点集中的数据是否全部到达;同时维护一个处理计数器ExeCount,初始二进制值也可以为0,用来标识节点集是否已经执行规则。另外,在NodeIndex中的关联节点组合中的每个节点集最后的数字是节点集中所有节点的编码值之和。
需要说明的是,实施例3中的每个节点集均可以对应有一个DataCount以及一个ExeCount。具体可以如图4所示,可以将节点集(A,1)对应TracerQueue中的Q1,节点集(A,B,3)对应图4中TracerQueue中的Q2等等。
实施例3具体实施步骤如下:
(1)接收节点A的数据,可以将节点A的数据以traceId为key存储到DataStore中,并把节点A的编码值1与节点集A对应的编码值DataCount做或操作并将操作结果赋值给DataCount,即:DataCount=DataCount|1。
(2)从NodeIndex中查找包含有节点A的节点集,找到节点集(A,1)和(A,B,3)。
(3)对于(A,B,3),先判断节点集中的节点数据是否到齐,根据节点集(A,B,3)对应的DataCount和ExeCount判断3&DataCount==3是否为true,如果为false则说明节点数据未到齐,可以结束处理;如果为true,则说明节点数据已经到齐,进而检查是否执行过规则,即3&ExeCount==3是否为true,如果为true说明已经执行过规则无需再执行,如果为false则需要执行对应的规则,然后更新ExeCount=ExeCount|3;对于(A,1),从RuleStore中找出相应规则并执行,反馈执行结果。
同理:
(4)接收节点B的数据,可以将节点B的数据存储到DataStore中,从NodeIndex查找包含有节点B的节点集,找到(A,B,3),(B,C,D,14),并按照DataCount=DataCount|2更新两个节点集的DataCount。
(5)处理(A,B,3)时与步骤(3)类似。
(6)处理(B,C,D,14)时,先检查节点是否到齐,根据节点集(B,C,D,14)对应的DataCount和ExeCount判断14&DataCount==14是否为true,如果为false则结束处理;如果为true,则检查是否执行过,即判断14&ExeCount==14是否为true,如果为true说明已经执行过无需再执行,如果为false则需要处理对应的规则然后更新ExeCount=ExeCount|14。
同理:
(7)接收节点C的数据,可以将节点C的数据存储到DataStore中,并更新DataCount=DataCount|4,对于(B,C,D,14),执行步骤与步骤(6)类似。
同理:
(8)接收节点D的数据,可以将节点D的数据存储到DataStore中,并更新DataCount=DataCount|8,对于(B,C,D,14),执行步骤与步骤(6)类似。
采用实施例3提供的方法,接收节点的节点数据之后进而查找包含有所述节点的节点集,如果节点集内每个节点对应的节点数据到达即可执行与节点集对应的校验规则,节点集对应的校验规则为根据节点集内节点之间的校验关系编写的规则。在执行校验规则时只要与校验规则相关的节点集内节点数据到达时就可以立即执行,无需等到整个业务系统中所有节点数据到达,降低规则执行的响应时间。另外,通过判断节点集内节点的编码值之和与预设值DataCount是否相等,根据判断结果确定节点集内每个节点对应的节点数据是否到达,这种利用编码的方式即可利用少许的本地缓存,大大降低频繁查询节点数据的资源消耗。
实施例4
以上为本申请的方法实施例,基于相同的发明构思,本申请实施例4提供一种校验规则的执行装置,用于提高规则执行的时效性。如图5所示,所述装置主要包括:接收模块21,查找模块22,判断模块23和执行模块24,其中:
所述接收模块21,可以用于接收节点的节点数据;
所述查找模块22,可以用于查找包含有所述节点的节点集,所述节点集包括至少一个节点,当节点集包括两个以上节点时,所述节点集内节点之间具有校验关系;
所述判断模块23,可以用于判断节点集内每个节点对应的节点数据是否到达;
所述执行模块24,可以用于在判断模块23的结果为是时,执行与所述节点集对应的校验规则,所述节点集对应的校验规则为根据节点集内节点之间的校验关系编写的规则。
采用实施例4提供的方案,在执行时只要节点集中节点的节点数据到达时就可以立即执行,无需等到所有节点到达,降低规则执行的响应时间。
在一个优选方案中,判断模块23具体可以包括:查询结果判断模块或编码值判断模块,其中:查询结果判断模块,可以用于查询所有节点数据,根据查询结果确定节点集内每个节点对应的节点数据是否到达;
编码值判断模块,可以用于将节点集内节点的编码值之和与第一预设值做与操作,判断操作结果和节点集内节点的编码值之和是否相等,根据判断结果确定节点集内每个节点对应的节点数据是否到达,其中节点集内每个节点都有唯一的编码值。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。