一种虚拟化环境中工作流处理方法和框架与流程

文档序号:12801730阅读:206来源:国知局
一种虚拟化环境中工作流处理方法和框架与流程

本发明涉及计算机软件技术领域,具体涉及一种虚拟化环境中工作流处理方法和框架。



背景技术:

在网络服务领域中,随着虚拟化云计算技术的飞速发展,对于相应的虚拟化管理平台的要求也越来越高,而虚拟化管理平台的中多数操作的流程化,已经成为必不可少的设计,然而现有的工作流框架在后期重复处理任务执行请求时,需不断重新解析xml任务流程定义文件,增加了虚拟化管理平台的处理量,影响其数据处理速度。



技术实现要素:

有鉴于此,本发明实施例提供一种虚拟化环境中工作流处理方法和框架,以提高虚拟化环境中虚拟化管理平台对任务请求的处理效率。

为实现上述目的,本发明实施例提供如下技术方案:

一种虚拟化环境中工作流处理方法,应用于虚拟化平台工作流程框架中,包括:

当获取到工作流程框架的启动指令时,扫描并解析指定路径中的xml格式的任务流程定义文件;

将解析后的xml格式的任务流程定义文件转换为java格式的任务流程定义文件;

持久化所述java格式的任务流程定义文件;

初始化任务缓存队列;

初始化任务消费者;

对获取到的任务执行请求进行处理。

优选的,本申请上述实施例公开的虚拟化环境中工作流处理方法中,所述对获取到的任务执行请求进行处理,具体包括:

等待任务执行请求;

当获取到所述任务执行请求时,根据任务执行请求id查询任务流程定义java对象;

初始化任务实例,并设定任务实例的状态为开始状态;

将所述任务实例提交到任务缓存队列中;

依据预设原则由所述任务缓存队列提取任务执行请求;

执行所述任务执行请求,并将任务状态修改为下一步骤;

判断当前任务状态是否为结束状态,如果否,将任务执行请求重新提交到所述缓存队列中,如果是,表明所述任务执行请求执行完毕。

优选的,上述虚拟化环境中工作流处理方法中,扫描并解析xml任务定义文件之前,还包括:

依据虚拟化环境需求简化任务流程定义,将所述任务流定义简化为只包含预设元素;

根据所述预设元素定义相应的任务流成定义java对象。

优选的,上述虚拟化环境中工作流处理方法中,所述预设元素至少包括:

开始状态元素、结束状态元素、servicetask元素、taskflow元素以及exclusivegateway元素。

一种虚拟化环境中工作流处理框架,应用于虚拟化平台中,包括:

解析模块,用于扫描并解析指定路径中的xml格式的任务流程定义文件,将解析后的xml格式的任务流程定义文件转换为java格式的任务流程定义文件;

持久化模块,用于orm框架持久化所述java格式的任务流程定义文件到数据库中,初始化任务缓存队列和任务消费者,向执行引擎模块输出触发信号;

执行引擎模块,用于获取任务执行请求并对获取到的任务执行请求进行处理。

优选的,上述虚拟化环境中工作流处理框架中,所述执行引擎模块,具体用于:由所述数据库的持久化层获取与获取到的任务执行请求相对应的任务流程定义,所述执行引擎模块内部采用状态机模型、以及blockque作为高效缓存队列,进行执行任务。

优选的,上述虚拟化环境中工作流处理框架中,所述执行引擎模块具体被配置为:

等待任务执行请求;

当获取到所述任务执行请求时,根据任务执行请求id查询所述数据库的持久化层中对应的任务流程定义java对象;

初始化任务实例,并设定任务实例的状态为开始状态;

将所述任务实例提交到任务缓存队列中;

依据预设原则由所述任务缓存队列提取任务执行请求;

执行所述任务执行请求,并将任务状态修改为下一步骤;

判断当前任务状态是否为结束状态,如果否,将任务执行请求重新提交到所述缓存队列中,如果是,表明所述任务执行请求执行完毕。

优选的,上述虚拟化环境中工作流处理框架中,还包括:

任务流程定义简化单元,用于依据虚拟化环境需求简化任务流程定义,将所述任务流定义简化为只包含预设元素;根据所述预设元素定义相应的任务流成定义java对象。

优选的,上述虚拟化环境中工作流处理框架中,任务流程定义简化单元,具体被配置为:将所述任务流定义简化为只包含开始状态元素、结束状态元素、servicetask元素、taskflow元素以及exclusivegateway元素;根据所述开始状态元素、结束状态元素、servicetask元素、taskflow元素以及exclusivegateway元素定义相应的任务流成定义java对象。

基于上述技术方案,本发明实施例提供的上述方案,通过将xml格式的任务流程定义文件转换为java格式的任务流程定义文件,并对所述java格式的任务流程定义文件进行持久化处理,从而在多次执行任务执行请求时,无需重复解析xml格式的任务流程定义,降低了虚拟化平台的数据处理量,提高了虚拟化平台的数据处理速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例公开的一种虚拟化环境中工作流处理方法的流程示意图;

