CN112817744A - 一种任务处理方法及装置 - Google Patents
一种任务处理方法及装置 Download PDFInfo
- Publication number
- CN112817744A CN112817744A CN202110051110.0A CN202110051110A CN112817744A CN 112817744 A CN112817744 A CN 112817744A CN 202110051110 A CN202110051110 A CN 202110051110A CN 112817744 A CN112817744 A CN 112817744A
- Authority
- CN
- China
- Prior art keywords
- node
- workflow
- tasks
- execution
- dependency relationship
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000001419 dependent effect Effects 0.000 claims description 33
- 238000010586 diagram Methods 0.000 description 6
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
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/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
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Human Resources & Organizations (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Entrepreneurship & Innovation (AREA)
- General Engineering & Computer Science (AREA)
- Economics (AREA)
- Data Mining & Analysis (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种任务处理方法及装置。所述方法包括:在需要对工作流进行处理的情况下,获取所述工作流中的所有任务及所述所有任务之间的依赖关系;获取与所述所有任务具有依赖关系的跨工作流任务;根据所述所有任务、所述跨工作流任务和所述依赖关系,构建得到所述工作流对应的有向无环图;根据所述有向无环图,依次执行所述所有任务,确定所述工作流对应的任务执行结果。本申请实施例通过结合工作流中所有任务的依赖关系构建有向无环图,结合有向无环图执行所有任务,能够确保所有任务按照依赖关系准确执行,进而提高了工作流任务执行的准确性,能够实现跨工作流依赖的任务执行。
Description
技术领域
本申请涉及任务处理技术领域,特别是涉及一种任务处理方法及装置。
背景技术
工作流是指业务过程的部分或整体在计算机应用环境下的自动化,是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在一个工作流中包含了多个任务,多个任务之间的执行是存在依赖关系的。
目前,公知的任务调度方法,只能处理工作流内部的依赖关系,对于跨工作流的任务依赖通常是通过工作流的启动时间先后顺序来控制。由于任务执行时间的不确定性,所以无法保证子任务所在工作流启动时,父任务已经执行完成,从而导致任务执行的结果不准确,而更复杂的跨工作流依赖基本无法实现。
发明内容
本申请提供一种任务处理方法及装置,以解决现有技术中无法保证子任务所在工作流启动时,父任务已经执行完成,从而导致任务执行的结果不准确,而更复杂的跨工作流依赖基本无法实现的问题。
为了解决上述问题,本申请实施例提供了一种任务处理方法,包括:
在需要对工作流进行处理的情况下,获取所述工作流中的所有任务及所述所有任务之间的依赖关系;
获取与所述所有任务具有依赖关系的跨工作流任务;
根据所述所有任务、所述跨工作流任务和所述依赖关系,构建得到所述工作流对应的有向无环图;
根据所述有向无环图,依次执行所述所有任务,确定所述工作流对应的任务执行结果。
可选地,所述根据所述所有任务、所述跨工作流任务和所述依赖关系,构建得到所述工作流对应的有向无环图,包括:
以所述所有任务和所述跨工作流任务作为图节点,并以所述依赖关系作为所述图节点的依赖边,构建得到初始有向无环图;
根据所述依赖关系,对所述依赖边进行标记,生成所述有向无环图;
其中,所述依赖边包括工作流内依赖边和跨工作流依赖边。
可选地,所述根据所述有向无环图,依次执行所述所有任务,确定所述工作流对应的任务执行结果,包括:
获取并执行所述有向无环图中属于所述工作流的父节点;
在所述父节点执行完成之后,根据所述依赖关系,获取所述父节点对应的子节点;
在执行所述子节点之前,获取与所述子节点具有依赖关系的所有父节点的节点执行状态;
在所述节点执行状态为执行成功状态的情况下,执行所述子节点;
在所述子节点执行完成之后,以所述子节点作为父节点,循环执行所述根据所述依赖关系,获取所述父节点对应的子节点、所述在执行所述子节点之前,获取与所述子节点具有依赖关系的所有父节点的节点执行状态和所述在所述节点执行状态为执行成功状态的情况下,执行所述子节点的步骤,直至所述有向无环图中的所有图节点均执行完成,得到所述工作流的任务执行结果。
可选地,所述获取与所述子节点具有依赖关系的所有父节点的节点执行状态,包括:
获取与所述子节点具有依赖关系的位于工作流内的第一父节点,和/或,位于所述工作流外的第二父节点;
获取所述第一父节点对应的第一节点状态,和/或所述第二父节点对应的第二节点状态。
可选地,所述在所述节点执行状态为执行成功状态的情况下,执行所述子节点,包括:
在与所述子节点具有依赖关系的父节点仅包含所述第一父节点的情况下,在所述第一节点状态为执行成功状态时,执行所述子节点;
在与所述子节点具有依赖关系的父节点仅包含所述第二父节点的情况下,在所述第二节点状态为执行成功状态时,执行所述子节点;
在与所述子节点具有依赖关系的父节点同时包含所述第一父节点和所述第二父节点的情况下,在所述第一节点状态和所述第二节点状态均为执行成功状态时,执行所述子节点。
为了解决上述技术问题,本申请实施例还提供了一种任务处理装置,包括:
依赖关系获取模块,用于在需要对工作流进行处理的情况下,获取所述工作流中的所有任务及所述所有任务之间的依赖关系;
跨流任务获取模块,用于获取与所述所有任务具有依赖关系的跨工作流任务;
有向无环图构建模块,用于根据所述所有任务、所述跨工作流任务和所述依赖关系,构建得到所述工作流对应的有向无环图;
任务执行结果确定模块,用于根据所述有向无环图,依次执行所述所有任务,确定所述工作流对应的任务执行结果。
可选地,所述有向无环图构建模块包括:
初始无环图构建单元,用于以所述所有任务和所述跨工作流任务作为图节点,并以所述依赖关系作为所述图节点的依赖边,构建得到初始有向无环图;
有向无环图生成单元,用于根据所述依赖关系,对所述依赖边进行标记,生成所述有向无环图;
其中,所述依赖边包括工作流内依赖边和跨工作流依赖边。
可选地,所述任务执行结果确定模块包括:
父节点获取单元,用于获取并执行所述有向无环图中属于所述工作流的父节点;
子节点获取单元,用于在所述父节点执行完成之后,根据所述依赖关系,获取所述父节点对应的子节点;
节点执行状态获取单元,用于在执行所述子节点之前,获取与所述子节点具有依赖关系的所有父节点的节点执行状态;
子节点执行单元,用于在所述节点执行状态为执行成功状态的情况下,执行所述子节点;
执行结果获取单元,用于在所述子节点执行完成之后,以所述子节点作为父节点,循环子节点获取单元、所述节点执行状态获取单元和所述子节点执行单元,直至所述有向无环图中的所有图节点均执行完成,得到所述工作流的任务执行结果。
可选地,所述节点执行状态获取单元包括:
父节点获取子单元,用于获取与所述子节点具有依赖关系的位于工作流内的第一父节点,和/或,位于所述工作流外的第二父节点;
节点状态获取子单元,用于获取所述第一父节点对应的第一节点状态,和/或所述第二父节点对应的第二节点状态。
可选地,所述子节点执行单元包括:
第一子节点执行子单元,用于在与所述子节点具有依赖关系的父节点仅包含所述第一父节点的情况下,在所述第一节点状态为执行成功状态时,执行所述子节点;
第二子节点执行子单元,用于在与所述子节点具有依赖关系的父节点仅包含所述第二父节点的情况下,在所述第二节点状态为执行成功状态时,执行所述子节点;
第三子节点执行子单元,用于在与所述子节点具有依赖关系的父节点同时包含所述第一父节点和所述第二父节点的情况下,在所述第一节点状态和所述第二节点状态均为执行成功状态时,执行所述子节点。
与现有技术相比,本申请包括以下优点:
本申请实施例提供了一种任务处理方法及装置。通过在需要对工作流进行处理的情况下,获取工作流中的所有任务及所有任务之间的依赖关系,获取与所有任务具有依赖关系的跨工作流任务,根据所有任务、跨工作流任务和依赖关系,构建得到工作流对应的有向无环图,根据有向无环图,依次执行所有任务,确定工作流对应的任务执行结果。本申请实施例通过结合工作流中所有任务的依赖关系构建有向无环图,结合有向无环图执行所有任务,能够确保所有任务按照依赖关系准确执行,进而提高了工作流任务执行的准确性,能够实现跨工作流依赖的任务执行。
附图说明
图1为本申请实施例提供的一种任务处理方法的步骤流程图;
图2为本申请实施例提供的另一种任务处理方法的步骤流程图;
图3为本申请实施例提供的一种任务依赖关系的示意图;
图4为本申请实施例提供的一种有向无环图执行逻辑的示意图;
图5为本申请实施例提供的一种任务处理装置的结构示意图;
图6为本申请实施例提供的另一种任务处理装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
实施例一
参照图1,示出了本申请实施例提供的一种任务处理方法的步骤流程图,如图1所示,该任务处理方法具体可以包括如下步骤:
步骤101:在需要对工作流进行处理的情况下,获取所述工作流中的所有任务及所述所有任务之间的依赖关系。
本申请实施例可以应用于结合工作流中多任务的依赖关系构建有向无环图,并根据有向无环图执行工作流中的任务的场景中。
依赖关系是指任务执行所依赖的关系,例如,工作流中包含任务a、任务b和任务c,其中,任务b的执行需要依赖任务a的执行结果,则任务b与任务a之间存在依赖关系,任务c的执行需要依赖任务a和任务b的执行结果,则任务c与任务a和任务b之间存在依赖关系。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在需要对工作流进行处理的情况下,可以获取工作流中的所有任务及所有任务之间的依赖关系。
在获取到工作流中的所有任务及所有任务之间的依赖关系之后,执行步骤102。
步骤102:获取与所述所有任务具有依赖关系的跨工作流任务。
在获取到工作流内的所有任务,及所有任务之间的依赖关系之后,可以获取与所有任务具有依赖关系的跨工作流任务,例如,如图3所示,本工作流为工作流A,即图示flowA,其它工作流为flowB和flowC,其中,在flowA内任务joba2的执行依赖于flowC中的jobc2和flowB中的jobb1,而flowA内任务joba4的执行依赖于flowC中的jobc3,在获取本工作流的所有任务(即joba1、joba2、joba3和joba4)之后,可以获取与所有任务具有依赖关系的跨工作流任务,即为flowC中的jobc2和jobc3,及flowB中的jobb1。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在获取到与所有任务具有依赖关系的跨工作流任务之后,执行步骤103。
步骤103:根据所述所有任务、所述跨工作流任务和所述依赖关系,构建得到所述工作流对应的有向无环图。
在获取到工作流中的所有任务、跨工作流任务及依赖关系之后,可以根据工作流中的所有任务、跨工作流任务和依赖关系,构建得到工作流对应的有向无环图,例如,如图4所示,工作流A中包含的任务为a1、a2、a3和a4,具有依赖关系的跨工作流任务为b1、c2和c3,其中,可以以这些任务(即a1、a2、a3、a4、b1、c2和c3)作为图节点,并结合依赖关系,构建得到有向无环图GA,图中所示箭头可以用于指示任务的执行方向。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在根据所有任务、跨工作流任务和任务之间的依赖关系构建得到工作流对应的有向无环图之后,执行步骤104。
步骤104:根据所述有向无环图,依次执行所述所有任务,确定所述工作流对应的任务执行结果。
在构建得到工作流对应的有向无环图之后,可以根据有向无环图依次执行工作流中的所有任务,例如,如图4所示,有向无环图GA,在需要对有向无环图GA中的任务进行调度时,GA中包含的本工作流的图节点为:a1、a2、a3和a4,可以根据有向无环图首先执行本工作流的有向无环图内无依赖关系的父节点a1,在父节点a1执行完成后,通过有向无环图可以查找到属于本工作流内的图节点a2,在图节点a2执行之前检测到跨工作流的图节点b1和图节点c2,即图节点a2的执行依赖于GB中的图节点b1和GC中的图节点c2,此时,需要判断b1和c2的执行状态,即是否得到执行b1和c2的结果,若已经得到b1和c2的执行结果,此时,可以执行本工作流对应的有向无环图内的图节点a2。在图节点a2执行完成之后,再执行本工作流对应的有向无环图内的图节点a3和图节点a4,在执行图节点a3和图节点a4,也需要对图节点a3和图节点a4的父节点的执行状态进行判断,判断过程类似于图节点a2,在GA的中的所有属于flowA的图节点执行完成之后,即可得到flowA的任务执行结果。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
本申请实施例通过结合工作流中所有任务的依赖关系构建有向无环图,结合有向无环图执行所有任务,能够确保所有任务按照依赖关系准确执行。
本申请实施例提供的任务处理方法,通过在需要对工作流进行处理的情况下,获取工作流中的所有任务及所有任务之间的依赖关系,获取与所有任务具有依赖关系的跨工作流任务,根据所有任务、跨工作流任务和依赖关系,构建得到工作流对应的有向无环图,根据有向无环图,依次执行所有任务,确定工作流对应的任务执行结果。本申请实施例通过结合工作流中所有任务的依赖关系构建有向无环图,结合有向无环图执行所有任务,能够确保所有任务按照依赖关系准确执行,进而提高了工作流任务执行的准确性,能够实现跨工作流依赖的任务执行。
实施例二
参照图2,示出了本申请实施例提供的另一种任务处理方法的步骤流程图,如图2所示,该任务处理方法具体可以包括如下步骤:
步骤201:在需要对工作流进行处理的情况下,获取所述工作流中的所有任务及所述所有任务之间的依赖关系。
本申请实施例可以应用于结合工作流中多任务的依赖关系构建有向无环图,并根据有向无环图执行工作流中的任务的场景中。
依赖关系是指任务执行所依赖的关系,例如,工作流中包含任务a、任务b和任务c,其中,任务b的执行需要依赖任务a的执行结果,则任务b与任务a之间存在依赖关系,任务c的执行需要依赖任务a和任务b的执行结果,则任务c与任务a和任务b之间存在依赖关系。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在需要对工作流进行处理的情况下,可以获取工作流中的所有任务及所有任务之间的依赖关系。
在获取到工作流中的所有任务及所有任务之间的依赖关系之后,执行步骤202。
步骤202:获取与所述所有任务具有依赖关系的跨工作流任务。
在获取到工作流内的所有任务,及所有任务之间的依赖关系之后,可以获取与所有任务具有依赖关系的跨工作流任务,例如,如图3所示,本工作流为工作流A,即图示flowA,其它工作流为flowB和flowC,其中,在flowA内任务joba2的执行依赖于flowC中的jobc2和flowB中的jobb1,而flowA内任务joba4的执行依赖于flowC中的jobc3,在获取本工作流的所有任务(即joba1、joba2、joba3和joba4)之后,可以获取与所有任务具有依赖关系的跨工作流任务,即为flowC中的jobc2和jobc3,及flowB中的jobb1。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在获取到与所有任务具有依赖关系的跨工作流任务之后,执行步骤203。
步骤203:以所述所有任务和所述跨工作流任务作为图节点,并以所述依赖关系作为所述图节点的依赖边,构建得到初始有向无环图。
初始有向无环图是指以所有任务和跨工作流任务作为图节点,并将具有依赖关系的图节点相连接之后,得到的有向无环图。
在获取到工作流中的所有任务、跨工作流任务及任务的依赖关系之后,可以以所有任务和跨工作流任务作为图节点,并以这些任务之间的依赖关系作为图节点的依赖边,构建得到初始有向无环图。
在以所有任务和跨工作流任务作为图节点,并以依赖关系作为图节点的依赖边构建得到初始有向无环图之后,执行步骤204。
步骤204:根据所述依赖关系,对所述依赖边进行标记,生成所述有向无环图。
在本实施例中,依赖边可以包括工作流内依赖边和跨工作流依赖边,调度内依赖边是指工作流中的两个任务之间存在依赖关系的连接边,跨调度依赖边是指两个工作流中的任务存在依赖关系,两个工作流中的任务相连接的边。
在构建得到初始有向无环图之后,可以根据依赖关系对依赖边进行标记,以生成有向无环图,如图3和图4所示,工作流A(即flowA)中包含的任务有a1、a2、a3、a4,工作流B(即flowB)中的包含的任务有b1,工作流C(即flowC)中包含的任务由c1、c2和c3,其中,可以以这些任务作为图节点,并结合依赖关系,构建得到有向无环图GA,图中所示箭头可以用于指示任务的执行方向。即在构建得到初始有向无环图之后,可以根据依赖关系对依赖边的进行箭头标记,以指示任务执行方向。
在根据所有任务和跨工作流任务之间的依赖关系对依赖边进行标记,生成有向无环图之后,执行步骤205。
步骤205:获取并执行所述有向无环图中属于所述工作流的父节点。
在本示例中,父节点是指有向无环图中不存在上级依赖关系的图节点的节点,例如,如图4所示,构建的有向无环图GA的图节点包括:节点a1、节点a2、节点a3、节点a4、节点b1、节点c2和节点c3,通过图4可以看出,节点a1为本工作流flowA内不存在上级依赖关系的图节点,此时,可以将节点a1视为有向无环图中属于需要调度的工作流(即本工作流)的父节点。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在构建得到工作流对应的有向无环图之后,可以获取有向无环图中属于本工作流的父节点,并执行父节点。
当然,也存在在该工作流的有向无环图中不存在一个图节点的父节点,但该图节点存在其它工作流中的一个任务的父节点,如图4所示,节点b1为有向无环图中属于外部工作流的一个图节点,在执行节点a2时,需要判断图节点a1、图节点b1和图节点c2这三个父节点的执行状态,只有这三个父节点的执行状态均为完成状态时,才执行图节点a2,而图节点a2是由图节点a1从有向无环图中检索得到的,此时,仅需检查图节点b1和图节点c2的执行结果,首先判断该节点b1的任务执行状态,在b1的任务执行状态为未执行完成的状态时,则将节点a2处于等待执行的状态,而在b1的任务执行状态为任务执行完成,已获取到执行结果的状态时,可以判断节点c2的任务执行状态,若c2的任务执行状态也为任务执行完成,已获取到执行结果的状态时,则执行节点a2。
在获取并执行有向无环图中属于工作流的父节点之后,执行步骤206。
步骤206:在所述父节点执行完成之后,根据所述依赖关系,获取所述父节点对应的子节点。
在获取的所有父节点执行完成之后,可以根据依赖关系,获取父节点对应的子节点,例如,如图4所示,有向无环图中属于本工作流的父节点a1的子节点为a2。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在获取到的有向无环图中的父节点执行完成之后,可以根据依赖关系,获取父节点对应的子节点。
在根据依赖关系获取到父节点对应的子节点,及跨工作流任务对应的图节点的子节点之后,执行步骤207。
步骤207:在执行所述子节点之前,获取与所述子节点具有依赖关系的所有父节点的节点执行状态。
节点执行状态是指有向无环图中的图节点的执行状态,在本实施例中,节点执行状态可以包括执行成功状态和执行失败状态。
在根据依赖关系获取到父节点对应的子节点,及跨工作流任务对应的图节点的子节点之后,可以获取与子节点具有依赖关系的所有父节点的节点执行状态,如图4所示,在子节点为节点a2时,通过有向无环图可以查找到该子节点的所有父节点为节点a1、节点b1和节点c2;在子节点为节点a3时,通过有向无环图可以查找到该子节点的所有父节点即为节点a2;在子节点为节点a4时,通过有向无环图可以查找到该子节点的所有父节点即为节点a2和节点c3等。
当然,在某个节点执行完成之后,并不表示该节点执行成功,可能存在执行失败的节点,例如,由于突发网络故障等原因导致某个节点执行失败时,虽然显示的该节点已执行完成,但该节点并未执行成功。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本申请实施例的唯一限制。
当然,在本实施例中,一个子节点的父节点可以包括本工作流内的父节点,也可以包括跨工作流的父节点,具体地,可以结合下述具体实现方式进行详细描述。
在本申请的一种具体实现方式中,上述步骤207可以包括:
子步骤S1:获取与所述子节点具有依赖关系的位于工作流内的第一父节点,和/或,位于所述工作流外的第二父节点。
在本实施例中,第一父节点是指子节点对应的位于与子节点处于同一工作流内的节点。
第二父节点是指子节点对应的位于工作流外的节点,例如,如图4所示,子节点为a2,该a2的父节点包括a1、b1和c2,其中,a1与a2处于同一工作流内,可以将a1作为第一父节点,而b1和c2与a2处于不同的工作流内,此时,可以将b1和c2作为第二父节点等。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在获取到与子节点具有依赖关系的位于工作流内的第一父节点,和/或,位于工作流外的第二父节点之后,执行子步骤S2。
子步骤S2:获取所述第一父节点对应的第一节点状态,和/或所述第二父节点对应的第二节点状态。
第一节点状态是指第一父节点的执行状态,第二节点状态是指第二父节点的执行状态,在本示例中,第一节点状态和第二节点状态均可以包括执行成功状态和执行失败状态两种。
在获取到与子节点具有依赖关系的位于工作流内的第一父节点,和/或,位于工作流外的第二父节点之后,可以获取第一父节点对应的第一节点状态,和/或第二父节点对应的第二节点状态。
在根据依赖关系获取到父节点对应的子节点之后,可以在执行子节点之前,获取与子节点具有依赖关系的所有父节点的节点执行状态。
在获取到与子节点具有依赖关系的所有父节点的节点执行状态之后,执行步骤208。
步骤208:在所述节点执行状态为执行成功状态的情况下,执行所述子节点。
在获取到与子节点具有依赖关系的所有父节点的节点执行状态之后,可以根据子节点的所有父节点的节点执行状态,确定是否执行子节点。
若该子节点的所有父节点中存在至少一个父节点的节点执行状态为执行失败状态的情况下,则不会执行子节点,并重复执行节点执行状态为执行失败状态的父节点,直至该子节点的所有父节点执行成功之后,才会执行该子节点。例如,子节点为节点a,节点a的所有父节点包括节点b、节点c和节点d,在执行节点a之前,可以判断节点b、节点c和节点d是否全部执行成功,若节点b、节点c和节点d中存在一个或多个节点的节点执行状态为执行失败状态的情况下,则不会执行节点a。
若该子节点的所有父节点的节点执行状态均为执行成功状态的情况下,则执行该子节点,例如,子节点为节点a,节点a的所有父节点包括节点b、节点c和节点d,在执行节点a之前,可以判断节点b、节点c和节点d是否全部执行成功,若节点b、节点c和节点d的节点执行状态全部为执行成功状态时,则执行该节点a。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
对于执行子节点的过程可以结合下述具体实现方式进行详细描述。
在本申请实施例的另一种具体实现方式中,上述步骤208可以包括:
子步骤M1:在与所述子节点具有依赖关系的父节点仅包含所述第一父节点的情况下,在所述第一节点状态为执行成功状态时,执行所述子节点。
子步骤M2:在与所述子节点具有依赖关系的父节点仅包含所述第二父节点的情况下,在所述第二节点状态为执行成功状态时,执行所述子节点。
子步骤M3:在与所述子节点具有依赖关系的父节点同时包含所述第一父节点和所述第二父节点的情况下,在所述第一节点状态和所述第二节点状态均为执行成功状态时,执行所述子节点。
在本实施例中,在与子节点具有依赖关系的父节点仅包含第一父节点的情况下,可以在第一节点状态为执行成功状态时,执行子节点。
在与子节点具有依赖关系的父节点仅包含第二父节点的情况下,可以在第二节点状态为执行成功状态时,执行子节点。
在与子节点具有依赖关系的父节点同时包含第一父节点和第二父节点的情况下,在第一节点状态和第二节点状态均为执行成功状态时,执行子节点。
在执行子节点之后,执行步骤209。
步骤209:在所述子节点执行完成之后,以所述子节点作为父节点,循环执行上述步骤206至上述步骤208,直至所述有向无环图中的所有图节点均执行完成,得到所述工作流的任务执行结果。
在子节点执行完成之后,则可以以该子节点作为父节点,并循环执行上述步骤206至上述步骤208,直至有向无环图中的所有图节点均执行完成,即可以得到工作流的任务执行结果。
对于本申请实施例的上述过程可以结合下述步骤进行如下详细描述:
1、有调度(即工作流)A,调度A下有任务a1和a2;
2、有调度B,调度B下有任务b1;
3、上述三个任务存在的任务依赖关系为:a1依赖a2和b1;
4、调度A启动时构建调度A的有相无环图GA,该GA中包含任务a1和a2,以及a1的父任务b1;
5、对GA进行检测,任务a2没有父任务,可以直接执行。b1为外部调度任务,不执行;
6、a2执行结束后,执行结果写入存储。然后对GA进行检测,发现a2的子任务a1;
7、对a1的父任务检测,发现a2已经执行完成,b1为外部调度任务。a1任务转为检测b1任务的执行结果;
8、调度B启动时构建调度B的有向无环图GB包含任务b1;
9、对GB进行检测,任务b1没有父任务,可以直接执行;
10、b1执行结束后,执行结果写入存储。然后对GB进行检测,GB所有任务都执行结束,调度B执行结束;
11、a1检测到b1的执行结果,a1开始执行;
12、a1执行结束后,执行结果写入存储。然后对GA进行检测而,GA所有任务都执行结束,调度A执行结束。
本申请实施例通过结合工作流中所有任务的依赖关系构建有向无环图,结合有向无环图执行所有任务,能够确保所有任务按照依赖关系准确执行,进而提高了工作流任务执行的准确性,能够实现跨工作流依赖的任务执行。
本申请实施例提供的任务处理方法,通过在需要对工作流进行处理的情况下,获取工作流中的所有任务及所有任务之间的依赖关系,获取与所有任务具有依赖关系的跨工作流任务,根据所有任务、跨工作流任务和依赖关系,构建得到工作流对应的有向无环图,根据有向无环图,依次执行所有任务,确定工作流对应的任务执行结果。本申请实施例通过结合工作流中所有任务的依赖关系构建有向无环图,结合有向无环图执行所有任务,能够确保所有任务按照依赖关系准确执行,进而提高了工作流任务执行的准确性,能够实现跨工作流依赖的任务执行。
实施例三
参照图5,示出了本申请实施例提供的一种任务处理装置的结构示意图,如图5所示,该任务处理装置300具体可以包括如下模块:
依赖关系获取模块310,用于在需要对工作流进行处理的情况下,获取所述工作流中的所有任务及所述所有任务之间的依赖关系;
跨流任务获取模块320,用于获取与所述所有任务具有依赖关系的跨工作流任务;
有向无环图构建模块330,用于根据所述所有任务、所述跨工作流任务和所述依赖关系,构建得到所述工作流对应的有向无环图;
任务执行结果确定模块340,用于根据所述有向无环图,依次执行所述所有任务,确定所述工作流对应的任务执行结果。
本申请实施例提供的任务处理装置,通过在需要对工作流进行处理的情况下,获取工作流中的所有任务及所有任务之间的依赖关系,根据依赖关系获取与所有任务具有依赖关系的跨工作流任务,根据所有任务、跨工作流任务和依赖关系,构建得到工作流对应的有向无环图,根据有向无环图,依次执行所有任务,确定工作流对应的任务执行结果。本申请实施例通过结合工作流中所有任务的依赖关系构建有向无环图,结合有向无环图执行所有任务,能够确保所有任务按照依赖关系准确执行,进而提高了工作流任务执行的准确性,能够实现跨工作流依赖的任务执行。
实施例四
参照图6,示出了本申请实施例提供的另一种任务处理装置的结构示意图,如图6所示,该任务处理装置400具体可以包括如下模块:
依赖关系获取模块410,用于在需要对工作流进行处理的情况下,获取所述工作流中的所有任务及所述所有任务之间的依赖关系;
跨流任务获取模块420,用于获取与所述所有任务具有依赖关系的跨工作流任务;
有向无环图构建模块430,用于根据所述所有任务、所述跨工作流任务和所述依赖关系,构建得到所述工作流对应的有向无环图;
任务执行结果确定模块440,用于根据所述有向无环图,依次执行所述所有任务,确定所述工作流对应的任务执行结果。
可选地,所述有向无环图构建模块430包括:
初始无环图构建单元431,用于以所述所有任务和所述跨工作流任务作为图节点,并以所述依赖关系作为所述图节点的依赖边,构建得到初始有向无环图;
有向无环图生成单元432,用于根据所述依赖关系,对所述依赖边进行标记,生成所述有向无环图;
其中,所述依赖边包括工作流内依赖边和跨工作流依赖边。
可选地,所述任务执行结果确定模块440包括:
父节点获取单元441,用于获取并执行所述有向无环图中属于所述工作流的父节点;
子节点获取单元442,用于在所述父节点执行完成之后,根据所述依赖关系,获取所述父节点对应的子节点;
节点执行状态获取单元443,用于在执行所述子节点之前,获取与所述子节点具有依赖关系的所有父节点的节点执行状态;
子节点执行单元444,用于在所述节点执行状态为执行成功状态的情况下,执行所述子节点;
执行结果获取单元445,用于在所述子节点执行完成之后,以所述子节点作为父节点,循环执行子节点获取单元442、所述节点执行状态获取单元443和所述子节点执行单元444,直至所述有向无环图中的所有图节点均执行完成,得到所述工作流的任务执行结果。
可选地,所述节点执行状态获取单元443包括:
父节点获取子单元,用于获取与所述子节点具有依赖关系的位于工作流内的第一父节点,和/或,位于所述工作流外的第二父节点;
节点状态获取子单元,用于获取所述第一父节点对应的第一节点状态,和/或所述第二父节点对应的第二节点状态。
可选地,所述子节点执行单元444包括:
第一子节点执行子单元,用于在与所述子节点具有依赖关系的父节点仅包含所述第一父节点的情况下,在所述第一节点状态为执行成功状态时,执行所述子节点;
第二子节点执行子单元,用于在与所述子节点具有依赖关系的父节点仅包含所述第二父节点的情况下,在所述第二节点状态为执行成功状态时,执行所述子节点;
第三子节点执行子单元,用于在与所述子节点具有依赖关系的父节点同时包含所述第一父节点和所述第二父节点的情况下,在所述第一节点状态和所述第二节点状态均为执行成功状态时,执行所述子节点。
本申请实施例提供的任务处理装置,通过在需要对工作流进行处理的情况下,获取工作流中的所有任务及所有任务之间的依赖关系,获取与所有任务具有依赖关系的跨工作流任务,根据所有任务、跨工作流任务和依赖关系,构建得到工作流对应的有向无环图,根据有向无环图,依次执行所有任务,确定工作流对应的任务执行结果。本申请实施例通过结合工作流中所有任务的依赖关系构建有向无环图,结合有向无环图执行所有任务,能够确保所有任务按照依赖关系准确执行,进而提高了工作流任务执行的准确性,能够实现跨工作流依赖的任务执行。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
另外地,本申请实施例还提供了一种电子设备,包括:处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的任务处理方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种任务处理方法和一种任务处理装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种任务处理方法,其特征在于,包括:
在需要对工作流进行处理的情况下,获取所述工作流中的所有任务及所述所有任务之间的依赖关系;
获取与所述所有任务具有依赖关系的跨工作流任务;
根据所述所有任务、所述跨工作流任务和所述依赖关系,构建得到所述工作流对应的有向无环图;
根据所述有向无环图,依次执行所述所有任务,确定所述工作流对应的任务执行结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述所有任务、所述跨工作流任务和所述依赖关系,构建得到所述工作流对应的有向无环图,包括:
以所述所有任务和所述跨工作流任务作为图节点,并以所述依赖关系作为所述图节点的依赖边,构建得到初始有向无环图;
根据所述依赖关系,对所述依赖边进行标记,生成所述有向无环图;
其中,所述依赖边包括工作流内依赖边和跨工作流依赖边。
3.根据权利要求1所述的方法,其特征在于,所述根据所述有向无环图,依次执行所述所有任务,确定所述工作流对应的任务执行结果,包括:
获取并执行所述有向无环图中属于所述工作流的父节点;
在所述父节点执行完成之后,根据所述依赖关系,获取所述父节点对应的子节点;
在执行所述子节点之前,获取与所述子节点具有依赖关系的所有父节点的节点执行状态;
在所述节点执行状态为执行成功状态的情况下,执行所述子节点;
在所述子节点执行完成之后,以所述子节点作为父节点,循环执行所述根据所述依赖关系,获取所述父节点对应的子节点、所述在执行所述子节点之前,获取与所述子节点具有依赖关系的所有父节点的节点执行状态和所述在所述节点执行状态为执行成功状态的情况下,执行所述子节点的步骤,直至所述有向无环图中的所有图节点均执行完成,得到所述工作流的任务执行结果。
4.根据权利要求3所述的方法,其特征在于,所述获取与所述子节点具有依赖关系的所有父节点的节点执行状态,包括:
获取与所述子节点具有依赖关系的位于工作流内的第一父节点,和/或,位于所述工作流外的第二父节点;
获取所述第一父节点对应的第一节点状态,和/或所述第二父节点对应的第二节点状态。
5.根据权利要求4所述的方法,其特征在于,所述在所述节点执行状态为执行成功状态的情况下,执行所述子节点,包括:
在与所述子节点具有依赖关系的父节点仅包含所述第一父节点的情况下,在所述第一节点状态为执行成功状态时,执行所述子节点;
在与所述子节点具有依赖关系的父节点仅包含所述第二父节点的情况下,在所述第二节点状态为执行成功状态时,执行所述子节点;
在与所述子节点具有依赖关系的父节点同时包含所述第一父节点和所述第二父节点的情况下,在所述第一节点状态和所述第二节点状态均为执行成功状态时,执行所述子节点。
6.一种任务处理装置,其特征在于,包括:
依赖关系获取模块,用于在需要对工作流进行处理的情况下,获取所述工作流中的所有任务及所述所有任务之间的依赖关系;
跨流任务获取模块,用于获取与所述所有任务具有依赖关系的跨工作流任务;
有向无环图构建模块,用于根据所述所有任务、所述跨工作流任务和所述依赖关系,构建得到所述工作流对应的有向无环图;
任务执行结果确定模块,用于根据所述有向无环图,依次执行所述所有任务,确定所述工作流对应的任务执行结果。
7.根据权利要求6所述的装置,其特征在于,所述有向无环图构建模块包括:
初始无环图构建单元,用于以所述所有任务和所述跨工作流任务作为图节点,并以所述依赖关系作为所述图节点的依赖边,构建得到初始有向无环图;
有向无环图生成单元,用于根据所述依赖关系,对所述依赖边进行标记,生成所述有向无环图;
其中,所述依赖边包括工作流内依赖边和跨工作流依赖边。
8.根据权利要求6所述的装置,其特征在于,所述任务执行结果确定模块包括:
父节点获取单元,用于获取并执行所述有向无环图中属于所述工作流的父节点;
子节点获取单元,用于在所述父节点执行完成之后,根据所述依赖关系,获取所述父节点对应的子节点;
节点执行状态获取单元,用于在执行所述子节点之前,获取与所述子节点具有依赖关系的所有父节点的节点执行状态;
子节点执行单元,用于在所述节点执行状态为执行成功状态的情况下,执行所述子节点;
执行结果获取单元,用于在所述子节点执行完成之后,以所述子节点作为父节点,循环执行子节点获取单元、所述节点执行状态获取单元和所述子节点执行单元,直至所述有向无环图中的所有图节点均执行完成,得到所述工作流的任务执行结果。
9.根据权利要求8所述的装置,其特征在于,所述节点执行状态获取单元包括:
父节点获取子单元,用于获取与所述子节点具有依赖关系的位于工作流内的第一父节点,和/或,位于所述工作流外的第二父节点;
节点状态获取子单元,用于获取所述第一父节点对应的第一节点状态,和/或所述第二父节点对应的第二节点状态。
10.根据权利要求9所述的装置,其特征在于,所述子节点执行单元包括:
第一子节点执行子单元,用于在与所述子节点具有依赖关系的父节点仅包含所述第一父节点的情况下,在所述第一节点状态为执行成功状态时,执行所述子节点;
第二子节点执行子单元,用于在与所述子节点具有依赖关系的父节点仅包含所述第二父节点的情况下,在所述第二节点状态为执行成功状态时,执行所述子节点;
第三子节点执行子单元,用于在与所述子节点具有依赖关系的父节点同时包含所述第一父节点和所述第二父节点的情况下,在所述第一节点状态和所述第二节点状态均为执行成功状态时,执行所述子节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110051110.0A CN112817744A (zh) | 2021-01-14 | 2021-01-14 | 一种任务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110051110.0A CN112817744A (zh) | 2021-01-14 | 2021-01-14 | 一种任务处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112817744A true CN112817744A (zh) | 2021-05-18 |
Family
ID=75869841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110051110.0A Pending CN112817744A (zh) | 2021-01-14 | 2021-01-14 | 一种任务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817744A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113805976A (zh) * | 2021-09-16 | 2021-12-17 | 上海商汤科技开发有限公司 | 数据处理方法及装置、电子设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020940A (zh) * | 2015-03-31 | 2016-10-12 | 国际商业机器公司 | 用于确定数据集的放置的存储层级的方法和系统 |
WO2017125015A1 (zh) * | 2016-01-18 | 2017-07-27 | 中兴通讯股份有限公司 | 分布式系统工作流处理方法和工作流引擎系统 |
CN110968749A (zh) * | 2019-12-23 | 2020-04-07 | 武汉智领云科技有限公司 | 基于大数据容器化调度中心系统的可视化显示装置及方法 |
CN111176802A (zh) * | 2019-07-26 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-01-14 CN CN202110051110.0A patent/CN112817744A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020940A (zh) * | 2015-03-31 | 2016-10-12 | 国际商业机器公司 | 用于确定数据集的放置的存储层级的方法和系统 |
WO2017125015A1 (zh) * | 2016-01-18 | 2017-07-27 | 中兴通讯股份有限公司 | 分布式系统工作流处理方法和工作流引擎系统 |
CN111176802A (zh) * | 2019-07-26 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、电子设备及存储介质 |
CN110968749A (zh) * | 2019-12-23 | 2020-04-07 | 武汉智领云科技有限公司 | 基于大数据容器化调度中心系统的可视化显示装置及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113805976A (zh) * | 2021-09-16 | 2021-12-17 | 上海商汤科技开发有限公司 | 数据处理方法及装置、电子设备及计算机可读存储介质 |
CN113805976B (zh) * | 2021-09-16 | 2024-09-13 | 上海商汤科技开发有限公司 | 数据处理方法及装置、电子设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100318969A1 (en) | Mechanism for Automated and Unattended Process for Testing Software Applications | |
US20160378785A1 (en) | Distributed work flow using database replication | |
US20140282553A1 (en) | Meta-application management in a multitasking environment | |
CN111176697A (zh) | 服务实例部署方法、数据处理方法及集群联邦 | |
US9892019B2 (en) | Use case driven stepping component automation framework | |
CN107391265B (zh) | 用于进程中检测死锁的方法和设备 | |
US8244839B2 (en) | Network problem determination | |
CN113282402B (zh) | 一种面向复杂资源约束的测试任务调度方法 | |
JP2010522932A (ja) | インストールシーケンスのためのブックマークおよび構成ファイル | |
CN114168305A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN111158730B (zh) | 系统更新方法、装置、电子设备和可读存储介质 | |
CN110297767B (zh) | 测试用例自动执行方法、装置、设备及存储介质 | |
CN110874318A (zh) | 软件测试方法、装置及计算机可读存储介质 | |
JP2008310748A (ja) | タスク実行時間記録装置、タスク実行時間記録方法、及びタスク実行時間記録用プログラム | |
CN112817744A (zh) | 一种任务处理方法及装置 | |
CN111147541B (zh) | 基于参数服务器的节点处理方法、装置、设备及存储介质 | |
CN106933857B (zh) | 一种数据仓库中任务的调度方法、装置 | |
CN106339379B (zh) | 网站运行状态监控方法及装置 | |
CN106598797B (zh) | 一种多路径io的故障注入方法、系统及故障管理系统 | |
Fu et al. | Runtime recovery actions selection for sporadic operations on public cloud | |
CN116009898A (zh) | K8s部署任务的状态确定方法、装置、设备及介质 | |
CN111367796B (zh) | 应用程序调试方法及装置 | |
CN111522748B (zh) | 一种自动化测试案例生成方法、装置、服务器及存储介质 | |
CN111190725B (zh) | 任务处理方法、装置、存储介质及服务器 | |
CN111309475B (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 |