一种事务型任务处理方法及装置
技术领域
本申请涉及计算机任务处理技术领域,尤其涉及一种事务型任务处理方法及装置。
背景技术
随着计算机信息技术的发展,分布式***中出现了越来越多的事务型任务。事务型任务对数据库进行一系列操作,这些操作作为一个不可分割的整体,要么全部执行,要么全部不执行。当存在多个事务型任务并发执行时,数据库的操作结果可能会出现错误。例如,在事务型任务A对数据库执行十次加1操作并获取运算结果的同时,事务型任务B对数据库执行十次减1操作,这将可能由于事务型任务B的执行,导致事务型任务A获取到错误的结果。
为解决多个事务型任务并发执行的问题,现有技术采用了数据库锁机制。数据库锁机制基于数据库内的数据构建数据库锁,并通过数据库锁来调节多个事务型任务并发执行的机制。也就是在事务型任务开始前,***将数据库中的业务数据作为数据库锁,一个事务型任务到来时,先获取数据库锁再执行,在事务型任务处理结束后释放数据库锁,然后,其它事务型任务才能够重新获取数据库锁并执行。
由此可见,数据库锁机制能够解决多个事务型任务并发执行的问题,确保多个事务型任务并发执行过程中的数据准确。但是,数据库锁机制严重依赖于数据库自身的业务数据,如果数据库中没有适合作为数据库锁的业务数据,则数据库锁机制将难以使用。另外,事务型任务获得数据库锁之后,如果该事务型任务的执行十分缓慢,则会造成其它事务型任务的长时间等待。
发明内容
本申请实施例提供一种事务型任务处理方法和装置,用于处理数据库中的事务型任务。
本申请实施例采用下述技术方案:
一种事务型任务处理方法,其特征在于,包括:
接收当前事务型任务;
根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性,如果所述状态属性显示为完成,则执行所述当前事务型任务,并将所述状态属性修改为运行,所述锁对象包含事务型任务执行状态的状态属性;
根据当前事务型任务执行情况提交所述当前事务型任务。
优选的,所述方法还包括:
在分布式***中构建记录,所述记录至少包含用于确定事务型任务状态属性的字段;
将所述记录映射到所述分布式***的数据库,作为与该数据库对应的锁对象。
优选的,所述锁对象存储在所述分布式***中与所述锁对象对应的数据库中,或者所述分布式***中的与所述锁对象对应的数据库之外的其它数据库中。
优选的,所述锁对象还包含任务标识属性、开始时间属性和超时阈值属性,所述任务标识属性用于记录最近执行任务的任务标识,所述开始时间属性用于记录执行所述当前事务型任务时的时间,所述超时阈值属性指处理任务能用的最长时间,所述方法还包括:
如果所述状态属性显示为运行,则判断所述锁对象的所述任务标识所记录的任务的执行时间是否大于所述超时阈值属性的值,若是,则执行所述当前事务型任务。
优选的,所述方法还包括:
判断所述当前事务型任务的执行时间是否大于超时阈值属性的值,若是,则回滚所述当前事务型任务;若否,则根据执行情况提交所述当前事务型任务。
优选的,所述任务的执行时间具体为当前时间与所述任务开始时所述锁对象的所述开始时间属性所记录的时间之差。
优选的,所述锁对象还包含超时次数属性和超时次数阈值属性,所述超时次数属性用于记录事务型任务执行超时的次数,所述超时次数阈值属性指超时次数属性的最大值,在根据执行情况提交所述当前事务型任务前,所述方法还包括:
判断当前事务型任务的执行时间是否大于超时阈值属性的值,若是,则回滚所述当前事务型任务,并增大超时次数属性的值;若否,则根据执行情况提交所述当前事务型任务。
优选的,所述增大超时次数属性的值具体为将超时次数属性的值加1。
优选的,所述方法还包括:
判断超时次数属性的值是否大于超时次数阈值属性的值,若是,则增大超时阈值属性的值,并将超时次数属性的值调整为0。
优选的,所述增大超时阈值属性的值具体为将超时阈值属性的值乘以2。
优选的,所述方法还包括:判断所述当前事务型任务是否出现错误,若是,则回滚所述当前事务型任务。
一种事务型任务处理装置,其特征在于,包括:
接收单元、判断单元、锁对象单元、执行单元和提交单元,其中:
接收单元,用于接收当前事务型任务对数据库的处理请求,所述当前事务型任务指对数据库进行处理的事务型任务;
判断单元,用于判断锁对象单元以及判断大小;
锁对象单元,用于调节数据库中多任务的并发执行,包含任务标识子单元和状态子单元,所述状态子单元的状态属性包括运行和完成;
执行单元,当所述判断单元判断锁对象单元的状态子单元的状态属性为完成时,用于执行所述当前事务型任务;
提交单元,用于根据执行情况提交所述当前事务型任务。
优选的,所述锁对象单元还包含开始时间子单元和超时阈值子单元,所述开始时间子单元用于记录执行所述当前事务型任务时的时间,所述超时阈值子单元用于设置处理任务能用的最长时间,当所述判断单元判断锁对象单元的状态子单元的状态属性为运行时:则判断单元判断所述锁对象单元的所述任务标识子单元所记录的任务的执行时间是否大于所述超时阈值子单元的值,若是,则执行单元执行所述当前事务型任务。
优选的,所述锁对象单元还包含:
超时次数子单元和超时次数阈值子单元,所述超时次数子单元用于记录任务执行超时的次数,所述超时次数阈值子单元用于设置超时次数属性的最大值,在提交单元提交所述当前事务型任务时:判断单元判断当前事务型任务的执行时间是否大于超时阈值子单元的值,若是,则增大超时次数子单元的值,并且提交单元回滚所述当前事务型任务;若否,则提交单元提交所述当前事务型任务。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
本申请实施例在处理事务型任务时,通过使用本申请提供的锁对象解决了事务型任务的并发执行的问题,由于锁对象并不依赖数据库中的业务数据,因此解决了现有技术中,数据库锁机制依赖于数据库自身的业务数据的问题。另外,本申请至少一个实施例通过在锁对象中设置超时阈值属性的方式,解决了在事务型任务执行缓慢的条件下,造成其它事务型任务的长时间等待的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例1提供的一种事务型任务处理方法的流程示意图;
图2为本申请实施例2提供的一种事务型任务处理方法的流程示意图;
图3为本申请实施例3提供的一种事务型任务处理方法的流程示意图;
图4为本申请实施例4提供的一种事务型任务处理方法的流程示意图;
图5为本申请实施例5提供的一种事务型任务处理方法的流程示意图;
图6为本申请实施例6提供的一种事务型任务处理装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
实施例1提供了一种在***中进行事务型任务处理的方法。该方法的具体流程示意图如图1所示,包括下述步骤:
步骤101:接收当前事务型任务。
分布式***接收当前事务型任务。在分布式***中,当计算机需要对数据库执行一系列不可分割的操作时,需要向分布式***发送任务。这里,将这种不可分割的一系列操作构成的整体称为当前事务型任务,该当前事务型任务指对数据库进行处理的事务型任务。
在支付宝中有大量的事务型任务,分布式***根据设定的时间规则来定时执行这些任务,根据设定的时间规则,当执行某一项任务的时间点来临时,分布式***会启动该任务的处理流程。
步骤102:在分布式***中构建锁对象,然后存储所述锁对象。
在分布式***中构建记录,所述记录至少包含用于确定事务型任务状态属性的字段;将所述记录映射到所述分布式***的数据库,作为与该数据库对应的锁对象。
在分布式***中构建记录,所述记录至少包含一个字段,所述字段用于定义属性,然后将所述记录映射到所述分布式***的数据库,并作为与该数据库对应的锁对象。
本实施例中,在分布式***中构建一条记录,将所构建的记录作为锁对象,然后在所述锁对象和数据库之间建立映射关系,之后将锁对象进行存储。所构建的记录中至少包含状态字段,状态字段用于定义状态属性。记录中可以包含多个不同字段用于不同属性,使得分布式锁实现不同的功能。
特别的,所构建的记录中可以包含任务标识字段和状态字段,任务标识字段用于定义任务标识属性,状态字段用于定义状态属性。这样,所构建的锁对象包含任务标识属性和状态属性。
由于在锁对象直接通过在分布式***中通过创建记录所构建,因此并不依赖于对应数据库中的业务数据,所以在存储时既可以将锁对象存储在分布式***的对应数据库中,也可以将锁对象存储在分布式***的其它数据库中。
需要说明的是,本实施例的步骤102和步骤101之间的顺序互换时,并不影响本实施例技术效果的实现。也就是说在处理任务的过程中,也可以先在分布式***中构建锁对象,然后接收当前事务型任务。
步骤103:根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性,如果所述状态属性显示为完成,则执行步骤104,所述锁对象包含事务型任务执行状态的状态属性。
分布式***接收当前事务型任务的任务请求后,会查询锁对象的状态属性。锁对象的状态属性可以有两种,一种为完成(FINISH),表示锁对象处于空闲状态;另一种为运行(RUNNING),表示锁对象处于锁定状态。如果查询到锁对象的状态属性为完成,则开始执行步骤104。所述锁对象包含状态属性,所述状态属性用于显示锁对象的执行状态
步骤104:执行所述当前事务型任务,并将所述状态属性修改为运行。
当锁对象的状态属性显示为完成时,执行当前事务型任务,由于当前事务型任务已经占用锁对象,所以将锁对象的状态属性更改为运行。
特别的,在任务执行的过程中通常会出现错误,这种错误可能由于任务自身造成,也有可能由外部因素造成。例如:在处理转账任务时,如果汇款方的账户的金额不够就会造成任务出错,这种任务出错是由任务自身造成;如果转账过程中出现网络中断或者断电等问题,也会引起任务出错,这些任务出错是由外部原因造成。为了防止任务执行过程中出现错误而造成数据库出错,因此,增加在任务执行过程中增加了步骤1041。
步骤1041:执行所述当前事务型任务的过程中判断所述当前事务型任务是否出现错误,若是,则回滚所述当前事务型任务。
当前事务型任务在执行过程中,需要判断是否出现错误,如果是,则将当前事务型任务回滚,也就是使数据库回到当前事务型任务执行前的状态属性,并将锁的状态属性更改为完成。
步骤105:根据当前事务型任务执行情况提交所述当前事务型任务。
如果当前事务型任务完成全部操作都没有出现错误,则提交当前事务型任务,同时将锁对象的状态属性更改为完成。
采用实施例1提供的方法,在分布式***中构建锁对象,并通过锁对象的状态属性来控制事务型任务的并发执行,从而解决了现有技术的数据库锁机制在针对非关系数据库时,由于没有适合作为数据库锁的业务数据,从而难以使用的问题。
实施例2
实施例2提供了一种事务型任务处理方法,用于处理事务型任务。该方法的具体流程示意图如图2所示,包括下述步骤:
步骤201:接收当前事务型任务。
步骤202:根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性,如果所述状态属性显示为完成,则执行步骤2021,如果所述状态属性显示为运行,则执行步骤2022。
所述锁对象可以包含任务标识属性、状态属性、开始时间属性和超时阈值属性,所述状态属性用于显示锁对象的运行状态,所述开始时间属性用于记录执行所述当前事务型任务时的时间,所述超时阈值属性用于设置处理任务能用的最长时间,所述任务标识用于唯一表示任务。根据所述当前事务型任务处理请求查询锁对象的状态属性,锁对象的状态属性可能会出现两种情况,因此会产生两种不同的操作流程。当锁对象的状态属性显示为完成时,执行步骤2021;当锁对象的状态属性显示为运行时,执行步骤2022。
步骤2021:执行所述当前事务型任务,并记录所述当前事务型任务的任务标识和当前时间,同时将所述状态属性修改为运行。
步骤2022:判断前一任务的执行时间是否大于所述超时阈值属性的值,若是,则执行所述当前事务型任务,并记录所述当前事务型任务的任务标识和当前时间,所述前一任务指所述当前事务型任务执行之前,所述锁对象的所述任务标识所记录的事务型任务。
步骤202、步骤2021和步骤2022所提供的锁对象可以包含任务标识属性、状态属性、开始时间属性(startTime)和超时阈值属性(overTimeMinutesThresHold)四个属性,其中任务标识属性用来记录最近执行任务的任务标识,状态属性用于显示锁的执行状态,代表了锁是否空闲,开始时间属性用来记录当前事务型任务开始执行时的时间,超时阈值属性指处理任务能用的最长时间。
分布式***接收当前事务型任务后,会查询锁对象的状态属性,如果查询到锁对象的状态属性为完成,则开始执行当前事务型任务,并将当前事务型任务所携带的任务标识记录在锁对象的任务标识属性中,同时将当前时间记录在开始时间属性中,同时将锁对象的状态属性更改为运行;如果查询到锁对象的状态属性为运行,则需要比较前一任务的执行时间和超时阈值属性的值的大小,如果前一任务的执行时间大于超时阈值属性的值,则直接执行当前事务型任务,并将当前事务型任务所携带的任务标识记录在锁的任务标识属性中,同时将当前时间记录在开始时间属性中。当前时间指***当前所显示的时间,任务的执行时间指该任务已经执行的时间,具体计算方法为:当前时间与该任务开始时锁对象的开始时间属性所记录的开始时间之差。
步骤203:根据执行情况提交所述当前事务型任务。
本实施例提供的方法,在分布式***中构建锁对象,并通过锁对象的状态属性来控制事务型任务的并发执行,从而解决了现有技术的数据库锁机制在针对非关系数据库时,由于没有适合作为数据库锁的业务数据,从而难以使用的问题;另外,本实施例通过在锁对象中设置开始时间属性和超时阈值属性的方式,使得在接收当前事务型任务后,能够判断前一任务是否超时,在前一任务超时的条件下,当前事务型任务直接执行,从而解决了当事务型任务执行缓慢时,造成其它事务型任务的长时间等待的问题。
实施例3
在实施例2中提到根据执行情况提交所述当前事务型任务,其实在提交所述当前事务型任务之前,实施例还可以包括判断当前事务型任务的执行时间是否大于超时阈值属性的值。因此就构成了本申请的实施例3,本申请的实施例3与实施例2相比,除步骤203外,其它步骤均相同。参考附图3,实施例2的步骤203在本实施例中变化为:
步骤3031:判断当前事务型任务的执行时间是否大于超时阈值属性的值,若是,则执行步骤3032,若否则执行步骤3033。
步骤3032:回滚所述当前事务型任务。
步骤3033:提交所述当前事务型任务。
在当前事务型任务执行结束时,无论是回滚还是提交,本实施例还可以包括将锁的状态属性更改为完成。
采用实施例3提供的方法,能够获得以下有益效果:第一,在***中构建锁对象,并通过锁对象的状态属性来控制事务型任务的并发执行,从而解决了现有技术的数据库锁机制在针对非关系数据库时,由于没有适合作为数据库锁的业务数据,从而难以使用的问题;第二,本实施例通过在锁对象中设置开始时间属性和超时阈值属性的方式,使得在接收当前事务型任务后,能够判断前一任务是否超时,在前一任务超时的条件下,当前事务型任务直接执行,从而解决了当事务型任务执行缓慢时,造成其它事务型任务的长时间等待的问题;第三,本实施例在提交当前事务型任务前,通过判断当前事务型任务的执行时间是否大于超时阈值属性的值来决定当前事务型任务是否提交,从而防止了多任务并发执行时对数据库的更新出错的问题。
实施例4
实施例4提供了一种事务型任务处理方法,用于处理事务型任务。该方法的具体流程示意图如图4所示,包括下述步骤:
步骤401:接收当前事务型任务处理请求。
步骤402:根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性,如果所述状态属性显示为完成,则执行步骤4021,如果所述状态属性显示为运行,则执行步骤4022。
步骤4021:执行所述当前事务型任务,并记录所述当前事务型任务的任务标识和当前时间,同时将所述状态属性修改为运行。
步骤4022:判断前一任务的执行时间是否超时,若是,则执行所述当前事务型任务,并记录所述当前事务型任务的任务标识和当前时间。
本实施例在步骤402根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性之前,也可以包括锁对象的构建和存储;
步骤202、步骤2021和步骤2022所提供的锁对象可以包含任务标识属性、状态属性、开始时间属性、超时阈值属性、超时次数属性和超时次数阈值属性,所述状态属性用于显示锁的运行状态,所述开始时间属性用于记录任务开始执行时的时间,所述超时阈值属性用于设置处理任务能用的最长时间,所述超时次数属性用于记录任务执行超时的次数,所述超时次数阈值属性用于设置超时次数属性的最大值,所述任务标识用于唯一表示任务;
如表1锁对象的属性信息所示,本实施例的锁对象的属性信息包含任务标识属性、状态属性、开始时间属性、超时阈值属性、超时次数属性(timeOutTimes)和超时次数阈值属性(timeOutThresHold)六个属性。
表1:锁对象的属性信息
taskName |
startTime |
overTimeMinutesThresHold |
timeOutTimes |
timeOutThresHold |
status |
本实施例的锁对象的属性中,任务标识属性用来记录最近执行任务的任务标识,状态属性显示锁对象的运行状态,代表了锁对象是否空闲,开始时间属性用来记录当前事务型任务开始执行时的时间,超时阈值属性用于设置处理任务能用的最长时间,超时次数属性用来记录***中的任务执行超时的次数,超时次数阈值属性用于设置超时次数属性的最大值。
步骤4031:判断当前事务型任务的执行时间是否大于超时阈值属性的值。
步骤4032:若是,则回滚所述当前事务型任务,并增大超时次数属性的值。
步骤4033:若否,则提交所述当前事务型任务。
当判断当前事务型任务的执行时间大于超时阈值属性的值时,可以通过多种方式增大超时次数属性的值,特别的,当判断当前事务型任务的执行时间大于超时阈值属性的值时,将任务回滚并将超时次数属性的值加1,使得所述超时次数属性能够用于统计***在一段时间内的,执行任务超时的总次数。
采用实施例4提供的方法,能够获得以下有益效果:第一,在***中构建锁对象,并通过锁对象的状态属性来控制事务型任务的并发执行,从而解决了现有技术的数据库锁机制在针对非关系数据库时,由于没有适合作为数据库锁的业务数据,从而难以使用的问题;第二,本实施例通过在锁对象中设置开始时间属性和超时阈值属性的方式,使得在接收当前事务型任务后,能够判断前一任务是否超时,在前一任务超时的条件下,当前事务型任务直接执行,从而解决了当事务型任务执行缓慢时,造成其它事务型任务的长时间等待的问题;第三,本实施例在提交当前事务型任务前,通过判断当前事务型任务的执行时间是否大于超时阈值属性的值来决定当前事务型任务是否提交,从而防止了多任务并发执行时对数据库的更新出错的问题;第四,本实施提供的锁对象,当所执行的任务超时时,通过将锁的超时次数属性的值得变化,用来统计***运行过程的超时次数。
实施例5
在实施例4中提到增大超时次数属性的值,其实在增大超时次数属性的值之后,实施例还可以包括比较超时次数属性的值和超时次数阈值属性的值的大小,从而调整超时阈值属性的值。因此就构成了本申请的实施例5,本申请的实施例5与实施例4相比,步骤504和505之外,其它步骤均相同。参考附图5:
步骤504:判断超时次数属性的值是否大于超时次数阈值属性的值。
步骤505:若是,则增大超时阈值属性的值,并将超时次数属性的值调整为0。
在一段时间内(例如:一天时间),当超时次数属性大于超时次数阈值属性的值时,说明所设置的超时阈值属性的值过小,导致任务执行频繁超时,影响任务执行的效率,因此需要增大超时阈值属性的值。其中一种优选的增大超时阈值属性的值的方式是,将超时阈值属性的值乘以2。
采用实施例5提供的方法,能够获得以下有益效果:第一,在***中构建锁对象,并通过锁对象的状态属性来控制事务型任务的并发执行,从而解决了现有技术的数据库锁机制在针对非关系数据库时,由于没有适合作为数据库锁的业务数据,从而难以使用的问题;第二,本实施例通过在锁对象中设置开始时间属性和超时阈值属性的方式,使得在接收当前事务型任务后,能够判断前一任务是否超时,在前一任务超时的条件下,当前事务型任务直接执行,从而解决了当事务型任务执行缓慢时,造成其它事务型任务的长时间等待的问题;第三,本实施例在提交当前事务型任务前,通过判断当前事务型任务的执行时间是否大于超时阈值属性的值来决定当前事务型任务是否提交,从而防止了多任务并发执行时对数据库的更新出错的问题;第四,本实施提供的锁对象,当所执行的任务超时时,通过将锁的超时次数属性的值得变化,用来统计***运行过程的超时次数;第四,本实施提供的锁对象,能够判断是否频繁超时,在频繁超时的情况下通过增大超时阈值属性的值,来提高任务执行的效率。
实施例6
基于相同的发明构思,实施例6提供了一种事务型任务处理装置,用于处理事务型任务。如图6所示,该装置600包括:接收单元601、判断单元602、锁对象单元603、执行单元604和提交单元605,其中:
接收单元601,用于接收当前事务型任务对数据库的处理请求;
判断单元602,用于判断锁对象单元以及判断大小;
锁对象单元603,用于调节数据库中多任务的并发执行,包含任务标识子单元6031和状态子单元6032,所述状态子单元的状态属性包括运行和完成;
执行单元604,当所述判断单元判断锁对象单元的状态子单元的状态属性为完成时,用于执行所述当前事务型任务;
提交单元605,用于根据执行情况提交所述当前事务型任务。
接收单元接收当前事务型任务对数据库的处理请求后,判断单元判断锁对象单元的状态子单元的状态属性,如果状态属性显示为完成,则执行单元执行当前事务型任务,最后,提交单元根据执行单元对任务的执行情况提交所述当前事务型任务。
特别的,该装置还可以包括一个监控单元606,在任务执行时用于监控任务是否出错,如果监控到任务出错,则直接由执行单元604将任务回滚。
特别的,所述锁对象单元还可以包含开始时间子单元6033和超时阈值子单元6034,所述开始时间子单元6033用于记录执行所述当前事务型任务时的时间,所述超时阈值子单元6034用于设置处理任务能用的最长时间,当所述判断单元602判断锁对象单元603的状态子单元6032的状态属性为运行时:则判断单元602判断所述锁对象单元603的所述任务标识子单元6031所记录的任务的执行时间是否大于所述超时阈值子单元6034的值,若是,则执行单元执行所述当前事务型任务,并由开始时间子单元6033记录执行所述当前事务型任务时的时间。
特别的,所述锁对象单元还可以包含:开始时间子单元6033、超时阈值子单元6034、超时次数子单元6035和超时次数阈值子单元6036,所述开始时间子单元6033用于记录执行所述当前事务型任务时的时间,所述超时阈值子单元6034用于设置处理任务能用的最长时间,所述超时次数子单元6035用于记录任务执行超时的次数,所述超时次数阈值子单元6036用于设置超时次数属性的最大值,在提交单元605提交所述当前事务型任务时:判断单元602判断当前事务型任务的执行时间是否大于超时阈值子单元6034的值,若是,则增大超时次数子单元6035的值,并且提交单元605回滚所述当前事务型任务;若否,则提交单元605提交所述当前事务型任务。另外,当增大超时次数子单元6035的值之后,判断单元602还可以判断超时次数子单元6035的值是否大于超时次数阈值子单元6036的值,若果是,则增大超时阈值子单元6034的值,并且将超时次数子单元6035的值修改为0。
采用实施例6提供的一种事务型任务处理装置,由于该装置锁单元的使用并不依赖数据库的业务数据,从而克服了现有技术的数据库锁机制对数据库业务数据依赖的问题。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。