CN115048192A - 工作流调度方法和系统及工作流引擎 - Google Patents
工作流调度方法和系统及工作流引擎 Download PDFInfo
- Publication number
- CN115048192A CN115048192A CN202110254507.XA CN202110254507A CN115048192A CN 115048192 A CN115048192 A CN 115048192A CN 202110254507 A CN202110254507 A CN 202110254507A CN 115048192 A CN115048192 A CN 115048192A
- Authority
- CN
- China
- Prior art keywords
- task
- workflow
- test object
- executor
- workflow engine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开提出一种工作流调度方法和系统及工作流引擎,涉及工作流领域。该方法包括:在工作流引擎侧为每个测试对象创建一个独立的命名空间,并分配唯一的命名空间标识,在命名空间内再根据不同的任务类型创建不同的任务队列,实现对不同测试对象的任务隔离,任务执行器在向工作流引擎发送任务请求时,除了携带任务类型外,还携带测试对象的命名空间标识,工作流引擎收到任务请求时,先根据命名空间标识定位到某一测试对象,再根据任务类型找到该测试对象命令空间下对应的任务队列,从任务队列中取出任务下发给任务执行器执行。使工作流任务准确地下发给合适的任务执行器。
Description
技术领域
本公开涉及工作流领域,特别涉及一种工作流调度方法和系统及工作流引擎。
背景技术
现有的工作流管理系统,由工作流引擎、任务执行器和测试对象三部分组成。工作流引擎会根据任务类型创建不同的任务队列,存放所有的活动任务。每种任务类型都有对应的任务执行器,采用轮询的方式向工作流引擎请求任务,然后连接到测试对象上完成任务。
工作流引擎中有作用于不同测试对象的工作流实例,但只根据任务类型下发,可能连接测试对象A的任务执行器获取了需要在测试对象B上执行的任务,导致任务无法执行或任务异常。
发明内容
为了解决上述问题,本公开实施例提出一种工作流调度方法和系统及工作流引擎。
本公开一些实施例提出一种工作流调度方法,包括:
工作流引擎根据针对被选取的工作流模板输入的任务的参数值及测试对象,创建所述测试对象相应的工作流实例,所述工作流模板定义了工作流包含的至少一个任务,每个任务对应一定的任务类型TT;
工作流引擎创建所述测试对象相应的命名空间,并分配命名空间标识TID,在所述命名空间内创建不同任务类型相应的不同任务队列,将第一任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;
工作流引擎接收任务执行器发送的第一任务的请求,请求中携带第一任务的TID和TT;
工作流引擎根据请求中的TID和TT,从相应的命名空间和任务队列中取出第一任务,并下发给任务执行器,以便任务执行器根据下发的第一任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
在一些实施例中,还包括:
工作流引擎接收任务执行器返回的第一任务的执行结果,如果第一任务执行完毕,将第一任务从相应的命名空间和任务队列中移除;
工作流引擎判断所述测试对象相应的工作流实例中所有任务是否都已执行完成,如果否,将第一任务之后的未执行的第二任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;
工作流引擎接收任务执行器发送的第二任务的请求,请求中携带第二任务的TID和TT;
工作流引擎根据请求中的TID和TT,从相应的命名空间和任务队列中取出第二任务,并下发给任务执行器,以便任务执行器根据下发的第二任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
在一些实施例中,还包括:如果所述测试对象相应的工作流实例中所有任务都已执行完成,工作流引擎将所述测试对象相应的工作流实例设置为完成状态。
在一些实施例中,任务执行器分布式部署在测试对象侧,每个测试对象部署至少一个任务执行器,每个任务执行器只发送自己负责的测试对象的任务请求或者只发送自己负责的测试对象和任务类型的任务请求。
在一些实施例中,每个测试对象部署至少一个任务执行器,包括:测试对象的不同任务类型对应部署不同任务执行器,或者,测试对象的不同任务类型对应部署一个任务执行器。
在一些实施例中,针对被选取的工作流模板输入测试对象包括:
通过在工作流的全局变量中指定全局测试对象的方式,为被选取的工作流模板输入全局测试对象;
或者,通过给单个工作流模板指定局部测试对象的方式,为被选取的工作流模板输入局部测试对象。
本公开一些实施例提出一种工作流引擎,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行工作流调度方法。
本公开一些实施例提出一种工作流引擎,包括:
工作流实例创建模块,被配置为根据针对被选取的工作流模板输入的任务的参数值及测试对象,创建所述测试对象相应的工作流实例,所述工作流模板定义了工作流包含的至少一个任务,每个任务对应一定的任务类型TT;
命名空间创建模块,被配置为创建所述测试对象相应的命名空间,并分配命名空间标识TID,在所述命名空间内创建不同任务类型相应的不同任务队列,将第一任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;
任务处理模块,被配置为接收任务执行器发送的第一任务的请求,请求中携带第一任务的TID和TT,根据请求中的TID和TT,从相应的命名空间和任务队列中取出第一任务,并下发给任务执行器,以便任务执行器根据下发的第一任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
在一些实施例中,任务处理模块,还被配置为
接收任务执行器返回的第一任务的执行结果,如果第一任务执行完毕,将第一任务从相应的命名空间和任务队列中移除;
判断所述测试对象相应的工作流实例中所有任务是否都已执行完成,如果是,将所述测试对象相应的工作流实例设置为完成状态,如果否,将第一任务之后的未执行的第二任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;
接收任务执行器发送的第二任务的请求,请求中携带第二任务的TID和TT;
根据请求中的TID和TT,从相应的命名空间和任务队列中取出第二任务,并下发给任务执行器,以便任务执行器根据下发的第二任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
本公开一些实施例提出一种工作流调度系统,包括:
工作流引擎;以及
在测试对象侧分布式部署的任务执行器,每个测试对象部署至少一个任务执行器,每个任务执行器被配置为只发送自己负责的测试对象的任务请求或者只发送自己负责的测试对象和任务类型的任务请求。
本公开一些实施例提出一种非瞬时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现工作流调度方法的步骤。
本公开实施例修改任务队列实现方式,即:引入测试对象命名空间,在工作流引擎侧为每个测试对象创建一个独立的命名空间,并分配唯一的命名空间标识,在命名空间内再根据不同的任务类型创建不同的任务队列,实现对不同测试对象的任务隔离,并修改任务执行器与工作流引擎的通信模式,即:任务执行器在向工作流引擎发送任务请求时,除了携带任务类型外,还携带测试对象的命名空间标识,工作流引擎收到任务请求时,先根据命名空间标识定位到某一测试对象,再根据任务类型找到该测试对象命令空间下对应的任务队列,从任务队列中取出任务下发给任务执行器执行。从而,同时管理作用于相互独立的、隔离的多个测试对象的分布式工作流,使工作流任务可以准确地下发给合适的任务执行器,避免出现任务分发错误。
附图说明
下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍。根据下面参照附图的详细描述,可以更加清楚地理解本公开。
显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开一些实施例的创建工作流模板的流程示意图。
图2示出本公开一些实施例的工作流调度方法的流程示意图。
图3示出本公开一些实施例的工作流调度方法应用例的部署示意图。
图4示出本公开一些实施例的工作流调度系统的示意图。
图5示出本公开一些实施例的工作流引擎的示意图。
图6示出本公开一些实施例的工作流引擎的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。
除非特别说明,否则,本公开中的“第一”“第二”等描述用来区分不同的对象,并不用来表示大小或时序等含义。
本公开实施例包括工作流引擎、工作流模板、任务、工作流实例、任务执行器、测试对象等组件。下面分别说明。
工作流引擎负责工作流模板的存储,工作流实例的创建、调度、存储等。
工作流模板定义了工作流中包含的若干个任务,任务类型,不指定具体的测试对象。
任务是指包含若干操作指令、能完成某个特定业务的指令合集。
工作流实例是以工作流模板为基础,指定了任务的具体参数值和测试对象创建的工作流。
任务执行器是可以完成某类任务的客户端,不同类型的任务可以有不同的任务执行器。
测试对象是工作流任务中指令的作用对象。
图1示出本公开一些实施例的创建工作流模板的流程示意图。
如图1所示,该实施例的方法包括:110-120。
在步骤110,用户根据业务需求创建包含若干任务的工作流模板,工作流模板不包含具体测试对象信息,可以用于任意测试对象,提交到工作流引擎。
在步骤120,工作流引擎存储工作流模板。
从而,完成工作流模板的创建和存储。
图2示出本公开一些实施例的工作流调度方法的流程示意图。
如图2所示,该实施例的方法包括:步骤210-260。
在步骤210,用户提交工作流实例请求。
用户在工作流引擎中,选取工作流模板,输入任务的参数值及测试对象,然后提交工作流实例请求。工作流模板定义了工作流包含的至少一个任务,每个任务对应一定的任务类型(TT)。
针对被选取的工作流模板输入测试对象的方法包括:通过在工作流的全局变量中指定全局测试对象的方式,为被选取的工作流模板输入全局测试对象;或者,通过给单个工作流模板指定局部测试对象的方式,为被选取的工作流模板输入局部测试对象。后一方式优先前一方式被执行,如果有后一方式,按照后一方式执行,如果没有后一方式,则默认按照前一方式执行。
在步骤220,工作流引擎根据针对被选取的工作流模板输入的任务的参数值及测试对象,创建所述测试对象相应的工作流实例。
在步骤230,工作流引擎创建所述测试对象相应的命名空间,并分配命名空间标识(TID),在所述命名空间内创建不同任务类型相应的不同任务队列,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中。
在工作流引擎侧引入测试对象命令空间(TONS),在命令空间内再根据任务类型创建不同的任务队列,可以分类管理作用于各个测试对象的不同任务。
在步骤240,各个任务执行器向工作流引擎轮询请求作业任务,假设活动任务为第一任务,工作流引擎接收某个任务执行器发送的第一任务的请求,请求中携带第一任务的TID和TT。
各个任务执行器分布式部署在测试对象侧,每个测试对象部署至少一个任务执行器。测试对象的不同任务类型对应部署不同任务执行器,此时每个任务执行器只发送自己负责的测试对象和任务类型的任务请求。测试对象的不同任务类型对应部署一个任务执行器,此时每个任务执行器只发送自己负责的测试对象的任务请求。
各个任务执行器分布式地部署在测试对象侧,各个任务执行器只会获得所属测试对象(或所属测试对象和所属任务类型)的任务,避免任务执行器集中部署而互相争抢资源的情况,提高了任务执行器的执行效率。
任务执行器向工作流引擎轮询任务时,携带TID和TT,使得工作流引擎可以准确地下发任务。
任务执行器的实现方式更加灵活,不受编程语言限制,只需要遵守任务执行器与工作流引擎的接口规范。
任务执行器主动向工作流引擎请求任务,它的工作负载由其自身实现的方法确定,工作流引擎只管理、调度工作流和任务,任务执行器的数量和是否存在对工作流引擎是透明的,工作流引擎专注于工作流的管理,任务执行器专注于任务的执行,实现工作流的管理与任务执行的解耦。
在步骤250,工作流引擎根据请求中的TID和TT,从相应的命名空间和任务队列中取出第一任务,并下发给任务执行器。
在步骤260,任务执行器根据下发的第一任务中的指令,在测试对象上执行相应的操作,并返回执行结果给工作流引擎。
重复上述的步骤240-260,可执行其他作业任务。下面以还执行第二作业为例进行描述。
工作流引擎接收任务执行器返回的第一任务的执行结果,如果第一任务执行完毕,将第一任务从相应的命名空间和任务队列中移除。工作流引擎判断所述测试对象相应的工作流实例中所有任务是否都已执行完成。如果是,工作流引擎将所述测试对象相应的工作流实例设置为完成状态。如果否,将第一任务之后的未执行的第二任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中。工作流引擎接收任务执行器发送的第二任务的请求,请求中携带第二任务的TID和TT。工作流引擎根据请求中的TID和TT,从相应的命名空间和任务队列中取出第二任务,并下发给任务执行器,任务执行器根据下发的第二任务中的指令,在测试对象上执行相应的操作,并返回执行结果给工作流引擎。如果所述测试对象相应的工作流实例中所有任务都已执行完成,工作流引擎将所述测试对象相应的工作流实例设置为完成状态。
上述实施例修改任务执行器部署方式:将任务执行器由集中式部署改为分布式部署,任务执行器部署到测试对象侧,避免出现多个执行器在单主机上互相争取资源的情况。同时,为任务执行器开放连接到工作流引擎的权限,实现网络连通。
上述实施例修改任务队列实现方式,即:引入测试对象命名空间,在工作流引擎侧为每个测试对象创建一个独立的命名空间,并分配唯一的命名空间标识,在命名空间内再根据不同的任务类型创建不同的任务队列,实现对不同测试对象的任务隔离,并修改任务执行器与工作流引擎的通信模式,即:任务执行器在向工作流引擎发送任务请求时,除了携带任务类型外,还携带测试对象的命名空间标识,工作流引擎收到任务请求时,先根据命名空间标识定位到某一测试对象,再根据任务类型找到该测试对象命令空间下对应的任务队列,从任务队列中取出任务下发给任务执行器执行。从而,同时管理作用于相互独立的、隔离的多个测试对象的分布式工作流,使工作流任务可以准确地下发给合适的任务执行器,避免出现任务分发错误。
本公开例如适用于对多个云节点进行管理(如部署、测试等场景),各个云节点之间相互独立、隔离,所有的工作流由统一的工作流引擎(公共平台)管理,任务执行器分别部署在各个云节点的跳板机上,实现工作流的集中管理和分布式执行。
图3示出本公开一些实施例的工作流调度方法应用例的部署示意图。
如图3所示,各个标识的含义如下:
WP1–工作模板1
AT1–A型任务1
BT1–B型任务1
WP1WI1-使用工作流模板1创建的实例1
WP1WI2-使用工作流模板1创建的实例2
TO1AT1–在测试对象1上执行的A型任务1
TO1BT1–在测试对象1上执行的B型任务1
TO2AT1–在测试对象2上执行的A型任务1
TO2BT1–在测试对象2上执行的B型任务1
ATQ–A型任务队列
BTQ–B型任务队列
TO1NS–测试对象1的命名空间
TO2NS–测试对象2的命名空间
TO1AW-测试对象1上的A型任务执行器
TO1BW-测试对象1上的B型任务执行器
TO2AW-测试对象2上的A型任务执行器
TO2BW-测试对象2上的B型任务执行器
工作流调度流程如下:
1)工作流模板WP1包含AT1和BT1两个顺序执行的任务,根据WP1创建了WP1WI1和WP1WI2两个工作流实例。其中WP1WI1的目标对象是测试对象1,WP1WI2的目标对象是测试对象2。
2)工作流引擎分别为测试对象1和测试对象2创建命名空间TO1NS和TO2NS。在命名空间内创建了ATQ和BTQ两个任务队列,TO1AT1和TO2AT1两个活动任务分别加入TO1NS和TO2NS的ATQ队列中,进入等待状态。根据WP1的设计BT1在AT1任务之后,所以TO1BT1和TO2BT1任务是非活动任务,BTQ队列为空。
3)在测试对象1上部署处理TO1AW和TO1BW两个任务执行器,分别处理A型任务和B型任务。在测试对象2上部署处理TO2AW和TO2BW两个任务执行器,分别处理A型任务和B型任务。每个任务执行器各自向工作流引擎轮询获取任务。
4)TO1AW和TO2AW分别获得TO1AT1和TO2AT1任务,它们在各自的测试对象上执行完毕后,将结果返回工作流引擎。
5)工作流引擎收到TO1AT1任务完成的消息,将TO1AT1设为完成,移出ATQ队列,并将WP1WI1的BT1任务TO1BT1设为活动任务,加入到TO1NS的BTQ队列中。同理,将TO2BT1加入到TO2NS的BTQ队列中。此时,两命名空间中ATQ均变为空队列。
6)TO1BW轮询获得TO1BT1任务,TO2BW轮询获得TO2BT1任务,它们在各自的测试对象上执行完毕后,将结果返回工作流引擎。
7)工作流引擎收到TO1BT1任务完成的消息,将TO1BT1设为完成,移出BTQ队列。此时,WP1WI1的所有任务处理完成,将WP1WI1设为完成状态。同理,将WP1WI2设为完成状态,所有工作流实例处理完成。
图4示出本公开一些实施例的工作流调度系统的示意图。
如图4所示,该实施例的工作流调度系统400包括:工作流引擎500;以及在测试对象侧分布式部署的任务执行器600。每个测试对象部署至少一个任务执行器,每个任务执行器被配置为只发送自己负责的测试对象的任务请求或者只发送自己负责的测试对象和任务类型的任务请求。
图5示出本公开一些实施例的工作流引擎的示意图。
如图5所示,该实施例的工作流引擎500包括:存储器510以及耦接至该存储器510的处理器520,处理器520被配置为基于存储在存储器510中的指令,执行前述任意一些实施例中的工作流调度方法。
例如,工作流引擎根据针对被选取的工作流模板输入的任务的参数值及测试对象,创建所述测试对象相应的工作流实例,所述工作流模板定义了工作流包含的至少一个任务,每个任务对应一定的任务类型TT;工作流引擎创建所述测试对象相应的命名空间,并分配命名空间标识TID,在所述命名空间内创建不同任务类型相应的不同任务队列,将第一任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;工作流引擎接收任务执行器发送的第一任务的请求,请求中携带第一任务的TID和TT;工作流引擎根据请求中的TID和TT,从相应的命名空间和任务队列中取出第一任务,并下发给任务执行器,以便任务执行器根据下发的第一任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
又例如,工作流引擎接收任务执行器返回的第一任务的执行结果,如果第一任务执行完毕,将第一任务从相应的命名空间和任务队列中移除;工作流引擎判断所述测试对象相应的工作流实例中所有任务是否都已执行完成,如果否,将第一任务之后的未执行的第二任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;工作流引擎接收任务执行器发送的第二任务的请求,请求中携带第二任务的TID和TT;工作流引擎根据请求中的TID和TT,从相应的命名空间和任务队列中取出第二任务,并下发给任务执行器,以便任务执行器根据下发的第二任务中的指令,在测试对象上执行相应的操作,并返回执行结果。如果所述测试对象相应的工作流实例中所有任务都已执行完成,工作流引擎将所述测试对象相应的工作流实例设置为完成状态。
其中,存储器510例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
工作流引擎500还可以包括输入输出接口530、网络接口540、存储接口550等。这些接口530,540,550以及存储器510和处理器520之间例如可以通过总线560连接。其中,输入输出接口530为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口540为各种联网设备提供连接接口。存储接口550为SD卡、U盘等外置存储设备提供连接接口。
图6示出本公开一些实施例的工作流引擎的示意图。
如图6所示,该实施例的工作流引擎500包括:模块570-590。
工作流实例创建模块570,被配置为根据针对被选取的工作流模板输入的任务的参数值及测试对象,创建所述测试对象相应的工作流实例,所述工作流模板定义了工作流包含的至少一个任务,每个任务对应一定的任务类型TT。
命名空间创建模块580,被配置为创建所述测试对象相应的命名空间,并分配命名空间标识TID,在所述命名空间内创建不同任务类型相应的不同任务队列,将第一任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中。
任务处理模块590,被配置为接收任务执行器发送的第一任务的请求,请求中携带第一任务的TID和TT,根据请求中的TID和TT,从相应的命名空间和任务队列中取出第一任务,并下发给任务执行器,以便任务执行器根据下发的第一任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
任务处理模块590,还被配置为:
接收任务执行器返回的第一任务的执行结果,如果第一任务执行完毕,将第一任务从相应的命名空间和任务队列中移除;
判断所述测试对象相应的工作流实例中所有任务是否都已执行完成,如果是,将所述测试对象相应的工作流实例设置为完成状态,如果否,将第一任务之后的未执行的第二任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;
接收任务执行器发送的第二任务的请求,请求中携带第二任务的TID和TT;
根据请求中的TID和TT,从相应的命名空间和任务队列中取出第二任务,并下发给任务执行器,以便任务执行器根据下发的第二任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
本公开实施例提出一种非瞬时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现工作流调度方法的步骤。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机程序代码的非瞬时性计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (11)
1.一种工作流调度方法,其特征在于,包括:
工作流引擎根据针对被选取的工作流模板输入的任务的参数值及测试对象,创建所述测试对象相应的工作流实例,所述工作流模板定义了工作流包含的至少一个任务,每个任务对应一定的任务类型TT;
工作流引擎创建所述测试对象相应的命名空间,并分配命名空间标识TID,在所述命名空间内创建不同任务类型相应的不同任务队列,将第一任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;
工作流引擎接收任务执行器发送的第一任务的请求,请求中携带第一任务的TID和TT;
工作流引擎根据请求中的TID和TT,从相应的命名空间和任务队列中取出第一任务,并下发给任务执行器,以便任务执行器根据下发的第一任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
2.根据权利要求1所述的方法,其特征在于,还包括:
工作流引擎接收任务执行器返回的第一任务的执行结果,如果第一任务执行完毕,将第一任务从相应的命名空间和任务队列中移除;
工作流引擎判断所述测试对象相应的工作流实例中所有任务是否都已执行完成,如果否,将第一任务之后的未执行的第二任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;
工作流引擎接收任务执行器发送的第二任务的请求,请求中携带第二任务的TID和TT;
工作流引擎根据请求中的TID和TT,从相应的命名空间和任务队列中取出第二任务,并下发给任务执行器,以便任务执行器根据下发的第二任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
3.根据权利要求2所述的方法,其特征在于,还包括:
如果所述测试对象相应的工作流实例中所有任务都已执行完成,工作流引擎将所述测试对象相应的工作流实例设置为完成状态。
4.根据权利要求1所述的方法,其特征在于,
任务执行器分布式部署在测试对象侧,每个测试对象部署至少一个任务执行器,每个任务执行器只发送自己负责的测试对象的任务请求或者只发送自己负责的测试对象和任务类型的任务请求。
5.根据权利要求4所述的方法,其特征在于,每个测试对象部署至少一个任务执行器,包括:
测试对象的不同任务类型对应部署不同任务执行器,或者,测试对象的不同任务类型对应部署一个任务执行器。
6.根据权利要求1所述的方法,其特征在于,针对被选取的工作流模板输入测试对象包括:
通过在工作流的全局变量中指定全局测试对象的方式,为被选取的工作流模板输入全局测试对象;
或者,通过给单个工作流模板指定局部测试对象的方式,为被选取的工作流模板输入局部测试对象。
7.一种工作流引擎,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行权利要求1-6中任一项所述的工作流调度方法。
8.一种工作流引擎,其特征在于,包括:
工作流实例创建模块,被配置为根据针对被选取的工作流模板输入的任务的参数值及测试对象,创建所述测试对象相应的工作流实例,所述工作流模板定义了工作流包含的至少一个任务,每个任务对应一定的任务类型TT;
命名空间创建模块,被配置为创建所述测试对象相应的命名空间,并分配命名空间标识TID,在所述命名空间内创建不同任务类型相应的不同任务队列,将第一任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;
任务处理模块,被配置为接收任务执行器发送的第一任务的请求,请求中携带第一任务的TID和TT,根据请求中的TID和TT,从相应的命名空间和任务队列中取出第一任务,并下发给任务执行器,以便任务执行器根据下发的第一任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
9.根据权利要求8所述的工作流引擎,其特征在于,任务处理模块,还被配置为
接收任务执行器返回的第一任务的执行结果,如果第一任务执行完毕,将第一任务从相应的命名空间和任务队列中移除;
判断所述测试对象相应的工作流实例中所有任务是否都已执行完成,如果是,将所述测试对象相应的工作流实例设置为完成状态,如果否,将第一任务之后的未执行的第二任务设为活动任务,根据活动任务的测试对象和任务类型将活动任务放入相应命名空间的相应任务队列中;
接收任务执行器发送的第二任务的请求,请求中携带第二任务的TID和TT;
根据请求中的TID和TT,从相应的命名空间和任务队列中取出第二任务,并下发给任务执行器,以便任务执行器根据下发的第二任务中的指令,在测试对象上执行相应的操作,并返回执行结果。
10.一种工作流调度系统,其特征在于,包括:
权利要求7-9中任一项所述的工作流引擎;以及
在测试对象侧分布式部署的任务执行器,每个测试对象部署至少一个任务执行器,每个任务执行器被配置为只发送自己负责的测试对象的任务请求或者只发送自己负责的测试对象和任务类型的任务请求。
11.一种非瞬时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1-6中任一项所述的工作流调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110254507.XA CN115048192A (zh) | 2021-03-09 | 2021-03-09 | 工作流调度方法和系统及工作流引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110254507.XA CN115048192A (zh) | 2021-03-09 | 2021-03-09 | 工作流调度方法和系统及工作流引擎 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048192A true CN115048192A (zh) | 2022-09-13 |
Family
ID=83156109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110254507.XA Pending CN115048192A (zh) | 2021-03-09 | 2021-03-09 | 工作流调度方法和系统及工作流引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115048192A (zh) |
-
2021
- 2021-03-09 CN CN202110254507.XA patent/CN115048192A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684065B (zh) | 一种资源调度方法、装置及系统 | |
CN107145380B (zh) | 虚拟资源编排方法及装置 | |
CN105117289B (zh) | 基于云测试平台的任务分配方法、装置及系统 | |
CN106371894B (zh) | 一种配置方法、装置和数据处理服务器 | |
EP3285170A1 (en) | Application profiling job management system, program, and method | |
JP6658882B2 (ja) | 制御装置、vnf配置先選択方法及びプログラム | |
CN109144710B (zh) | 资源调度方法、装置及计算机可读存储介质 | |
CN108304260B (zh) | 一种基于高性能云计算的虚拟化作业调度系统及其实现方法 | |
CN109155782A (zh) | 容器之间的进程间通信 | |
CN107807815B (zh) | 分布式处理任务的方法和装置 | |
CA2802361A1 (en) | Method and system for workload distributing and processing across a network of replicated virtual machines | |
CN105512083A (zh) | 基于yarn的资源管理方法、装置及系统 | |
US20230153158A1 (en) | Method, apparatus, system, and storage medium for performing eda task | |
CN110389843A (zh) | 一种业务调度方法、装置、设备及可读存储介质 | |
CN115292014A (zh) | 图像渲染方法、装置和服务器 | |
CN113127150A (zh) | 云原生系统的快速部署方法、装置、电子设备和存储介质 | |
KR101644958B1 (ko) | 다중 사용자 맞춤형 컴퓨팅 자원 제공을 위한 클러스터 구축 방법 및 클러스터 구축 장치 | |
KR20220070020A (ko) | 네트워크 자원 관리 방법, 시스템, 네트워크 디바이스 및 판독 가능한 저장 매체 | |
CN113626173B (zh) | 调度方法、装置及存储介质 | |
CN107025126B (zh) | 一种资源调度方法、nfvo和系统 | |
CN115665231A (zh) | 服务创建方法、装置以及计算机可读存储介质 | |
CN115048192A (zh) | 工作流调度方法和系统及工作流引擎 | |
CN114265595B (zh) | 一种基于智能合约的云原生应用开发与部署系统和方法 | |
CN112506655B (zh) | 一种绘图方法、存储介质及应用服务器 | |
CN103631648A (zh) | 一种任务处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |