CN117610320B - 有向无环图工作流引擎循环调度方法、装置和设备 - Google Patents

有向无环图工作流引擎循环调度方法、装置和设备 Download PDF

Info

Publication number
CN117610320B
CN117610320B CN202410094252.9A CN202410094252A CN117610320B CN 117610320 B CN117610320 B CN 117610320B CN 202410094252 A CN202410094252 A CN 202410094252A CN 117610320 B CN117610320 B CN 117610320B
Authority
CN
China
Prior art keywords
node
execution
workflow
loop
circulation
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.)
Active
Application number
CN202410094252.9A
Other languages
English (en)
Other versions
CN117610320A (zh
Inventor
张为华
王东辉
高经伟
马帅超
周奇
武泽平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202410094252.9A priority Critical patent/CN117610320B/zh
Publication of CN117610320A publication Critical patent/CN117610320A/zh
Application granted granted Critical
Publication of CN117610320B publication Critical patent/CN117610320B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Geometry (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请涉及有向无环图工作流引擎循环调度方法、装置和设备,该方法通过将单个循环节点拆分为两个互相关联的逻辑节点,并基于结构化编程语言中goto思想,建立了以循环开始节点和循环结束节点为循环结构实现策略的工作流子流程循环调度处理方式,在保留了通用工作流引擎底层有向无环图数据结构的同时,维持流程中各个任务的相对独立性。有效避免了***开发难度的增加,也将循环结构的执行能力发挥到了极致,不必担心循环体过而大影响流程执行性能,工作流中循环互相嵌套的情况也得以实现。

Description

有向无环图工作流引擎循环调度方法、装置和设备
技术领域
本发明属于数据处理技术领域,涉及一种有向无环图工作流引擎循环调度方法、装置和设备。
背景技术
优化设计流程引擎是一种设计辅助***,常见的有多学科优化设计大型流程调度引擎,也可统称工作流引擎,通过流程中各个计算节点依照用户设计顺序或并行或逐一执行完成优化问题的求解处理。流程中各种顺序结构、分支选择结构、循环结构、开始及结束标志等,都是构成可执行优化设计流程的必要组成部分,是组成优化问题探索流程的基础。由于流程调度引擎一般以顺序调度为主,并通常采用有向无环图DAG作为流程构建以及流程底层运行的基本数据结构,顺序结构及分支选择等无环结构在DAG中能够被很好的实现,但类似于循环结构以及其他环形节点调度需要,有向无环图反而成为了***功能实现的阻碍,其循环逻辑结构过于复杂,存在着流程调度执行性能不足的技术问题。
发明内容
针对上述传统方法中存在的问题,本发明提出了一种有向无环图工作流引擎循环调度方法、一种有向无环图工作流引擎循环调度装置和一种计算机设备,能够在不改变工作流调度***基础数据结构的基础上,大幅提高包含复杂循环结构的流程调度执行性能。
为了实现上述目的,本发明实施例采用以下技术方案:
一方面,提供一种有向无环图工作流引擎循环调度方法,包括步骤:
在多学科优化设计工作流开始执行时,将工作流解析为有向无环图;工作流中的循环体被解析为相互关联的循环开始节点和循环结束节点;
根据解析得到的有向无环图逐一加载可执行的计算节点,将计算节点的状态转换为可执行状态并放置于节点执行就绪队列中;
通过节点执行器对各计算节点利用相同的调用逻辑,从节点执行就绪队列中逐一执行各计算节点;其中,若遇到循环开始节点,则开始循环调度逻辑的执行;
在工作流的当前计算节点执行完毕后,将计算节点的输出数据同步保存至数据库的任务实例数据表中;其中,循环体执行完毕后保存执行次数信息;
当前计算节点执行完毕时发出节点执行完成事件;节点执行完成事件中包括结束节点的唯一标识信息;
根据结束节点的唯一标识信息以及有向无环图,找到下一计算节点继续执行调度处理,直到工作流执行完毕。
在其中一个实施例中,上述方法还包括步骤:
在工作流引擎的前端界面中,构建待执行的工作流并根据节点间相互依赖关系设置工作流中节点间数据传递关系和数据传递方向;
将构建完毕后的工作流保存至工作流引擎的后端流程数据库。
在其中一个实施例中,开始循环调度逻辑的执行的过程,包括:
根据循环开始节点中记录的循环类型确定节点执行操作和循环条件判断操作;
若循环类型为while类型循环,则进行循环条件判断操作;
若循环条件判断操作为真,则执行有向无环图中循环开始节点的后续节点。
在其中一个实施例中,若循环类型为while类型循环,则进行循环条件判断操作的步骤后,还包括:
若循环条件判断操作为假,则根据循环开始节点中记录的循环结束节点唯一标识信息,直接跳转执行循环结束节点唯一标识信息对应的循环结束节点,完成循环体的执行。
在其中一个实施例中,开始循环调度逻辑的执行的过程,还包括:
若循环类型为do-while类型循环,则结束循环开始节点的执行并转入执行有向无环图中循环开始节点的后续节点;
在循环体执行一次完毕后在循环结束节点中进行循环条件判断操作;
若循环条件判断操作为真,则将循环开始节点再次加载至节点执行就绪队列中,触发循环体的再次执行。
在其中一个实施例中,在循环体执行一次完毕后在循环结束节点中进行循环条件判断操作的步骤后,还包括:
若循环条件判断操作为假,则结束循环体的循环执行操作并跳转至下一计算节点的执行。
另一方面,还提供一种有向无环图工作流引擎循环调度装置,包括:
流解析模块,用于在多学科优化设计工作流开始执行时,将工作流解析为有向无环图;工作流中的循环体被解析为相互关联的循环开始节点和循环结束节点;
队列加载模块,用于根据解析得到的有向无环图逐一加载可执行的计算节点,将计算节点的状态转换为可执行状态并放置于节点执行就绪队列中;
节点执行模块,用于通过节点执行器对各计算节点利用相同的调用逻辑,从节点执行就绪队列中逐一执行各计算节点;其中,若遇到循环开始节点,则开始循环调度逻辑的执行;
数据同步模块,用于在工作流的当前计算节点执行完毕后,将计算节点的输出数据同步保存至数据库的任务实例数据表中;其中,循环体执行完毕后保存执行次数信息;
事件发出模块,用于当前计算节点执行完毕时发出节点执行完成事件;节点执行完成事件中包括结束节点的唯一标识信息;
执行调度模块,用于根据结束节点的唯一标识信息以及有向无环图,找到下一计算节点继续执行调度处理,直到工作流执行完毕。
在其中一个实施例中,上述装置还包括:
流构建模块,用于在工作流引擎的前端界面中,构建待执行的工作流并根据节点间相互依赖关系设置工作流中节点间数据传递关系和数据传递方向;
流存储模块,用于将构建完毕后的工作流保存至工作流引擎的后端流程数据库。
在其中一个实施例中,开始循环调度逻辑的执行的过程,包括:
根据循环开始节点中记录的循环类型确定节点执行操作和循环条件判断操作;
若循环类型为while类型循环,则进行循环条件判断操作;
若循环条件判断操作为真,则执行有向无环图中循环开始节点的后续节点。
又一方面,还提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述的有向无环图工作流引擎循环调度方法的步骤。
上述技术方案中的一个技术方案具有如下优点和有益效果:
上述有向无环图工作流引擎循环调度方法、装置和设备,通过将单个循环节点拆分为两个互相关联的逻辑节点,并基于结构化编程语言中goto(无条件转移)思想,建立了以循环开始节点和循环结束节点为循环结构实现策略的工作流子流程循环调度处理方式,在保留了通用工作流引擎底层有向无环图数据结构的同时,维持流程中各个任务的相对独立性。有效避免了***开发难度的增加,也将循环结构的执行能力发挥到了极致,不必担心循环体过而大影响流程执行性能,工作流中循环互相嵌套的情况也得以实现。相比于传统工作流引擎,上述方案可以在传统工作流引擎基础上无需大量改进就可以引入高效的循环逻辑结构,是一种新型的工作流循环结构实现方案。
附图说明
为了更清楚地说明本申请实施例或传统技术中的技术方案,下面将对实施例或传统技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中有向无环图工作流引擎循环调度方法的流程示意图;
图2为另一个实施例中有向无环图工作流引擎循环调度方法的流程示意图;
图3为一个实施例中单个循环节点构建循环结构的示意图;
图4为一个实施例中双循环节点构建循环结构的示意图;
图5为一个实施例中多学科流程引擎调度逻辑的示意图;
图6为一个实施例中循环体节点的执行逻辑示意图;
图7为一个实施例中有向无环图工作流引擎循环调度装置的模块框架示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
需要说明的是,在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。
本领域技术人员可以理解,本文所描述的实施例可以与其它实施例相结合。在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
目前常见的工作流引擎循环结构实现方法有:(1)在单个逻辑控制节点中存储循环控制变量、循环条件、循环体信息。此类方法实施步骤如下:加载并计算循环节点的循环条件,判断是否执行节点所包含的循环体;将循环体中的中的任务置为待执行,并添加至待执行集合或数据库中;执行器执行待执行任务并在执行完毕后放回循环节点。
发明人经过深入研究分析发现,目前已有工作流引擎循环结构实现方法的缺点有:忽视了有向无环图数据结构不能有环形依赖的问题,需要对调度引擎中普遍采用的成熟底层结构进行修改,增加了开发难度,降低***的稳定性。循环节点中包含循环体节点,增加了循环体节点的复杂性,需要为循环执行结构编写专用模块,不利于节点执行逻辑的通用。循环节点中的循环体可能非常庞大,将循环体包含在循环节点内部不利于复杂循环体的或者是嵌套循环体的执行。
本申请针对目前工作流调度***底层采用有向无环图数据结构,缺少对流程中节点循环调用的数据结构支持等缺点,提出了一种保持有向无环图数据结构稳定性且满足节点或子图可循环调度执行的方案,解决了流程调度***中循环结构实现的问题。
下面将结合本发明实施例图中的附图,对本发明实施方式进行详细说明。
请参阅图1,在一个实施例中,提供了一种有向无环图工作流引擎循环调度方法,包括如下处理步骤S12至S22:
S12,在多学科优化设计工作流开始执行时,将工作流解析为有向无环图;工作流中的循环体被解析为相互关联的循环开始节点和循环结束节点;
S14,根据解析得到的有向无环图逐一加载可执行的计算节点,将计算节点的状态转换为可执行状态并放置于节点执行就绪队列中;
S16,通过节点执行器对各计算节点利用相同的调用逻辑,从节点执行就绪队列中逐一执行各计算节点;其中,若遇到循环开始节点,则开始循环调度逻辑的执行;
S18,在工作流的当前计算节点执行完毕后,将计算节点的输出数据同步保存至数据库的任务实例数据表中;其中,循环体执行完毕后保存执行次数信息;
S20,当前计算节点执行完毕时发出节点执行完成事件;节点执行完成事件中包括结束节点的唯一标识信息;
S22,根据结束节点的唯一标识信息以及有向无环图,找到下一计算节点继续执行调度处理,直到工作流执行完毕。
可以理解,多学科优化设计工作流可以是根据学科优化设计任务预先构建好的工作流,也可以是根据任务在线构建配置的待执行工作流。基于有向无环图DAG实现工作流引擎循环子图的执行方式,能够保留***高稳定性及低开发复杂性的同时,实现优化流程执行***所需的循环调度结构。
通过在工作流引擎中引入循环开始以及循环结束两种互相关联的逻辑节点,有效的实现了有向无环图中子图循环调度执行,在***使用者无感知的情况下,为工作流的构建提供了方便、强大的循环结构构建手段。本申请综合考虑了现有工作流调度***常用数据结构及节点执行调度逻辑,对节点独立性及逻辑节点判断逻辑的通用性进行了深入探讨与研究,基于结构化程序语言(比如汇编语言、C语言)中用到的goto思想,通过双关联逻辑节点的方式,避免对现有***的重构,避免了循环结构过于复杂等问题。
具体的,用户触发多学科优化设计工作流开始执行时,工作流引擎开始将多学科优化设计工作流解析为对应的有向无环图DAG,此时,由于工作流中的循环结构被表示为相互关联的循环开始节点和循环结束节点,使得DAG构建流程得以顺利进行,并构建出可正确调度的流程执行数据结构。然后根据解析所得的有向无环图,逐一加载工作流中的可执行节点,将其转换为可执行状态,并放置于节点执行就绪队列中,以便由工作流引擎的节点执行器逐一执行。同时工作流引擎的调度算法也会为每一个计算节点的任务生成一条任务实例数据保存于数据库中。
各计算节点的调度执行利用相同的调用逻辑,以引擎原有的策略模式调用所属节点处理模块以执行节点的处理任务,若遇到循环体的循环开始节点,则开始循环调度逻辑的执行。工作流对应的DAG中每个任务节点执行完毕后,其数据都会被同步保存至数据库的任务实例数据表中,循环体节点执行完毕后也会将执行次数等信息进行保存,以供引擎后续执行过程中查询使用,如确定是否达到执行次数阈值,以继续或跳出循环执行等。在每一节点完成执行时,节点执行器会发出对应于该计算节点的节点执行完成事件,并且该事件中包含有结束节点的唯一标识信息。工作流引擎根据结束节点的唯一标识信息以及DAG的信息,找到下一计算节点继续执行调度,直到工作流执行完毕。
上述有向无环图工作流引擎循环调度方法,通过将单个循环节点拆分为两个互相关联的逻辑节点,并基于结构化编程语言中goto(无条件转移)思想,建立了以循环开始节点和循环结束节点为循环结构实现策略的工作流子流程循环调度处理方式,在保留了通用工作流引擎底层有向无环图数据结构的同时,维持流程中各个任务的相对独立性。有效避免了***开发难度的增加,也将循环结构的执行能力发挥到了极致,不必担心循环体过而大影响流程执行性能,工作流中循环互相嵌套的情况也得以实现。相比于传统工作流引擎,上述方案可以在传统工作流引擎基础上无需大量改进就可以引入高效的循环逻辑结构,是一种新型的工作流循环结构实现方案。
在一个实施例中,如图2所示,上述有向无环图工作流引擎循环调度方法还可以包括如下处理步骤:
S10,在工作流引擎的前端界面中,构建待执行的工作流并根据节点间相互依赖关系设置工作流中节点间数据传递关系和数据传递方向;
S11,将构建完毕后的工作流保存至工作流引擎的后端流程数据库。
可以理解,用户可以通过工作流引擎的前端界面,根据给出的多学科优化设计任务流程构建待执行的多学科优化设计工作流,并根据工作流处理需要设置节点间数据传递的关系及数据传递方向等,从而通过设置各节点间相互依赖关系完成工作流构建,最后保存工作流至后端流程数据库中。若工作流中需要包含循环体结构,用户可通过以下两种方式a)或b)构建循环体结构:
a)直接使用单个循环节点(独立节点交互构建方式),如图3所示,工作流引擎的流程解析算法会将循环体节点解析为循环开始节点和相应循环结束节点后再进行保存执行。
b)(分节点交互构建方式)使用循环开始节点作为循环体结构的开始,使用循环结束节点作为循环体结构的结束,如图4所示。同时用户需要手动关联循环开始节点和循环结束节点,如图4中的虚线部分所示。其中,两个循环节点的关联信息并不会同其他节点的关联信息一样存储于工作流之中,而是作为循环节点自身信息的一部分,存储于自身节点关联字段中。同时循环开始节点和循环结束节点还会包含相同的循环条件字段(用于循环条件判断操作的执行)、do-while或while的循环类型字段、循环执行次数字段等信息。
通过前置步骤的处理,可以根据任务需求在线配置工作流的各项参数和处理流程,***配置方式更加灵活便捷,能够大幅提高节点数据处理效率。
在一个实施例中,关于上述步骤S16中,开始循环调度逻辑的执行的过程,具体可以包括如下处理步骤:
根据循环开始节点中记录的循环类型确定节点执行操作和循环条件判断操作;
若循环类型为while类型循环,则进行循环条件判断操作;
若循环条件判断操作为真,则执行有向无环图中循环开始节点的后续节点。
具体的,对于当前遇到的循环体节点而言,节点执行器根据其循环开始节点中记录的循环类型确定节点执行操作和循环条件判断操作,若循环开始节点所标识逻辑为while类型循环,则进行循环条件判断操作,条件为真(如循环中由前端用户操作设置的循环条件实际上可以是可执行的JavaScript代码,代码返回值为Boolean类型,代码执行结果返回true则条件判断为真,否则判断为假(包括代码执行发生异常也判断为假),下文真假判断同理理解)则正常结束本循环开始节点,自然执行DAG图中循环开始节点的后续节点,从而准确完成该循环逻辑下的节点执行处理。
在一个实施例中,关于前述若循环类型为while类型循环,则进行循环条件判断操作的步骤后,还包括:
若循环条件判断操作为假,则根据循环开始节点中记录的循环结束节点唯一标识信息,直接跳转执行循环结束节点唯一标识信息对应的循环结束节点,完成循环体的执行。
可以理解,当循环开始节点中记录的循环类型为while类型循环,并且进行循环条件判断操作时判断到循环条件为假时,节点执行器根据循环开始节点中记录的循环结束节点唯一标识信息,直接跳转至相应的循环结束节点,并由调度算法执行循环结束节点。而由于循环结束节点拥有和循环开始节点一致的循环类型信息及循环条件信息,此时循环结束节点将直接结束自身执行,开始循环体结构的DAG后续节点执行,完成循环。
在一个实施例中,关于上述步骤S16中,开始循环调度逻辑的执行的过程,具体还可以包括如下处理步骤:
若循环类型为do-while类型循环,则结束循环开始节点的执行并转入执行有向无环图中循环开始节点的后续节点;
在循环体执行一次完毕后在循环结束节点中进行循环条件判断操作;
若循环条件判断操作为真,则将循环开始节点再次加载至节点执行就绪队列中,触发循环体的再次执行。
可以理解,当循环开始节点中记录的循环类型为do-while类型循环时,节点执行器直接按照普通节点结束逻辑结束本循环开始节点的执行,由此自然进入DAG图中本节点的后续节点的执行处理。循环条件判断操作将在循环体执行一次完毕后在循环结束节点中执行,此时若循环条件判断操作为真,即判断继续执行循环,则循环结束节点将会引导调度算法的后续节点的加载执行,即将循环开始节点再次加载到节点执行就绪队列中去,使得循环体被再一次执行,以此达到了循环体结构的反复执行,直到满足循环结束条件。
在一个实施例中,在循环体执行一次完毕后在循环结束节点中进行循环条件判断操作的步骤后,具体还可以包括:
若循环条件判断操作为假,则结束循环体的循环执行操作并跳转至下一计算节点的执行。
可以理解,循环条件判断操作将在循环体执行一次完毕后在循环结束节点中执行,此时若循环条件判断操作为假,即判断结束继续执行循环,则循环结束节点将会引导调度算法结束执行本节点,并跳转到所属循环体的下一节点的执行处理,从而实现准确的工作流正常引导执行。
本发明已经在多学科优化设计大型流程构建调度***中应用,成功实现了循环结构及其运行调度。与现有技术相比,工作流处理性能更加稳定且高效,且实现循环嵌套等功能更加强大。以工作流引擎为多学科优化设计流程构建执行引擎为例,如图5所示,为该工作流引擎的具体调度逻辑示意图,其中五角星标识了调度算法的开始,并经过构建DAG,初始化节点执行就绪队列、提交节点执行、解析节点并加入节点执行就绪队列、开始执行各类型节点、完成执行后发送事件等步骤,对整个工作流的流程任务进行执行处理;其中,循环开始节点和循环结束节点的执行依赖于引擎中配置的循环节点执行处理器。在多学科优化设计流程构建的***界面上,用户可以在该界面上进行工作流构建和设置,其中的循环体节点的执行逻辑可以如图6所示,其中,W表示while类型循环,DW表示do-while类型循环。
应该理解的是,虽然上述流程图1和图2中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且上述流程图1和图2的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供一种有向无环图工作流引擎循环调度装置100,包括流解析模块11、队列加载模块13、节点执行模块15、数据同步模块17、事件发出模块19和执行调度模块21。其中,流解析模块11用于在多学科优化设计工作流开始执行时,将工作流解析为有向无环图;工作流中的循环体被解析为相互关联的循环开始节点和循环结束节点。队列加载模块13用于根据解析得到的有向无环图逐一加载可执行的计算节点,将计算节点的状态转换为可执行状态并放置于节点执行就绪队列中。节点执行模块15用于通过节点执行器对各计算节点利用相同的调用逻辑,从节点执行就绪队列中逐一执行各计算节点;其中,若遇到循环开始节点,则开始循环调度逻辑的执行。数据同步模块17用于在工作流的当前计算节点执行完毕后,将计算节点的输出数据同步保存至数据库的任务实例数据表中;其中,循环体执行完毕后保存执行次数信息。事件发出模块19用于当前计算节点执行完毕时发出节点执行完成事件;节点执行完成事件中包括结束节点的唯一标识信息。执行调度模块21用于根据结束节点的唯一标识信息以及有向无环图,找到下一计算节点继续执行调度处理,直到工作流执行完毕。
上述有向无环图工作流引擎循环调度装置100,通过将单个循环节点拆分为两个互相关联的逻辑节点,并基于结构化编程语言中goto(无条件转移)思想,建立了以循环开始节点和循环结束节点为循环结构实现策略的工作流子流程循环调度处理方式,在保留了通用工作流引擎底层有向无环图数据结构的同时,维持流程中各个任务的相对独立性。有效避免了***开发难度的增加,也将循环结构的执行能力发挥到了极致,不必担心循环体过大而影响流程执行性能,工作流中循环互相嵌套的情况也得以实现。相比于传统工作流引擎,上述方案可以在传统工作流引擎基础上无需大量改进就可以引入高效的循环逻辑结构,是一种新型的工作流循环结构实现方案。
在一个实施例中,上述有向无环图工作流引擎循环调度装置100还可以包括流构建模块和流存储模块,其中,流构建模块用于在工作流引擎的前端界面中,构建待执行的工作流并根据节点间相互依赖关系设置工作流中节点间数据传递关系和数据传递方向。流存储模块用于将构建完毕后的工作流保存至工作流引擎的后端流程数据库。
在一个实施例中,开始循环调度逻辑的执行的过程,包括:
根据循环开始节点中记录的循环类型确定节点执行操作和循环条件判断操作;
若循环类型为while类型循环,则进行循环条件判断操作;
若循环条件判断操作为真,则执行有向无环图中循环开始节点的后续节点。
在一个实施例中,若循环类型为while类型循环,则进行循环条件判断操作的步骤后,还包括:
若循环条件判断操作为假,则根据循环开始节点中记录的循环结束节点唯一标识信息,直接跳转执行循环结束节点唯一标识信息对应的循环结束节点,完成循环体的执行。
在一个实施例中,开始循环调度逻辑的执行的过程,还包括:
若循环类型为do-while类型循环,则结束循环开始节点的执行并转入执行有向无环图中循环开始节点的后续节点;
在循环体执行一次完毕后在循环结束节点中进行循环条件判断操作;
若循环条件判断操作为真,则将循环开始节点再次加载至节点执行就绪队列中,触发循环体的再次执行。
在一个实施例中,在循环体执行一次完毕后在循环结束节点中进行循环条件判断操作的步骤后,还包括:
若循环条件判断操作为假,则结束循环体的循环执行操作并跳转至下一计算节点的执行。
关于有向无环图工作流引擎循环调度装置100的具体限定,可以参见上文中有向无环图工作流引擎循环调度方法的相应限定,在此不再赘述。上述有向无环图工作流引擎循环调度装置100中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于具备数据处理功能的设备中,也可以软件形式存储于前述设备的存储器中,以便于处理器调用执行以上各个模块对应的操作,前述设备可以是但不限于本领域已有的各型数据计算与处理设备。
在一个实施例中,还提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如下处理步骤:在多学科优化设计工作流开始执行时,将工作流解析为有向无环图;工作流中的循环体被解析为相互关联的循环开始节点和循环结束节点;根据解析得到的有向无环图逐一加载可执行的计算节点,将计算节点的状态转换为可执行状态并放置于节点执行就绪队列中;通过节点执行器对各计算节点利用相同的调用逻辑,从节点执行就绪队列中逐一执行各计算节点;其中,若遇到循环开始节点,则开始循环调度逻辑的执行;在工作流的当前计算节点执行完毕后,将计算节点的输出数据同步保存至数据库的任务实例数据表中;其中,循环体执行完毕后保存执行次数信息;当前计算节点执行完毕时发出节点执行完成事件;节点执行完成事件中包括结束节点的唯一标识信息;根据结束节点的唯一标识信息以及有向无环图,找到下一计算节点继续执行调度处理,直到工作流执行完毕。
可以理解,上述计算机设备除上述述及的存储器和处理器外,还包括其他本说明书未列出的软硬件组成部分,具体可以根据不同应用场景下的具体计算机设备的型号确定,本说明书不再一一列出详述。
在一个实施例中,处理器执行计算机程序时还可以实现上述有向无环图工作流引擎循环调度方法各实施例中增加的步骤或者子步骤。
在一个实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如下处理步骤:在多学科优化设计工作流开始执行时,将工作流解析为有向无环图;工作流中的循环体被解析为相互关联的循环开始节点和循环结束节点;根据解析得到的有向无环图逐一加载可执行的计算节点,将计算节点的状态转换为可执行状态并放置于节点执行就绪队列中;通过节点执行器对各计算节点利用相同的调用逻辑,从节点执行就绪队列中逐一执行各计算节点;其中,若遇到循环开始节点,则开始循环调度逻辑的执行;在工作流的当前计算节点执行完毕后,将计算节点的输出数据同步保存至数据库的任务实例数据表中;其中,循环体执行完毕后保存执行次数信息;当前计算节点执行完毕时发出节点执行完成事件;节点执行完成事件中包括结束节点的唯一标识信息;根据结束节点的唯一标识信息以及有向无环图,找到下一计算节点继续执行调度处理,直到工作流执行完毕。
在一个实施例中,计算机程序被处理器执行时,还可以实现上述有向无环图工作流引擎循环调度方法各实施例中增加的步骤或者子步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线式动态随机存储器(RambusDRAM,简称RDRAM)以及接口动态随机存储器(DRDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可做出若干变形和改进,都属于本申请保护范围。因此本申请专利的保护范围应以所附权利要求为准。

Claims (8)

1.一种有向无环图工作流引擎循环调度方法,其特征在于,包括步骤:
在多学科优化设计工作流开始执行时,将所述工作流解析为有向无环图;所述工作流中的循环体被解析为相互关联的循环开始节点和循环结束节点;
根据解析得到的所述有向无环图逐一加载可执行的计算节点,将所述计算节点的状态转换为可执行状态并放置于节点执行就绪队列中;
通过节点执行器对各所述计算节点利用相同的调用逻辑,从所述节点执行就绪队列中逐一执行各所述计算节点;其中,若遇到所述循环开始节点,则开始循环调度逻辑的执行;其中,开始循环调度逻辑的执行的过程,包括根据所述循环开始节点中记录的循环类型确定节点执行操作和循环条件判断操作;若所述循环类型为while类型循环,则进行循环条件判断操作;若所述循环条件判断操作为真,则执行所述有向无环图中所述循环开始节点的后续节点;
在所述工作流的当前所述计算节点执行完毕后,将所述计算节点的输出数据同步保存至数据库的任务实例数据表中;其中,循环体执行完毕后保存执行次数信息;
当前所述计算节点执行完毕时发出节点执行完成事件;所述节点执行完成事件中包括结束节点的唯一标识信息;
根据所述结束节点的唯一标识信息以及所述有向无环图,找到下一所述计算节点继续执行调度处理,直到所述工作流执行完毕。
2.根据权利要求1所述的有向无环图工作流引擎循环调度方法,其特征在于,还包括步骤:
在所述工作流引擎的前端界面中,构建待执行的所述工作流并根据节点间相互依赖关系设置所述工作流中节点间数据传递关系和数据传递方向;
将构建完毕后的所述工作流保存至所述工作流引擎的后端流程数据库。
3.根据权利要求1所述的有向无环图工作流引擎循环调度方法,其特征在于,若所述循环类型为while类型循环,则进行循环条件判断操作的步骤后,还包括:
若所述循环条件判断操作为假,则根据所述循环开始节点中记录的循环结束节点唯一标识信息,直接跳转执行所述循环结束节点唯一标识信息对应的所述循环结束节点,完成所述循环体的执行。
4.根据权利要求1所述的有向无环图工作流引擎循环调度方法,其特征在于,开始循环调度逻辑的执行的过程,还包括:
若所述循环类型为do-while类型循环,则结束所述循环开始节点的执行并转入执行所述有向无环图中所述循环开始节点的后续节点;
在所述循环体执行一次完毕后在所述循环结束节点中进行循环条件判断操作;
若所述循环条件判断操作为真,则将所述循环开始节点再次加载至所述节点执行就绪队列中,触发所述循环体的再次执行。
5.根据权利要求4所述的有向无环图工作流引擎循环调度方法,其特征在于,在所述循环体执行一次完毕后在所述循环结束节点中进行循环条件判断操作的步骤后,还包括:
若所述循环条件判断操作为假,则结束所述循环体的循环执行操作并跳转至下一所述计算节点的执行。
6.一种有向无环图工作流引擎循环调度装置,其特征在于,包括:
流解析模块,用于在多学科优化设计工作流开始执行时,将所述工作流解析为有向无环图;所述工作流中的循环体被解析为相互关联的循环开始节点和循环结束节点;
队列加载模块,用于根据解析得到的所述有向无环图逐一加载可执行的计算节点,将所述计算节点的状态转换为可执行状态并放置于节点执行就绪队列中;
节点执行模块,用于通过节点执行器对各所述计算节点利用相同的调用逻辑,从所述节点执行就绪队列中逐一执行各所述计算节点;其中,若遇到所述循环开始节点,则开始循环调度逻辑的执行;其中,开始循环调度逻辑的执行的过程,包括根据所述循环开始节点中记录的循环类型确定节点执行操作和循环条件判断操作;若所述循环类型为while类型循环,则进行循环条件判断操作;若所述循环条件判断操作为真,则执行所述有向无环图中所述循环开始节点的后续节点;
数据同步模块,用于在所述工作流的当前所述计算节点执行完毕后,将所述计算节点的输出数据同步保存至数据库的任务实例数据表中;其中,循环体执行完毕后保存执行次数信息;
事件发出模块,用于当前所述计算节点执行完毕时发出节点执行完成事件;所述节点执行完成事件中包括结束节点的唯一标识信息;
执行调度模块,用于根据所述结束节点的唯一标识信息以及所述有向无环图,找到下一所述计算节点继续执行调度处理,直到所述工作流执行完毕。
7.根据权利要求6所述的有向无环图工作流引擎循环调度装置,其特征在于,还包括:
流构建模块,用于在所述工作流引擎的前端界面中,构建待执行的所述工作流并根据节点间相互依赖关系设置所述工作流中节点间数据传递关系和数据传递方向;
流存储模块,用于将构建完毕后的所述工作流保存至所述工作流引擎的后端流程数据库。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一项所述的有向无环图工作流引擎循环调度方法的步骤。
CN202410094252.9A 2024-01-23 2024-01-23 有向无环图工作流引擎循环调度方法、装置和设备 Active CN117610320B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410094252.9A CN117610320B (zh) 2024-01-23 2024-01-23 有向无环图工作流引擎循环调度方法、装置和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410094252.9A CN117610320B (zh) 2024-01-23 2024-01-23 有向无环图工作流引擎循环调度方法、装置和设备

Publications (2)

Publication Number Publication Date
CN117610320A CN117610320A (zh) 2024-02-27
CN117610320B true CN117610320B (zh) 2024-04-02

Family

ID=89950281

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410094252.9A Active CN117610320B (zh) 2024-01-23 2024-01-23 有向无环图工作流引擎循环调度方法、装置和设备

Country Status (1)

Country Link
CN (1) CN117610320B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785391B (zh) * 2024-02-28 2024-05-10 成都索贝视频云计算有限公司 一种服务操作逻辑结构化装置

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103377035A (zh) * 2012-04-12 2013-10-30 浙江大学 针对粗颗粒度流应用的流水并行化方法
CN103617066A (zh) * 2013-12-16 2014-03-05 中国农业银行股份有限公司 一种工作流引擎及其实现方法
CN106600238A (zh) * 2016-12-26 2017-04-26 上海轻维软件有限公司 基于Activiti流程引擎的网络业务开通实现方法及装置
CN107015856A (zh) * 2017-03-30 2017-08-04 青海大学 云环境下科学工作流中的任务调度方案生成方法及装置
CN111597143A (zh) * 2020-03-24 2020-08-28 中电海康集团有限公司 一种将dag图数据转换为工作流引擎调度文件的方法
CN112114960A (zh) * 2020-08-06 2020-12-22 河南大学 一种适应互联网场景的遥感影像并行集群处理的调度策略
CN112434061A (zh) * 2020-08-25 2021-03-02 上海幻电信息科技有限公司 支持循环依赖的任务调度方法和***
CN113377348A (zh) * 2021-06-10 2021-09-10 平安科技(深圳)有限公司 应用于任务引擎的任务调整方法、相关装置和存储介质
CN114548915A (zh) * 2022-01-26 2022-05-27 北京金和网络股份有限公司 基于流程引擎实现业务跨组织流转的方法及***
CN114595580A (zh) * 2022-03-09 2022-06-07 北京航空航天大学 一种满足大型柔性叶片优化设计的复杂工作流引擎方法
CN114625517A (zh) * 2022-04-13 2022-06-14 北京赛博云睿智能科技有限公司 一种dag图计算分布式大数据工作流任务调度平台
WO2022135079A1 (zh) * 2020-12-25 2022-06-30 北京有竹居网络技术有限公司 任务流引擎的数据处理方法、任务流引擎、设备和介质
WO2023004805A1 (zh) * 2021-07-30 2023-02-02 西门子股份公司 工作流建模实施***、方法及存储介质
CN116069462A (zh) * 2022-12-07 2023-05-05 厦门美亚亿安信息科技有限公司 一种大数据dag任务流调度方法、***及存储介质
CN116302381A (zh) * 2022-09-08 2023-06-23 上海数禾信息科技有限公司 并行拓扑调度组件及方法、任务调度方法和任务处理方法
CN116627396A (zh) * 2023-06-28 2023-08-22 重庆大学 一种多面体模型嵌套循环变换动态求解加速方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713088B2 (en) * 2017-03-23 2020-07-14 Amazon Technologies, Inc. Event-driven scheduling using directed acyclic graphs

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103377035A (zh) * 2012-04-12 2013-10-30 浙江大学 针对粗颗粒度流应用的流水并行化方法
CN103617066A (zh) * 2013-12-16 2014-03-05 中国农业银行股份有限公司 一种工作流引擎及其实现方法
CN106600238A (zh) * 2016-12-26 2017-04-26 上海轻维软件有限公司 基于Activiti流程引擎的网络业务开通实现方法及装置
CN107015856A (zh) * 2017-03-30 2017-08-04 青海大学 云环境下科学工作流中的任务调度方案生成方法及装置
CN111597143A (zh) * 2020-03-24 2020-08-28 中电海康集团有限公司 一种将dag图数据转换为工作流引擎调度文件的方法
CN112114960A (zh) * 2020-08-06 2020-12-22 河南大学 一种适应互联网场景的遥感影像并行集群处理的调度策略
CN112434061A (zh) * 2020-08-25 2021-03-02 上海幻电信息科技有限公司 支持循环依赖的任务调度方法和***
WO2022135079A1 (zh) * 2020-12-25 2022-06-30 北京有竹居网络技术有限公司 任务流引擎的数据处理方法、任务流引擎、设备和介质
CN113377348A (zh) * 2021-06-10 2021-09-10 平安科技(深圳)有限公司 应用于任务引擎的任务调整方法、相关装置和存储介质
WO2023004805A1 (zh) * 2021-07-30 2023-02-02 西门子股份公司 工作流建模实施***、方法及存储介质
CN114548915A (zh) * 2022-01-26 2022-05-27 北京金和网络股份有限公司 基于流程引擎实现业务跨组织流转的方法及***
CN114595580A (zh) * 2022-03-09 2022-06-07 北京航空航天大学 一种满足大型柔性叶片优化设计的复杂工作流引擎方法
CN114625517A (zh) * 2022-04-13 2022-06-14 北京赛博云睿智能科技有限公司 一种dag图计算分布式大数据工作流任务调度平台
CN116302381A (zh) * 2022-09-08 2023-06-23 上海数禾信息科技有限公司 并行拓扑调度组件及方法、任务调度方法和任务处理方法
CN116069462A (zh) * 2022-12-07 2023-05-05 厦门美亚亿安信息科技有限公司 一种大数据dag任务流调度方法、***及存储介质
CN116627396A (zh) * 2023-06-28 2023-08-22 重庆大学 一种多面体模型嵌套循环变换动态求解加速方法

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
Executing cyclic scientific workflows in the cloud;Michel Krämer 等;《Springer》;20210406;1-26 *
一种轻型工作流引擎的设计与实现;杨明顺;韩周鹏;余婷;李言;邵利真;;西安理工大学学报;20130330(01);20-26 *
基于新型膜材料的计算组装工作流调度模型及成本优化研究;柴锐;《万方》;20230927;1-78 *
基于有向循环图的多学科设计优化模型调度方法;宋莉莉;聂冲;王维平;;***仿真学报;20070520(05);1119-1123 *
网格工作流引擎的设计与实现;王红霞;;计算机工程与设计;20110216(02);430-433 *
超算环境科学工作流应用平台的引擎设计和资源调度;李于锋;莫则尧;肖永浩;赵士操;段博文;;计算机应用研究;20180709(06);1723-1726 *
面向多核的并行编程和优化研究;戴晨;陈鹏;杨冬蕾;张为华;;计算机应用与软件;20131215(12);198-203 *

Also Published As

Publication number Publication date
CN117610320A (zh) 2024-02-27

Similar Documents

Publication Publication Date Title
CN117610320B (zh) 有向无环图工作流引擎循环调度方法、装置和设备
US11449364B2 (en) Processing in a multicore processor with different cores having different architectures
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
CN111738434A (zh) 在异构处理单元上执行深度神经网络的方法
CN105956021A (zh) 一种适用于分布式机器学习的自动化任务并行的方法及其***
CN110569121B (zh) 基于应用机器人的多线程并发处理方法和装置
CN103530088A (zh) 分级循环指令
KR102182198B1 (ko) 데이터 처리 그래프 컴파일
CN109901818B (zh) 用于软件架构设计的***和方法
CN114217966A (zh) 基于资源调整的深度学习模型动态批处理调度方法和***
EP4258175A1 (en) Node fusion method for computational graph, and device
CN109445929A (zh) 一种调度任务的方法和***
CN110516000B (zh) 一种支持复杂工作流结构的工作流管理***
US20130232471A1 (en) Method and Apparatus for Assessing Software Parallelization
Cornero et al. Software synthesis for real-time information processing systems
US20100169889A1 (en) Multi-core system
JP5504879B2 (ja) マルチスレッド処理方法及びマルチスレッド処理装置
JP2001092647A (ja) プロセス定義情報からフロー制御プログラムへの変換方法
CN116820468A (zh) 智能合约代码转化与检测方法、装置、设备和介质
CN111782613A (zh) 一种优化模型集成平台运行效率的方法
US20210019178A1 (en) Method and system for scheduling tasks in a computing system
CN106255958A (zh) 存储器高效线程级推测
CN111596923A (zh) Haxe静态链接库构建方法、装置和电子设备
CN117634866B (zh) 工作流调度引擎节点间数据处理方法、装置、设备及介质
CN113721924B (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
GR01 Patent grant
GR01 Patent grant