具体实施方式
本申请实施例提供的状态机的运行方法,可以应用于如图1所示的事件消费系统。该事件消费系统可以包括:事件监测装置10和多个服务器11。其中,事件监测装置10监测业务系统产生的触发事件,并将监测到的触发事件分别发送给多个服务器11;多个服务器11通过竞争机制分别竞争该触发事件的消费权限,竞争到该触发事件消费权限的第一服务器消费该触发事件,即第一服务器根据该触发事件控制自身所管理的状态机的运行,而未竞争到该触发事件消费权限的第二服务器则忽略该触发事件,即第二服务器对自身所管理的状态机不做任何控制操作。可选的,上述事件监测装置10可以为与业务系统相关的各种形式的传感器。
为了使本申请的目的、技术方案及优点更加清楚明白,通过下述实施例并结合附图,对本申请实施例中的技术方案进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,下述方法实施例的执行主体可以是状态机的运行装置,该装置可以通过软件、硬件或者软硬件结合的方式实现成为上述服务器的部分或者全部。
图2为本申请实施例提供的状态机的运行方法的一种流程示意图。本实施例涉及的是服务器如何根据触发事件控制状态机运行的具体过程。如图2所示,该方法可以包括:
S101、当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识。
具体的,在实际应用中,可以预先根据业务系统的实际监测需求,配置相应的状态机。用户可以在状态机的设计界面绘制所需的状态图,这样,服务器将用户所绘制的状态图映射为对应的状态图信息,并将状态图信息保存到数据库中,从而完成状态机的配置。其中,状态图信息主要包括状态表信息以及状态迁移表信息。当然,也可以通过配置文件获取对应的状态图信息,本实施例对此不做限定。例如,配置的状态机可以为:压滤状态机以及密控状态机,压滤状态机可以包括压滤机的各个运行状态以及各个运行状态之间的迁移条件,密控状态机可以包括密控斜轮电机的各个运行状态以及各个运行状态之间的迁移条件等。不同的状态机具有不同的状态机标识,同一种状态机可以包括多个状态机实例,每个状态机实例具有不同的实例标识。
上述触发事件为目标状态机实例的状态迁移条件,当触发事件到来时,各个服务器竞争该触发事件的消费权限。当竞争到该触发事件的消费权限时,服务器便可以从触发事件中提取目标状态机标识和目标实例标识。当未竞争到该触发事件的消费权限时,则忽略该触发事件。这样,当第一个竞争到触发事件消费权限的服务器在处理触发事件过程中宕机,则消费事件系统中的其它服务器继续竞争该触发事件的消费权限,并在竞争到消费权限后继续消费该触发事件,从而保证状态机服务的高可用,以提高状态机运行的可靠性。
S102、根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识。
具体的,状态机实例池用于存储状态机所包括的一个或多个状态机实例,同一个状态机实例池可以缓存不同状态机的状态机实例,当然,不同状态机的状态机实例也可以存储在不同的状态机实例池中。这样,服务器便可以通过目标状态机标识查找到目标状态机所对应的状态机实例池,并通过目标实例标识从状态机实例池中查找对应的目标状态机实例。
S103、若查找到,则从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行。
具体的,上述目标状态机实例的标准上下文用于表征目标状态机实例的当前标准执行状态。在实际运行过程中,服务器可能会存在宕机或者服务器未竞争到触发事件的消费权限,这样,便会导致服务器所管理的目标状态机实例的当前执行状态与当前标准执行状态不相符合,即导致目标状态机实例的运行状态发生丢失,因此,为了提高状态机运行的可靠性,服务器需要从共享内存中获取目标状态机实例的标准上下文,以获知目标状态机实例的当前标准执行状态,从而基于标准上下文以及触发事件控制目标状态机实例的运行。
S104、根据运行结果更新所述标准上下文并同步至所述共享内存。
其中,服务器根据目标状态机实例的运行结果更新目标状态机实例的标准上下文,并将更新后的标准上下文同步至共享内存中,以便在与目标状态机实例相关的下一个触发事件到来时,能够基于更新后的标准上下文以及下一个触发事件控制目标状态机实例的运行。另外,标准上下文存储在共享内存中,事件消费系统中的各个服务器在竞争到触发事件的消费权限后,均可以共享相同的状态机实例的标准上下文,使得状态机服务具有分布式特性,从而提高了状态机运行的可靠性。
目标状态机实例在运行过程中发生状态迁变时,会触发相应的动作消息给业务系统,以使业务系统根据动作消息执行对应的动作。为了防止业务系统宕机导致动作消息丢失,在上述实施例的基础上,可选的,在服务器与业务系统之间增加消息中间件,服务器将所述目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将所述动作消息发送给业务系统,其中,所述动作消息用于指示所述业务系统执行对应的动作。这样,在业务系统重启并进入工作状态时,业务系统便可以从消息中间件中获取相应的动作消息,避免动作消息的丢失。
本申请实施例提供的状态机的运行方法,当服务器竞争到触发事件的消费权限时,从触发事件中提取目标状态机标识和目标实例标识;根据目标实例标识,从与目标状态机标识对应的状态机实例池中查找对应的目标状态机实例;若查找到,则从共享内存中获取目标状态机实例的标准上下文,并根据标准上下文以及触发事件,控制目标状态机实例的运行,以及根据运行结果更新上述标准上下文并同步至共享内存中。由于在状态机的运行过程中,服务器能够根据目标状态机实例的运行结果更新目标状态机实例的标准上下文,并将更新后的标准上下文同步至共享内存中,使得服务器在竞争到触发事件的消费权限,且根据触发事件查找到目标状态机实例时,能够从共享内存中获取目标状态机实例的标准上下文,并根据标准上下文和触发事件,控制目标状态机实例的运行,从而可以有效避免状态机实例的运行状态的丢失,进而提高状态机在运行过程中的可靠性。
在上述实施例的基础上,可选的,若服务器在与目标状态机标识对应的状态机实例池中未查找到对应的目标状态机实例,则服务器获取所述目标状态机标识对应的状态图信息,并根据所述状态图信息,创建所述目标实例标识对应的目标状态机实例。接着,服务器根据触发事件控制所创建的目标状态机实例的运行。另外,服务器还可以根据运行结果,将该目标状态机实例的当前执行状态作为目标状态机实例的标准上下文存储至共享内存中。
具体的,状态图信息可以包括状态迁移表信息和状态表信息。其中,状态迁移表信息可以包括状态机标识、状态迁移条件、状态迁移条件所对应的迁移源状态、迁移条件所对应的迁移目标状态以及状态迁移类型等信息。其中,迁移源状态和迁移目标状态的数量可以为多个。状态表信息可以包括状态机标识、状态区域标识、各个状态、各个状态是否为初始状态、各个状态的状态类型等信息。示例性的,如图3所示,一个状态图加载后便形成一个状态机工厂,一个状态机工厂可以创建多个状态机实例。创建的状态机实例可以存储在相应的状态机实例池中。当目标状态机标识对应的状态机为压滤状态机时,服务器根据压滤状态机的状态图信息(服务器可以通过压滤状态机状态图获取对应的状态图信息),便可以创建对应的压滤机实例1、压滤机实例2……压滤机实例6等,当目标状态机标识对应的状态机为密控状态机时,服务器根据密控状态机的状态图信息(服务器可以通过密控状态机状态图获取对应的状态图信息),便可以创建对应的密控斜轮电机实例。其中,图3中的方框
代表状态机的各个状态,箭头“→”代表状态机的状态迁移条件。
在获取到目标状态机标识对应的状态表信息以及状态迁移表信息之后,服务器创建状态机实例对象,再根据获取到的状态迁移表信息和状态表信息对创建的状态机实例对象进行初始化,得到目标实例标识对应的目标状态机实例。另外,服务器还可以将所创建的目标状态机实例存储到目标状态机标识对应的状态机实例池中,这样,当再次调用该目标状态机实例时,服务器能够直接从状态机实例池中获取该目标状态机实例,并控制该目标状态机实例的运行,从而提高了服务器对状态机运行的处理效率。
在实际应用过程中,可能存在状态机的状态图被修改的情况,为了进一步提高状态机运行的可靠性,可选的,在状态机的运行过程中,若服务器检测到目标状态机实例对应的状态图信息发生变化,则从状态机实例池中删除目标状态机实例。当后续竞争到触发事件,且根据触发事件确定需要调用目标状态机实例时,则服务器根据修改后的状态图信息重新创建目标状态机实例,以确保所创建的目标状态机实例与修改后的状态图信息相符合,从而进一步提高了状态机运行的可靠性。
图4为本申请实施例提供的状态机的运行方法的另一种流程示意图。本实施例涉及的是服务器如何根据标准上下文以及触发事件控制目标状态机实例的运行的具体过程。在上述实施例的基础上,可选的,如图4所示,上述S103中根据标准上下文以及触发事件控制目标状态机实例的运行的过程可以为:
S201、若判断出所述目标状态机实例的当前执行状态与所述当前标准执行状态不一致,则根据所述标准上下文对所述目标状态机实例进行重置,以更新所述目标状态机实例的当前状态表,得到重置后的目标状态机实例。
其中,当前状态表中存储有目标状态机实例的当前执行状态,服务器将目标状态机实例的当前执行状态与从共享内存中获取的当前标准执行状态进行比较,若判断出当前执行状态与当前标准执行状态不一致,则根据标准上下文对目标状态机实例进行重置,以更新目标状态机实例的当前状态表。若判断出当前执行状态与当前标准执行状态一致,则不需要对目标状态机实例进行重置。
S202、根据所述触发事件和所述目标状态机实例的状态迁移表,提取对应的迁移源状态。
S203、若所述迁移源状态存在于重置后的目标状态机实例的当前状态表中,则按照所述触发事件控制所述重置后的目标状态机实例执行相应的状态迁移。
其中,若迁移源状态存在于重置后的目标状态机实例的当前状态表中,则服务器根据触发事件、迁移源状态和重置后的目标状态机实例的状态迁移表信息确定迁移目标状态,并控制重置后的目标状态机实例从当前执行状态(即迁移源状态)迁移至迁移目标状态,从而完成相应的状态迁移。若迁移源状态不存在于重置后的目标状态机实例的当前状态表中,则不执行任何操作。
在本实施例中,在目标状态机实例的当前执行状态与共享内存中存储的目标状态机实例当前标准执行状态不一致时,服务器能够根据共享内存中的标准上下文对目标状态机实例进行重置,使得当前状态表中的当前执行状态为目标状态机实例的当前最新执行状态,从而提高了基于当前最新执行状态和触发事件所控制的状态迁移结果的准确性,进而进一步提高了状态机运行的可靠性。
为了便于本领域技术人员的理解,结合图5所示的分布式状态机系统(可以理解为事件消费系统),介绍本申请实施例提供的状态机的运行过程,具体的:
该分布式状态机系统可以包括:规则引擎、事件中心、多个分布式状态机服务(即多个服务器)、共享内存、数据库、消息中间件以及业务模块(即业务系统)。其中,规则引擎中包括触发事件的产生规则,这些规则可配置;事件中心通过事件监测模块依据配置的规则监测业务系统的运行,从而产生触发事件;多个分布式状态机服务竞争触发事件的消费权限,当竞争到触发事件消费权限的服务器从触发事件中提取目标状态机标识和目标实例标识,并根据目标实例标识,从与目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,若查找到,则从共享内存中获取状态机实例的标准上下文,以及根据标准上下文以及触发事件,控制目标状态机实例的运行,并根据运行结果更新目标状态机实例的标准上下文并同步至共享内存中。其中,状态机实例池中存储有多个状态机实例,如状态机实例1、状态机实例2……状态机实例n等。若从状态机实例池中未查找到对应的目标状态机实例,则从数据库中获取配置数据(即目标状态机标识对应的状态图信息),根据配置数据创建目标实例标识对应的目标状态机实例,并根据触发事件控制所创建的目标状态机实例的运行。同时,分布式状态机服务将目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将触发的动作消息发送给业务模块。
另外,参见图6,上述分布式状态机服务包括控制组件、配置组件(machineconfig)、状态机实例池、执行组件(machine instance)。可选的,还可以包括通知组件。其中,控制组件包括:状态机控制器(machine controller)和状态机服务(machineservice),通用拦截器构成通知组件,状态机实例池使用java的对象池。配置组件“machineconfig”从数据库中加载已经定义好的状态图信息(配置数据),一份状态图信息定义一个状态机的所有状态以及各个状态间的迁变情况。一个状态图信息加载后生成一个状态机工厂(以状态机标识为唯一健),一个状态机工厂,可以生产多个状态机实例。上述创建目标状态机实例的过程可以为:“machine service”向配置组件“machine config”请求对应的状态机工厂,使用获取的工厂创建对应的目标状态机实例,创建后,“machine service”一方面将目标状态机实例缓存到状态机实例池中,避免下次反复创建,另一方面,将创建的目标状态机实例返回,并从共享内存中获取标准上下文执行下一步状态机状态迁变逻辑。执行完状态迁变逻辑后,根据运行结果更新标准上下文并同步至共享内存中。
图7为本申请实施例提供的状态机的运行装置的结构示意图。如图7所示,该装置集成于事件消费系统中的服务器,该事件消费系统中包含多个服务器,该装置可以包括:提取模块20、查找模块21、处理模块22和更新同步模块23。
具体的,提取模块20用于当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;
查找模块21用于根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识;
处理模块22用于在查找到对应的目标状态机实例时,从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;
更新同步模块23用于根据运行结果更新所述标准上下文并同步至所述共享内存。
本申请实施例提供的状态机的运行装置,当服务器竞争到触发事件的消费权限时,从触发事件中提取目标状态机标识和目标实例标识;根据目标实例标识,从与目标状态机标识对应的状态机实例池中查找对应的目标状态机实例;若查找到,则从共享内存中获取目标状态机实例的标准上下文,并根据标准上下文以及触发事件,控制目标状态机实例的运行,以及根据运行结果更新上述标准上下文并同步至共享内存中。由于在状态机的运行过程中,服务器能够根据目标状态机实例的运行结果更新目标状态机实例的标准上下文,并将更新后的标准上下文同步至共享内存中,使得服务器在竞争到触发事件的消费权限,且根据触发事件查找到目标状态机实例时,能够从共享内存中获取目标状态机实例的标准上下文,并根据标准上下文和触发事件,控制目标状态机实例的运行,从而可以有效避免状态机实例的运行状态的丢失,进而提高状态机在运行过程中的可靠性。
在上述实施例的基础上,可选的,该装置还可以包括:获取模块、创建模块和控制模块;
具体的,获取模块用于在未查找到对应的目标状态机实例时,获取所述目标状态机标识对应的状态图信息;
创建模块用于根据所述状态图信息,创建所述目标实例标识对应的目标状态机实例;
控制模块,用于根据所述触发事件控制所述目标状态机实例的运行。
在上述实施例的基础上,可选的,该装置还可以包括:存储模块;
具体的,存储模块用于将所创建的目标状态机实例存储到所述目标状态机标识对应的状态机实例池中。
在上述实施例的基础上,可选的,所述标准上下文包括所述目标状态机实例的当前标准执行状态,处理模块具体用于若判断出所述目标状态机实例的当前执行状态与所述当前标准执行状态不一致,则根据所述标准上下文对所述目标状态机实例进行重置,以更新所述目标状态机实例的当前状态表,得到重置后的目标状态机实例;根据所述触发事件和所述目标状态机实例的状态迁移表,提取对应的迁移源状态;若所述迁移源状态存在于重置后的目标状态机实例的当前状态表中,则按照所述触发事件控制所述重置后的目标状态机实例执行相应的状态迁移。
在上述实施例的基础上,可选的,存储单元还用于将所述目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将所述动作消息发送给业务系统,其中,所述动作消息用于指示所述业务系统执行对应的动作。
在上述实施例的基础上,可选的,所述状态图信息中包含状态迁移表信息和状态表信息,创建模块具体用于创建状态机实例对象;根据所述状态迁移表信息和所述状态表信息对所述状态机实例对象进行初始化,得到所述目标实例标识对应的目标状态机实例。
在上述实施例的基础上,可选的,该装置还可以包括:删除模块;
具体的,删除模块用于若检测到所述状态图信息发生变化,则从所述状态机实例池中删除所述目标状态机实例。
在一个实施例中,还提供了一种事件消费系统,参见图1所示,该系统可以包括事件监测装置和多个服务器。其中,事件监测装置用于监测业务系统产生的触发事件,并将产生的触发事件分别发送给多个服务器,多个服务器竞争该触发事件的消费权限,在竞争到该触发事件的消费权限后,参照上述实施例所述的过程控制状态机的运行,本实施例在此不再赘述。
在一个实施例中,提供了一种服务器,其结构示意图可以如图8所示。该服务器包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该服务器的处理器用于提供计算和控制能力。该服务器的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该服务器的数据库用于存储状态机的运行过程中的数据。该服务器的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种状态机的运行方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种服务器,该服务器包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;
根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识;
若查找到,则从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;
根据运行结果更新所述标准上下文并同步至所述共享内存。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若未查找到,则获取所述目标状态机标识对应的状态图信息;根据所述状态图信息,创建所述目标实例标识对应的目标状态机实例,并根据所述触发事件控制所述目标状态机实例的运行。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将所创建的目标状态机实例存储到所述目标状态机标识对应的状态机实例池中。
在一个实施例中,所述标准上下文包括所述目标状态机实例的当前标准执行状态,处理器执行计算机程序时还实现以下步骤:若判断出所述目标状态机实例的当前执行状态与所述当前标准执行状态不一致,则根据所述标准上下文对所述目标状态机实例进行重置,以更新所述目标状态机实例的当前状态表,得到重置后的目标状态机实例;根据所述触发事件和所述目标状态机实例的状态迁移表,提取对应的迁移源状态;若所述迁移源状态存在于重置后的目标状态机实例的当前状态表中,则按照所述触发事件控制所述重置后的目标状态机实例执行相应的状态迁移。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将所述目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将所述动作消息发送给业务系统,其中,所述动作消息用于指示所述业务系统执行对应的动作。
在一个实施例中,所述状态图信息中包含状态迁移表信息和状态表信息,处理器执行计算机程序时还实现以下步骤:创建状态机实例对象;根据所述状态迁移表信息和所述状态表信息对所述状态机实例对象进行初始化,得到所述目标实例标识对应的目标状态机实例。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若检测到所述状态图信息发生变化,则从所述状态机实例池中删除所述目标状态机实例。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;
根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识;
若查找到,则从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;
根据运行结果更新所述标准上下文并同步至所述共享内存。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若未查找到,则获取所述目标状态机标识对应的状态图信息;根据所述状态图信息,创建所述目标实例标识对应的目标状态机实例,并根据所述触发事件控制所述目标状态机实例的运行。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将所创建的目标状态机实例存储到所述目标状态机标识对应的状态机实例池中。
在一个实施例中,所述标准上下文包括所述目标状态机实例的当前标准执行状态,计算机程序被处理器执行时还实现以下步骤:若判断出所述目标状态机实例的当前执行状态与所述当前标准执行状态不一致,则根据所述标准上下文对所述目标状态机实例进行重置,以更新所述目标状态机实例的当前状态表,得到重置后的目标状态机实例;根据所述触发事件和所述目标状态机实例的状态迁移表,提取对应的迁移源状态;若所述迁移源状态存在于重置后的目标状态机实例的当前状态表中,则按照所述触发事件控制所述重置后的目标状态机实例执行相应的状态迁移。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将所述目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将所述动作消息发送给业务系统,其中,所述动作消息用于指示所述业务系统执行对应的动作。
在一个实施例中,所述状态图信息中包含状态迁移表信息和状态表信息,计算机程序被处理器执行时还实现以下步骤:创建状态机实例对象;根据所述状态迁移表信息和所述状态表信息对所述状态机实例对象进行初始化,得到所述目标实例标识对应的目标状态机实例。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若检测到所述状态图信息发生变化,则从所述状态机实例池中删除所述目标状态机实例。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。