图2为本申请实施例公开的一种任务执行请求处理的方法流程示意图;

图3为本申请实施例公开的虚拟化环境中工作流处理框架的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

然而现有的工作流框架多数用于处理专门的流程性业务工作,虽然功能强大全面,传统工作流程框架的多数功能在虚拟化环境中应用不到,但是虚拟化环境对工作流程框架的性能却要求较高,这种条件下传统工作流框架就难以满足需求。因此提供一套合理高效的工作流框架设计是十分有必要的。

针对于上述问题,本申请设计了一种虚拟化环境中工作流处理方法,应用于虚拟化平台工作流程框架中,参见图1,该方法可以包括:

步骤s101:判断是否获取到工作流程框架启动指令,如果是,执行步骤s102;

步骤s102:扫描并解析指定路径中的xml格式的任务流程定义文件;

步骤s103:将解析后的xml格式的任务流程定义文件转换为java格式的任务流程定义文件;

步骤s104:持久化所述java格式的任务流程定义文件;

所述步骤s103和104中,对于相应的xml格式的任务流程定义对应的java类型,并在工作流程框架启动初期一次性转换java格式的任务流程定义文件,并进行缓存,以减少后期任务重复执行时去不断重新解析xml格式的任务流程定义文件所带来的代价;

步骤s105:初始化任务缓存队列和任务消费者;

步骤s106:对获取到的任务执行请求进行处理;

在本步骤中,通过执行引擎模块对获取到的任务执行请求进行处理,在具体实施时,该模块可以放弃传统的工作流框架使用数据库作为流程记录的中间媒介,采用javablockqueue的方式,进行内存中的任务流程的实时添加实时执行的设计,加快任务处理速度。

通过本申请上述实施例公开的技术方案可见,通过将xml格式的任务流程定义文件转换为java格式的任务流程定义文件,并对所述java格式的任务流程定义文件进行持久化处理,从而在多次执行任务执行请求时,无需重复解析xml格式的任务流程定义,降低了虚拟化平台的数据处理量,提高了虚拟化平台的数据处理速度。

参见图2,本申请上述实施例公开的技术方案中,所述通过执行引擎模块对任务执行请求进行处理,在本申请实施例公开的技术方案中,该模块可以采用blockqueue的方式对获取到的任务执行请求进行处理,这种处理方式省去了存储数据库的代价,并且,相较于传统的工作流程框架,将处理步骤记录到数据库中,并进行周期性查询数据库读取步骤的方式,可以实时性的取出并执行提交的任务,无须等待到下一周期,大大提高了工作效率,以及降低了复杂性。具体的,参见图2,执行引擎模块对任务执行请求进行处理的具体过程可以包括:

步骤s201:判断是否获取到新的任务执行请求,如果是,执行步骤s202;

步骤s202:当获取到新的任务执行请求时,对所述任务执行请求进行解析,得到所述任务执行请求的id信息,根据获取到的任务执行请求的id查询与其对应的任务流程定义java对象;

步骤s203:初始化任务实例,并设定任务实例的状态为开始状态;

在本步骤中,设定任务实例的状态为开始状态(startevent),以表明该任务实例中的任务执行请求为第一次处理;

步骤s204:将所述任务实例(此时所述任务实例中包含有待处理的任务执行请求)提交到任务缓存队列中,同时向任务请求者输出响应信号;

步骤s205:依据预设原则由所述任务缓存队列中提取任务实例所包含的任务执行请求;

具体的提取原则可以依据用户需求自行设定,例如,依据时间顺序、依据任务执行id信息等;

步骤s206:执行所述任务执行请求,并将任务状态修改为下一步骤;

在本步骤中,当每执行一次任务执行请求,将所述任务执行请求的状态修改为下一状态,直至所述任务执行请求的状态被修改为结束状态为止,当所述任务执行请求的状态修改为结束状态时,表明任务执行请求处理完毕;

步骤s207:判断当前任务状态是否为结束状态,如果否,执行步骤s208,如果是,表明所述任务执行请求执行完毕,继续由缓存队列中提取其他任务请求;

步骤s208:将任务执行请求重新提交到所述缓存队列中;

当判断当前任务执行请求的任务状态不为结束状态时,表明该任务执行请求未处理完毕,再次将其放入缓存队列中,等待下一次对该任务执行请求进行处理。

本申请实施例公开的技术方案中,仍然采用现有技术中基于bpmn2.0的xml任务流程定义,当然,为了降低工作流框架的设计复杂度,本申请公开的技术方案可以对所述xml任务流程定义中可应用的元素进行限定,以减少工作流框架的设计复杂度;具体的,在本申请上述实施例公开的技术方案扫描并解析xml任务定义文件之前,上述方法,还可以包括:

