本发明涉及工作流流转技术领域,尤其涉及一种节点流转方法、装置、终端及存储介质。
背景技术:
随着办公系统自动化应用越来越高,流程化的业务操作流程也越来越复杂,引入工作流引擎可以有效地解决流程个性化、复杂化的应用场景,工作流引擎被广泛应用于各种信息化系统中,将原本散乱的业务梳理后定制成业务规范流程,进而约束业务的规范化处理和运转,定制流程规范后,将其部署到工作流引擎中,由工作流引擎自动驱动业务流程的进行。
工作流引擎实现工作流流转依赖其后台的数据库表,对每一个单据都需要查询数据库表获得流转的信息,如activiti引擎,其实现的工作流流转依赖其后台的act_ru_*、act_hi_*表。其存在的问题主要是:当单据数据增长到一定范围(如万级以上)后,引擎本身的表数据量会急剧膨胀,运维人力、资源的消耗也随之急剧增加。
技术实现要素:
本发明的主要目的在于提供一种节点流转方法,旨在解决单据数据量大时,工作流引擎的表数据量急剧膨胀的技术问题。
为实现上述目的,本发明提供一种节点流转方法,其特征在于,所述节点流转方法包括以下步骤:
在检测到节点流转指令后,获取所述节点流转指令对应的目标单据;
获取所述目标单据的流转条件,并根据所述目标单据获取所述目标单据所处的当前流程节点;
基于所述目标单据的流转条件和当前流程节点,并调用预定义的流转接口,获得所述预定义的流转接口返回的所述目标单据的目标节点;
将所述目标单据流转到所述目标节点,并更新所述目标单据中的当前流程节点字段。
可选地,所述调用预定义的流转接口的步骤之前包括:
获取工作流引擎中已部署的流程图,解析所述流程图以获得流程定义信息,所述流程定义信息至少包括节点以及流转条件;
根据所述流程定义信息封装预定义的流转接口。
可选地,所述根据所述流程定义信息封装预定义的流转接口的步骤之后包括:
若检测到节点跳转指令,则获取所述节点跳转指令对应的待流转单据;
调用所述预定义的流转接口,获取所述预定义的流转接口返回的节点列表;
接收用户基于所述节点列表选定的指定节点,将所述待流转单据流转到所述指定节点。
可选地,所述获得所述预定义的流转接口返回的所述目标单据的目标节点的步骤之后包括:
获取目标节点相同的所有目标单据;
所述将所述目标单据流转到所述目标节点,并更新所述目标单据中的当前流程节点字段的步骤包括:
将所有目标单据批量流转到所述目标节点,并更新所有目标单据中的当前流程节点字段。
可选地,所述节点流转方法还包括:
检测到回退指令后,获取该回退指令对应的待回退单据;
根据所述待回退单据查询预置的流转日志表,基于所述查询预置的流转日志表的查询结果获取所述待回退单据流经过的历史节点,并输出所述历史节点组成的历史节点列表;
接收用户基于所述历史节点列表选定的回退节点,并回退到所述回退节点。
可选地,所述根据所述目标单据获取所述目标单据所处的当前流程节点的步骤之前包括:
获取工作流引擎预置的业务表单,在所述业务表单上增加当前流程节点字段;
若检测到流程实例启动,则获取所述流程实例对应的当前单据;
获取所述当前单据当前所处的流程节点,将所述当前单据当前所处的流程节点添加至所述当前单据的当前流程节点字段。
可选地,所述根据所述流程定义信息封装预定义的流转接口的步骤之后包括:
在检测到查询指令时,获取当前查询单据所处的当前节点;
将所述当前节点作为输入参数调用所述预定义的流转接口;
输出所述预定义的流转接口返回的所述当前节点的下一节点及流转条件。
此外,为实现上述目的,本发明还提供一种节点流转装置,所述节点流转装置包括:
单据获取模块,用于在检测到节点流转指令后,获取所述节点流转指令对应的目标单据;
流转获取模块,用于获取所述目标单据的流转条件,并根据所述目标单据获取所述目标单据所处的当前流程节点;
调用模块,用于基于所述目标单据的流转条件和当前流程节点,并调用预定义的流转接口,获得所述预定义的流转接口返回的所述目标单据的目标节点;
流转模块,用于将所述目标单据流转到所述目标节点,并更新所述目标单据中的当前流程节点字段。
此外,为实现上述目的,本发明还提供一种节点流转终端,所述节点流转终端包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的节点流转程序,其中所述节点流转程序被所述处理器执行时,实现如上述的节点流转方法的步骤。
此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有节点流转程序,其中所述节点流转程序被处理器执行时,实现如上述的节点流转方法的步骤。
本发明实施例通过在检测到节点流转指令后,获取所述节点流转指令对应的目标单据;获取所述目标单据的流转条件,并根据所述目标单据获取所述目标单据所处的当前流程节点,即可直接从目标单据的业务数据中获取目标单据的当前流程节点,而无需在后台设置专门的记录表用于存储单据当前流程节点,提高了查询性能,简化了业务实现逻辑,业务更清晰;通过调用预定义的流转接口,将目标单据的流转条件和当前流程节点作为预定义的流转接口的输入参数,可获得预定义的流转接口返回的输出参数:目标单据将流向的目标节点,使得单据实际流转时不再调用工作流引擎的流转接口,不依赖工作流引擎后台的数据库表,用户可以直接通过预定义的流转接口查询到目标节点,直接在业务数据上关联目标节点,可节省大量的数据库空间,减少维护成本。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的节点流转终端结构示意图;
图2为本发明节点流转方法第一实施例的流程示意图;
图3为本发明节点流转方法实施例中一实例示意图;
图4为本发明节点流转方法第二实施例的流程示意图;
图5为本发明节点流转装置第一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参见图1,图1为本发明所提供的节点流转终端的硬件结构示意图。
所述节点流转终端可以是pc,也可以是智能手机、平板电脑、便携计算机、台式计算机等具有显示功能的设备终端,可选地,所述节点流转终端可以是服务器设备,存在节点流转的后端管理系统,用户通过所述后端管理系统对节点流转终端进行管理。
所述节点流转终端可以包括:处理器101以及存储器201等部件。在所述节点流转终端中,所述处理器101与所述存储器201连接,所述存储器201上存储有节点流转程序,处理器101可以调用存储器201中存储的节点流转程序,并实现如下述节点流转方法各实施例的步骤。
所述存储器201,可用于存储软件程序以及各种数据。存储器201可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如节点流转程序)等;存储数据区可包括数据库,可用于存储本发明中的单据等。此外,存储器201可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器101,是节点流转终端的控制中心,利用各种接口和线路连接整个节点流转终端的各个部分,通过运行或执行存储在存储器201内的软件程序和/或模块,以及调用存储在存储器201内的数据,执行节点流转终端的各种功能和处理数据,从而对节点流转终端进行整体监控。处理器101可包括一个或多个处理单元;可选地,处理器101可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器101中。
本领域技术人员可以理解,图1中示出的节点流转终端结构并不构成对节点流转终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
基于上述硬件结构,提出本发明方法各个实施例。
为更好地理解本发明技术方案与现有技术的区别,首先以activiti工作流引擎为例对现有技术作简要介绍。应注意的是,本发明实施例中的“单据”,指工作流系统中供用户查看和/或编辑的、流程实例的业务数据。
整个工作流系统包含业务数据和流程数据。工作流引擎一般只涉及流程数据,为实现工作流的流转,会为工作流引擎设计一套工作流的表结构,来辅助流程引擎的实现,如记录节点流转历史/流转轨迹的表,如activiti工作流引擎的act_ru_*、act_hi_*表;业务数据随业务的不同而不同,具有一系列业务表。
现有技术中,通过调用activiti的流转接口,查询act_ru_*、act_hi_*表获得单据将流向的目标节点,再执行流转,且每次节点流转都需要操作多张表,流程复杂,在单据量较多时,时效性差。
本发明提供一种节点流转方法,通过在业务数据中增加当前流程节点字段,标识单据当前所处的流程节点;并解析activiti流程图,获取流程图定义信息,将流程定义信息封装成预定义的流转接口;在检测到节点流转指令时,调用预定义的流转接口,将单据当前所处的流程节点、流转线条件输入预定义的流转接口,获得预定义的流转接口输出的目标节点。可实现:单据实际流转时不再调用act的流转接口,不依赖act_ru_*、act_hi_*等表,用户可以直接根据业务数据上的当前流程节点,通过封装的预定义的流转接口查询到目标节点,进而无需创建过多用于流程流转的表,减少工作流引擎的数据量。
参照图2,图2为本发明节点流转方法第一实施例的流程示意图。
本实施例中,所述节点流转方法包括以下步骤:
步骤s10,在检测到节点流转指令后,获取所述节点流转指令对应的目标单据;
节点流转指令,可以由用户在对单据执行完操作后,点击提交单据,触发节点流转指令;也可以在满足预设的流转条件后自动触发节点流转指令。目标单据,即节点流转指令指向的待流转的单据。
步骤s20,获取所述目标单据的流转条件,并根据所述目标单据获取所述目标单据所处的当前流程节点;
目标单据的流转条件,指决定目标单据是否流转以及流向哪个节点的状态,将目标单据的流转条件与预置在工作流引擎中的流转条件进行比较,判断目标单据是否流转以及流向哪个节点。
本实施例中,目标单据当前所处的流程节点,不再通过工作流引擎的流转接口查询后台的数据库表获得,而是直接从目标单据的业务数据中获取目标单据当前所处的流程节点。因此,在从目标单据中获取所述目标单据当前所处的流程节点之前,在单据的业务数据中增加当前流程节点字段,用于标识单据当前所处的流程节点,如表1为增加当前流程节点字段的一个示例。
其中,为便于后续描述,将目标单据当前所处的流程节点作为当前流程节点。
在一实施例中,所述根据所述目标单据获取所述目标单据所处的当前流程节点的步骤之前包括:
步骤s21,获取工作流引擎预置的业务表单,在所述业务表单上增加当前流程节点字段;
获取工作流引擎预置的部分业务表单或全部业务表单,在业务表单上增加当前流程节点字段,不同业务具有对应不同的业务表单,本实施例中,业务表单是单据的模板,单据是结合具体流程实例的业务表单。
每个流程实例都会和具体的一张业务表单关联(流程需要实现的主业务表),并指明业务表的id字段。例如,请假流程,请假单就是业务主表。报销流程,报销单主表,就是业务主表,报销明细子表,只要和报销单主表关联,而不需要和流程实例关联。在给业务流程建模的时候,需要知道此业务流程操作的主业务表,业务表的id主键。在流程实例启动的时候,将此信息生成到流程实例表中。
步骤s22,若检测到流程实例启动,则获取所述流程实例对应的当前单据;
在检测到任意的流程实例启动时,当前单据生成,因为单据是基于业务表单生成的,当前单据也有当前流程节点字段。
步骤s23,获取所述当前单据当前所处的流程节点,将所述当前单据当前所处的流程节点添加至所述当前单据的当前流程节点字段。
在当前单据生成后,将当前单据当前所处的流程节点添加至当前单据的当前流程节点字段,用于标识当前单据的流程流转状态。
通过在目标单据的业务数据中增加当前流程节点字段,将目标单据的节点流转情况直接与业务数据绑定,使得在目标单据流转时,可直接从目标单据的业务数据中获取目标单据的当前流程节点,而无需在后台设置专门的表用于存储单据当前流程节点,且提高了查询性能,简化了业务实现逻辑,业务更清晰。
步骤s30,基于所述目标单据的流转条件和当前流程节点,并调用预定义的流转接口,获得所述预定义的流转接口返回的所述目标单据的目标节点;
预定义的流转接口,即预定义的流转api接口。应注意的是,预定义的流转接口不是工作流引擎本身提供的流转接口,而是根据本发明节点流转方法预先封装的流转api接口。
获取目标单据的当前流程节点和流转条件后,即可调用流转api接口,获得目标单据将流向的流程节点,即本实施例中的目标节点。
调用预定义的流转接口之前还包括预定义的流转接口的封装步骤,即所述调用预定义的流转接口的步骤之前包括:
步骤s31,获取工作流引擎中已部署的流程图,解析所述流程图以获得流程定义信息,所述流程定义信息至少包括节点以及流转条件;
本发明各实施例中,保留工作流引擎的流程管理能力,用户仍可以通过工作流引擎自定义各种流程地图,完成流程图的部署,在将流程图部署成功后,可将已部署成功的整张流程图存储于内存之中。在工作流引擎为activiti引擎时,流程图为activiti流程图。
在封装预定义的流转接口时,调用工作流引擎本身的api接口自动解析流程图,获取流程图定义信息(本实施例称“流程定义信息”),其中,流程定义信息包括:节点、网关等元素以及各元素之间的线(关系)、流转条件。
为便于理解流程定义信息,现给出如图3所示的实例:
解析流程图,获得的该流程图的节点有:启动、开始、公司加班、下班回家、完工、终止。流程图中所有流转线列表有:
1、从启动节点流转到开始节点,条件为空;(null为空指针,不引用有效对象,此处指从启动节点一定会流转到开始节点而非其他节点,无需任何条件判断,下文中条件为空的含义相同)
2、从公司加班节点流转到完工节点,条件为空;
3、从完工节点流转到终止节点,条件为空;
4、从开始节点流转到xor网关,条件为空;(xor网关经常用于决定流程的流转方向,排它网关通道,只能有一条分支执行)
5、从xor网关流转到下班回家节点,条件为下班;
6、从下班回家节点到终止节点,条件为空;
7、从xor网关流转到公司加班节点,条件为加班。
将流程图中的所有节点以及流转线封装到流转api接口,实现所有上述流转api接口的节点查询功能。其中,在流程建模的时候,获取到业务关键字段的值(如本例中的条件为上班还是下班),做一些相关的判断或者显示使用。这些就需要将单据中的业务数据做为变量传递到流程上下文中。
步骤s32,根据所述流程定义信息封装预定义的流转接口。
基于解析流程图获得的流程定义信息,封装预定义的流转接口。
基于解析流程图获得的流程定义信息,预定义的流转接口可实现的功能包括:(1)输入当前节点,流转线条件,输出目标节点名称;(2)直接输入当前节点查询所述当前节点的下一节点及流转条件;(3)获取所有节点列表。
可选地,所述根据所述流程定义信息封装预定义的流转接口的步骤之后包括:
步骤s321,在检测到查询指令时,获取当前查询单据所处的当前节点;
在流程管理系统的界面,可设置触发查询指令的可点击控件,在检测到用户点击该可点击控件时,触发生成查询指令。当前查询单据指查询指令被触发时,流程管理系统的界面显示的正在查询的单据。
步骤s322,将所述当前节点作为输入参数调用所述预定义的流转接口,输出所述预定义的流转接口返回的所述当前节点的下一节点及流转条件。
预定义的流转接口在接收到当前节点时,经过封装时所基于的流程定义信息,计算获得当前节点的下一节点,以及从当前节点流转到下一节点的流转条件。可便于用户明确流程流转线的流向以及相关流转条件,以便用户根据需求进行操作。
步骤s40,将所述目标单据流转到所述目标节点,并更新所述目标单据中的当前流程节点字段。
在确定目标节点后,将目标单据流转到目标节点,并更新目标单据业务数据中当前流程节点字段,将当前流程节点更新为目标节点,以便下次流转时供预定义的流转接口调用。
本实施例通过在目标单据的业务数据中增加当前流程节点字段,将目标单据的节点流转情况直接与业务数据绑定,使得在目标单据流转时,可直接从目标单据的业务数据中获取目标单据的当前流程节点,而无需在后台设置专门的表用于存储单据当前流程节点,且提高了查询性能,简化了业务实现逻辑,业务更清晰;
通过调用预定义的流转接口,将目标单据的流转条件和当前流程节点作为预定义的流转接口的输入参数,可获得预定义的流转接口返回的输出参数:目标单据将流向的目标节点。使得单据实际流转时不再调用工作流引擎的流转接口,不依赖工作流引擎后台的数据库表,用户可以直接通过预定义的流转接口查询到目标节点,直接在业务数据上关联目标节点,同时,由预定义的流转接口的封装过程:解析工作流引擎中已部署的流程图,获得流程定义信息,基于流程定义信息封装预定义的流转接口,可知在本发明实施例中,用户仍可以自定义各种流程地图,即还保留有工作流引擎优秀的流程管理能力,即本发明实施例可保留工作流引擎的优势,又可解决工作流引擎的一个问题,实现更好地流程管理;由于只使用了工作流引擎的部署图,抛弃了中间流程记录表,可节省大量的数据库空间,减少维护成本。
进一步地,如图4,在本发明节点流转方法第二实施例中,所述步骤s32之后包括:
步骤s33,若检测到节点跳转指令,则获取所述节点跳转指令对应的待流转单据;
在流程管理系统的界面,可设置触发节点跳转的可点击控件,在检测到用户点击该可点击控件时,触发生成节点跳转指令。待流转单据,可从节点跳转指令中获取待流转单据标识,基于待流转单据标识获得待流转单据。
步骤s34,调用所述预定义的流转接口,获取所述预定义的流转接口返回的节点列表;
在预定义的流转接口的封装阶段,可将流程图中的所有节点或部分节点的节点地址(或节点id)封装到预定义的流转接口,在检测到节点跳转指令后,调用所述预定义的流转接口,获得节点列表。
步骤s35,接收用户基于所述节点列表选定的指定节点,将所述待流转单据流转到所述指定节点。
预定义的流转接口返回的节点列表,可设置为可点击的节点列表,根据用户的点击操作确定用户选定的指定节点后,将待流转单据流转到用户选定的指定节点。
本实施例通过若检测到节点跳转指令,则获取所述节点跳转指令对应的待流转单据;调用所述预定义的流转接口,获取所述预定义的流转接口返回的节点列表;接收用户基于所述节点列表选定的指定节点,将所述待流转单据流转到所述指定节点,可由用户自由指定待流转单据将流向的下一个节点,实现自由流转。
进一步地,在本发明节点流转方法第三实施例中,所述获得所述预定义的流转接口返回的所述目标单据的目标节点的步骤之后包括:
步骤s50,获取目标节点相同的所有目标单据;
所述将所述目标单据流转到所述目标节点,并更新所述目标单据中的当前流程节点字段的步骤包括:
将所有目标单据批量流转到所述目标节点,并更新所有目标单据中的当前流程节点字段。
因为目标单据的业务数据直接绑定节点流转情况,因此可以直接从各目标单据的业务数据中获取对应的流程节点信息,获取其中的当前流程节点,并获得各目标单据的流转条件,基于各目标单据的流转条件和当前流程节点获得各目标单据的目标节点,获取目标节点相同的所有目标单据,将目标节点相同的所有目标单据批量流转到目标节点,并更新所有目标单据中的当前流程节点字段。
本实施例通过获取目标节点相同的所有目标单据,将所有目标单据批量流转到所述目标节点,可以根据业务场景需要自动适配单据数量,以达到批量效果,大大提升流转效率。
进一步地,在本发明节点流转方法第四实施例中,现有的单据的回退流程复杂,需要通过引擎获取回退历史记录,再通过复杂的接口调用完成回退操作,为简化单据的回退操作,所述节点流转方法还包括:
步骤s60,检测到回退指令后,获取该回退指令对应的待回退单据;
用户在下达回退指令后,该回退指令对应的待回退单据即当前操作单据
步骤s61,根据所述待回退单据查询预置的流转日志表,基于所述查询预置的流转日志表的查询结果获取所述待回退单据流经过的历史节点,并输出所述历史节点组成的历史节点列表;
对每一次的节点流转,都形成一个预置的流转日志表,用于在节点流转时,记录流过的节点信息。预置的流转日志表可包括用于标识单据的业务主键、上一个流程节点、当前流程节点、流转日期、流转人等,如表2。
可选地,可设置两种回退指令,一种为回退到上一个流程节点,另一种为回退到指用户指定的历史节点,步骤s60包括:在检测到第一回退指令后,查询预置的流转日志表,获得上一个流程节点,回退到上一个流程节点;在检测到第二回退指令后,查询预置的流转日志表,获得当前操作的单据流经过的所有历史节点,生成历史节点列表,并输出历史节点列表以供用户指定回退的节点。
此外,还可以由用户调用接口获取预设的节点列表(如果有特殊业务限制,则需要基于一定条件从所有节点中过滤出预设的节点列表后展示),在预设的节点列表中指定回退节点,直接跳转到该回退节点。
步骤s62,接收用户基于所述历史节点列表选定的回退节点,并回退到所述回退节点。
基于用户操作确定回退节点后,并根据所述节点选择指令回退到用户选择的节点。
本实施例通过检测到回退指令后,查询预置的流转日志表,获取流经过的历史节点列表,并输出历史节点列表以供用户选择;接收用户触发的节点选择指令,并根据所述节点选择指令回退到用户选择的节点,可简化单据的回退操作。
此外,本发明还提供一种与上述节点流转方法各步骤对应的节点流转装置。
参照图5,图5为本发明节点流转装置第一实施例的功能模块示意图。
在本实施例中,本发明节点流转装置包括:
单据获取模块10,用于在检测到节点流转指令后,获取所述节点流转指令对应的目标单据;
流转获取模块20,用于获取所述目标单据的流转条件,并根据所述目标单据获取所述目标单据所处的当前流程节点;
调用模块30,用于基于所述目标单据的流转条件和当前流程节点,并调用预定义的流转接口,获得所述预定义的流转接口返回的所述目标单据的目标节点;
流转模块40,用于将所述目标单据流转到所述目标节点,并更新所述目标单据中的当前流程节点字段。
进一步地,本发明节点流转装置还包括:
解析模块,用于获取工作流引擎中已部署的流程图,解析所述流程图以获得流程定义信息,所述流程定义信息至少包括节点以及流转条件;
接口封装模块,用于根据所述流程定义信息封装预定义的流转接口。
进一步地,本发明节点流转装置还包括:
第一获取模块,用于若检测到节点跳转指令,则获取所述节点跳转指令对应的待流转单据;
调用模块30,还用于调用所述预定义的流转接口,获取所述预定义的流转接口返回的节点列表;
流转模块40,还用于接收用户基于所述节点列表选定的指定节点,将所述待流转单据流转到所述指定节点。
进一步地,所述流转模块40,还用于获取目标节点相同的所有目标单据;将所有目标单据批量流转到所述目标节点,并更新所有目标单据中的当前流程节点字段。
进一步地,本发明节点流转装置还包括:
回退触发模块,用于检测到回退指令后,获取该回退指令对应的待回退单据;
历史节点查询模块,用于根据所述待回退单据查询预置的流转日志表,基于所述查询预置的流转日志表的查询结果获取所述待回退单据流经过的历史节点,并输出所述历史节点组成的历史节点列表;
回退模块,用于接收用户基于所述历史节点列表选定的回退节点,并回退到所述回退节点。
进一步地,本发明节点流转装置还包括:
字段修改模块,用于获取工作流引擎预置的业务表单,在所述业务表单上增加当前流程节点字段;
第二获取模块,用于若检测到流程实例启动,则获取所述流程实例对应的当前单据;
字段更新模块,用于获取所述当前单据当前所处的流程节点,将所述当前单据当前所处的流程节点添加至所述当前单据的当前流程节点字段。
进一步地,本发明节点流转装置还包括:
节点获取模块,用于在检测到查询指令时,获取当前查询单据所处的当前节点;
调用模块30,还用于将所述当前节点作为输入参数调用所述预定义的流转接口;输出所述预定义的流转接口返回的所述当前节点的下一节点及流转条件。
本发明还提出一种存储介质,其上存储有计算机程序。所述存储介质可以是图1的节点流转终端中的存储器201,也可以是如rom(read-onlymemory,只读存储器)/ram(randomaccessmemory,随机存取存储器)、磁碟、光盘中的至少一种,所述存储介质包括若干指令用以使得一台具有处理器的终端设备(可以是手机,计算机,服务器,网络设备或本发明实施例中的节点流转终端等)执行本发明各个实施例所述的方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者服务端不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者服务端所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者服务端中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。