依据虚拟化环境需求简化任务流程定义,将所述任务流定义简化为只包含预设元素;根据所述预设元素定义相应的任务流成定义java对象。

其中,所述预设元素的具体类型可以依据用户需求自行设定,例如,在本申请实施例公开的技术方案中,所述预设元素至少包括:

开始状态元素、结束状态元素、servicetask元素(包含:操作对象bean名称,方法名,参数列表),taskflow元素(输入步骤,输出步骤),exclusivegateway元素(输入步骤,条件输出步骤与相关联的判断条件groovy语句组合列表);

本申请上述实施例公开的方法中,执行引擎模块的实现核心为简单的“状态机”机制,该状态机机制具体描述为:

i.以startevent为任务起始状态,以endevent为任务结束状态;

ii.以taskflow为转换元素,将任务流的所有元素串联起来,从一个状态转换流向另外一个状态(即:通过taskflow元素,从一个servicetask流向下一个servicetask,从而实现所有servicetask的顺序执行);

iii.对于servicetask元素,则根据servicetask提供的对象名称,参数列表,以java反射的方式执行相应的方法;

iv.对于exclusivegateway,作为条件角色,执行输出步骤的groovy脚本,选择满足条件的下一步骤;

所述执行引擎模块采用异步执行方式对任务请求进行处理,处理过程整体描述为:

i.任务请求提交触发之后(所有的任务请求以startevent为起始状态,并提交到任务缓存队列之后),即刻返回;

ii.后台任务消费者(执行引擎模块启动时会自动根据参数配置初始化一定量的任务消费者)从任务缓存队列取出任务请求,并根据任务请求当期状态执行相应步骤;

在本申请实施例公开的技术方案中,所述行引擎模块使用javablockque作为核心的任务缓存队列,即所有的任务请求都会被提交到任务缓存对列总;任务消费者也会从该队列中不断取出任务请求进行执行;

其中,所述执行引擎模块中的任务消费者的核心功能为:

i.从任务缓存队列中取出一个任务请求;

ii.根据任务请求的当前状态(初始为startevent状态),执行该状态对应的操作(如:servicetask需要执行相应的java方法);

iii.对所述任务请求执行完当前任务状态对应的操作之后,根据taskflow找出任务的下一步骤,并修改任务请求的状态为下一步骤;

iv.判断任务请求的状态是否为endevent,如果是则完成任务执行,否则将所述任务请求重新提交到缓存队列中(此时无需将任务请求的状态设定为startevent)。

与上述方法相对应,本申请公开了一种虚拟化环境中工作流处理框架,该框架可应用于虚拟化平台中,上述方法与本框架中的技术特征可相互借鉴,该框架中各个模块的工作方式可参见上述方法中对各个步骤的具体描述,参见图3,该框架的框架结构可以包括:

解析模块100,用于扫描并解析指定路径中的xml格式的任务流程定义文件,将解析后的xml格式的任务流程定义文件转换为java格式的任务流程定义文件;

持久化模块200,用于orm框架持久化所述java格式的任务流程定义文件到数据库中,初始化任务缓存队列和任务消费者,向执行引擎模块输出触发信号;

执行引擎模块300,用于获取任务执行请求并对获取到的任务执行请求进行处理。

与上述方法线对应,所述执行引擎模块300,具体用于:由所述数据库的持久化层获取与获取到的任务执行请求相对应的任务流程定义,所述执行引擎模块内部采用状态机模型、以及blockque作为高效缓存队列,进行执行任务。

与上述方法相对应,上述系统中,所述执行引擎模块具体被配置为:

等待任务执行请求;

当获取到所述任务执行请求时,根据任务执行请求id查询所述数据库的持久化层中对应的任务流程定义java对象;

初始化任务实例,并设定任务实例的状态为开始状态;

将所述任务实例提交到任务缓存队列中;

依据预设原则由所述任务缓存队列提取任务执行请求;

执行所述任务执行请求,并将任务状态修改为下一步骤;

判断当前任务状态是否为结束状态,如果否,将任务执行请求重新提交到所述缓存队列中,如果是,表明所述任务执行请求执行完毕。

与上述方法相对应,在本申请上述实施例公开的上述系统中,还包括:

任务流程定义简化单元,用于依据虚拟化环境需求简化任务流程定义,将所述任务流定义简化为只包含预设元素;根据所述预设元素定义相应的任务流成定义java对象。具体的,所述任务流程定义简化单元,可以被配置为:将所述任务流定义简化为只包含开始状态元素、结束状态元素、servicetask元素、taskflow元素以及exclusivegateway元素;根据所述开始状态元素、结束状态元素、servicetask元素、taskflow元素以及exclusivegateway元素定义相应的任务流成定义java对象。

为了描述的方便,描述以上系统时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1