CN114912897A - 工作流执行方法、工作流编排方法及电子设备 - Google Patents

工作流执行方法、工作流编排方法及电子设备 Download PDF

Info

Publication number
CN114912897A
CN114912897A CN202210543165.8A CN202210543165A CN114912897A CN 114912897 A CN114912897 A CN 114912897A CN 202210543165 A CN202210543165 A CN 202210543165A CN 114912897 A CN114912897 A CN 114912897A
Authority
CN
China
Prior art keywords
workflow
steps
code
user
configuration file
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
Application number
CN202210543165.8A
Other languages
English (en)
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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210543165.8A priority Critical patent/CN114912897A/zh
Publication of CN114912897A publication Critical patent/CN114912897A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Economics (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

工作流执行方法、工作流编排方法及电子设备
技术领域
本申请涉及计算机技术领域,具体涉及一种工作流执行方法、工作流编排方法及电子设备。
背景技术
随着云计算技术向云原生方向的快速发展,应用的开发和部署面临很大挑战,因此,开发和运维(Development Operation,DevOps)思想逐渐火热,持续集成(ContinuousIntegration,CI)/持续部署(Continuous Deployment,CD)也成了研究的热点。持续开发和持续部署一般采用工作流引擎对工作流进行编排和运行。使用工作流不仅可以降低开发风险,提升开发速度,还能够提升对迭代开发的支持。但是随着应用场景越来越多样化,目前的工作流产品难以满足用户的多样化需求。
发明内容
有鉴于此,本申请实施例提供了一种工作流执行方法、工作流编排方法、装置及电子设备,能够扩展工作流模型的功能,提高工作流模型的适应性。
第一方面,本申请的实施例提供了一种工作流执行方法,包括:获取用户编排的工作流对应的代码信息,工作流包括多个步骤,代码信息包括多个步骤对应的代码和多个步骤之间的编排关系,代码用于配置和运行工作流;对代码信息进行编译得到编译结果;基于编译结果执行工作流。
第二方面,本申请的实施例提供了一种工作流编排方法,包括:根据用户选择的工作流的多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件,其中,工作流配置文件用于获取工作流对应的代码信息,代码信息包括多个步骤对应的代码和多个步骤之间的编排关系,代码用于配置和运行工作流;存储工作流配置文件,以便执行工作流。
第三方面,本申请的实施例提供了一种工作流执行装置,包括:获取模块,用于获取用户编排的工作流对应的代码信息,工作流包括多个步骤,代码信息包括多个步骤对应的代码和多个步骤之间的编排关系,代码用于配置和运行工作流;编译模块,用于对代码信息进行编译得到编译结果;执行模块,用于基于编译结果执行工作流。
第四方面,本申请的实施例提供了一种工作流编排装置,包括:生成模块,用于根据用户选择的工作流的多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件,其中,工作流配置文件用于获取工作流对应的代码信息,代码信息包括多个步骤对应的代码和多个步骤之间的编排关系,代码用于配置和运行工作流;存储模块,用于存储工作流配置文件,以便执行工作流。
第五方面,本申请的实施例提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器,其中,处理器用于执行上述第一方面所述的工作流执行方法,或执行第二方面所述的工作流编排方法。
第六方面,本申请的实施例提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序用于执行上述第一方面所述的工作流执行方法,或执行第二方面所述的工作流编排方法。
第七方面,本申请的实施例提供了一种计算机程序产品,所述计算机程序产品中包括指令,所述指令被计算机设备的处理器执行时,使得所述计算机设备能够执行上述实施方式中的方法步骤。
本申请实施例提供了一种工作流执行方法、工作流编排方法、装置及电子设备,通过利用IaC方法来定义工作流中的步骤,可以通过代码(而非手动流程)来管理和置备基础架构,且为用户自定义新的步骤提供了可能,例如,当应用场景比较复杂时,用户可以根据需要自定义需要的步骤,扩展工作流模型的功能,因此利用IaC方法来定义工作流中的步骤,可以提高工作流模型的适应性,以满足不同应用场景的多样化需求。另外,利用IaC方法定义工作流的步骤,可以将面向过程的工作流与面向终态的IaC相结合,使得工作流中编排的每个基于IaC的步骤都是面向终态的,这种面向终态的步骤能够保证工作流执行过程的可靠性和稳定性。
附图说明
图1A所示为本申请一示例性实施例提供的工作流执行系统的系统架构示意图。
图1B所示为本申请一示例性实施例提供的K8s集群的系统架构示意图。
图2所示为本申请一示例性实施例提供的工作流编排方法的流程示意图。
图3所示为本申请一示例性实施例提供的工作流模型的结构示意图。
图4所示为本申请另一示例性实施例提供的工作流模型的结构示意图。
图5所示为本申请另一示例性实施例提供的工作流编排方法的流程示意图。
图6所示为本申请另一示例性实施例提供的工作流编排方法的流程示意图。
图7所示为本申请一示例性实施例提供的工作流执行方法的流程示意图。
图8所示为本申请另一示例性实施例提供的工作流执行方法的流程示意图。
图9所示为本申请另一示例性实施例提供的工作流执行方法的流程示意图。
图10所示为本申请一示例性实施例提供的工作流编排装置的结构示意图。
图11所示为本申请一示例性实施例提供的工作流执行装置的结构示意图。
图12所示为本申请一示例性实施例提供的用于执行工作流编排方法或工作流执行方法的电子设备的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
示例性系统
图1A所示为本申请一示例性实施例提供的工作流执行系统100的系统架构示意图,其示出了一种生成工作流文件以及根据工作流文件执行工作流的应用场景。工作流执行系统100可以包括第一计算设备110和第二计算设备120。
第一计算设备110与第二计算设备120通信连接。第一计算设备110可以是终端设备,如手机、平板、笔记本等。用户可以在第一计算设备110的用户界面上选择多个步骤并对多个步骤按照一定顺序进行编排以构成工作流,第一计算设备110根据多个步骤确定多个步骤中每个步骤对应的代码的类型信息,进而根据用户设定的多个步骤之间的编排关系以及多个步骤对应的代码的类型信息生成工作流对应的工作流文件,该工作流文件可以是工作流配置文件。代码用于配置和运行工作流,例如代码可以是利用基础设施即代码(Infrastructure as Code,IaC)方法定义的。可选地,在其他实施例中,工作流文件也可以是代码信息。
第一计算设备110可以将工作流文件存储到第二计算设备120上。例如,第一计算设备110可以将工作流文件发送给第二计算设备120,以便第二计算设备120根据工作流文件进行部署(Deployment)工作,即执行工作流,例如第二计算设备120可以基于工作流文件部署对应的资源。第二计算设备120可以是服务器,例如K8s集群或其他类型的服务器。可选地,工作流文件的生成以及执行可以在第一计算设备110或第二计算设备120上完成。
图1B所示为本申请一示例性实施例提供的Kubernetes(简称K8s)集群2的系统架构示意图。K8s集群2可以包括主节点(master node)21、多个节点22和数据库23。数据库23可以是Etcd数据库或其他类型的数据库。主节点21用于运行集群的管理控制模块。节点22也称工作节点(worker node),用于运行容器。Etcd数据库23用于存储集群的状态信息。
主节点21包括调度器211、API服务器(API Server)212和控制器管理器(Controller Manager)213。调度器211用于为新建立的Pod选择节点,负责K8s集群的资源调度。API服务器212作为K8s系统的入口,以API接口方式向外部客户端和内部组件提供服务调用。控制器管理器213,可以是一系列控制器的集合,每个控制器可以各自的方式负责某种编排功能。这里的控制器可以认为是默认控制器。控制器可以创建、更新或删除Pod(或其他的API对象、资源)。不同的控制器可以设计不同的应用逻辑,达到不同的编排效果。可选地,Etcd数据库23可以包含在主节点21内。
进一步地,基于本申请实施例,主节点21还包括自定义控制器214,自定义控制器可以是用户自定义的。
节点22包括多个Pod 221。每个Pod 221中设置有至少一个容器222。
K8s集群2可作为第二计算设备120实现工作流的执行过程。例如,K8s集群2中的自定义控制器214可以通过API服务器212从Etcd数据库23中获取工作流文件(如Yaml文件存入Etcd数据库后经过格式转换后的文件),基于工作流文件获取工作流对应的代码信息,并对代码信息进行编译得到编译结果,进而根据编译结果运行工作流中的各个步骤。
具体地,当工作流中包括内容为部署应用的步骤时,自定义控制器214可作为引擎,根据该步骤对应的编译结果将应用部署到K8s集群中。进一步地,控制器管理器213中的默认控制器可以创建一个Pod。
Etcd数据库23中存储的工作流文件可以是API服务器212从外部客户端获取并存入Etcd数据库23的。
可选地,用户可以直接在K8s集群2编排工作流,即,K8s集群2基于用户在K8s集群2的用户界面上选择的多个步骤对应的代码以及多个步骤之间的编排关系生成工作流文件。例如,用户可以在K8s集群2的用户界面上选择多个步骤并对多个步骤按照一定顺序进行编排以构成工作流,K8s集群2根据多个步骤确定多个步骤中每个步骤对应的代码的类型信息,进而根据用户设定的多个步骤之间的编排关系以及多个步骤对应的代码的类型信息生成工作流对应的工作流配置文件;或者,用户可以直接在K8s集群2的用户界面上选择多个步骤对应的代码并将多个步骤对应的代码按照一定顺序进行编排以获取工作流对应的代码信息。
需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施例并不限于此。相反,本申请的实施例可以应用于可能适用的任何场景。
示例性方法
图2所示为本申请一示例性实施例提供的工作流编排方法的流程示意图。图2的方法可由计算设备(例如,图1A中的第二计算设备)执行。如图2所示,该工作流编排方法包括如下内容。
210:根据用户选择的工作流的多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件,其中,工作流配置文件用于获取工作流对应的代码信息,代码信息包括多个步骤对应的代码和多个步骤之间的编排关系,代码用于配置和运行工作流。
本实施例中的代码可以是利用基础设施即代码方法编写的,或者其他方法编写的,只要编写的代码可以用于配置和运行工作流即可。
具体地,工作流中的步骤可以是利用基础设施即代码IaC方法定义的。计算设备可以根据用户选择的多个步骤构成工作流,各个步骤之间具有先后顺序(编排关系)。计算设备可以根据用户选择的步骤获取该步骤对应的代码的类型信息,并根据工作流中多个步骤之间的编排关系以及多个步骤对应的代码的类型信息生成工作流配置文件。对应地,基于工作流配置文件获取的代码信息可以包括多个步骤之间的编排关系以及各个步骤对应的代码。应理解,每个步骤对应的代码可以看作一个代码包,多个步骤之间的编排关系体现为各个代码包之间的编排关系。
在一实施例中,计算设备的用户界面上可以呈现多个步骤选项,用户可以选择需要的步骤,并对选择的各个步骤按照期望的执行顺序进行连接,从而构成工作流。例如,可以通过有向无环图(Direct Acyclic Graph,DAG)的方式来编排不同的步骤以构成工作流。步骤与代码之间有对应关系,该对应关系可以是预先设置好的,例如是工作流模型(工作流产品)内置好的,或者是用户根据实际需要自定义的。在执行工作流时,基于工作流配置文件可以获取工作流对应的代码信息。
可选地,计算设备的用户界面上可以直接呈现各个步骤对应的代码,用户可以选择需要的步骤对应的代码,并对这些代码进行编排以得到工作流对应的代码信息。
220:存储工作流配置文件,以便执行工作流。
在一实施例中,计算设备可以将工作流配置文件存储到该计算设备中,或存储到其他计算设备中,如服务器或K8s集群中。例如,在K8s的控制器模式下,工作流模型可以抽象为工作流自定义资源定义(Workflow Custom Resource Definition,Workflow CRD),任一工作流可以抽象为自定义资源(Custom Resource,CR)。进一步地,在一些情况下,根据工作流配置文件中各个步骤的内容可以部署对应的资源,例如,部署应用或服务。
例如,工作流配置文件可以是Yaml文件或其他类型/格式的配置文件。在用户通过用户界面编排工作流的情况下,可以通过转换器将用户选择的多个步骤构成的工作流转换成工作流配置文件。工作流配置文件可以存储在计算设备中,以便于后续从计算设备中获取于工作流配置文件并基于工作流配置文件执行该工作流。
本申请实施例提供了一种工作流编排方法,通过利用IaC方法来定义工作流中的步骤,可以通过代码(而非手动流程)来管理和置备基础架构,且为用户自定义新的步骤提供了可能,例如,当应用场景比较复杂时,用户可以根据需要自定义需要的步骤,扩展工作流模型的功能,因此利用IaC方法来定义工作流中的步骤,可以提高工作流模型的适应性,以满足不同应用场景的多样化需求。另外,利用IaC方法定义工作流的步骤,可以将面向过程的工作流与面向终态的IaC相结合,使得工作流中编排的每个基于IaC的步骤都是面向终态的,这种面向终态的步骤能够保证工作流执行过程的可靠性和稳定性。进一步地,通过代码来表示对于运行结果的期望,可以防止由于配置飘逸或缺少依赖而导致的运行问题,可以快速且可靠的方式来完成运行,从而实现用户期望和实际运行结果的一致性。
根据本申请一实施例,多个步骤包括第一工作流步骤,该工作流编排方法还包括:获取用户自定义的第一工作流步骤对应的代码,代码信息包括第一工作流步骤对应的代码。
具体地,多个步骤可以全部是工作流模型初始构建时内置好的;或者,多个步骤可以包括第一工作流步骤以及第二工作流步骤,其中,第一工作流步骤是用户根据实际使用需要自定义的,第二工作流步骤是工作流模型初始构建时内置好的;或者,多个步骤可以全部是用户根据实际使用需要自定义的。
用户可以利用IaC方法对需要新建的步骤(如第一工作流步骤)进行自定义。例如,用户可以在计算设备的用户界面上通过编辑器编写第一工作流步骤对应的代码,如采用CUE语言、Terraform配置语言(Hashicorp Configuration Language,HCL)、Ansible配置语言或其他模板语言编写第一工作流步骤。
在第一工作流步骤定义好以后,当用户选择的多个步骤中包括第一工作流步骤时,计算设备可以获取第一工作流步骤对应的代码,这样包含多个步骤的工作流对应的代码信息包括第一工作流步骤对应的代码。
本实施例提供的工作流编排方法,利用IaC方法自定义用户实际需要的步骤,可以提高工作流模型的可扩展性,进而提高用户体验。进一步地,通过利用IaC方法自定义用户实际需要的步骤来扩展模型的功能,相较于通过构建新的镜像的方式来扩展模型的功能,无需额外的资源消耗,降低开发成本以及开发难度。此外,对于需要更新的步骤,可以通过更改该步骤对应的代码实现该步骤的更新,或者通过复制已有步骤对应的代码,并对复制的代码进行修改,可以创建新的步骤。因此,本申请实施例提供的工作流编排方法具有高效性。
根据本申请一实施例,该工作流编排方法还包括:基于用户自定义的第一工作流步骤对应的代码生成步骤配置文件,步骤配置文件与第一工作流步骤对应的代码的类型信息对应。
计算设备可以根据用户编写的代码生成步骤配置文件。具体地,针对第一工作流步骤编写的代码可以放入该步骤对应的步骤配置文件中,例如通过渲染的方式生成步骤配置文件。计算设备可以将步骤配置文件存储到该计算设备中,或存储到其他计算设备中,如服务器或K8s集群中。例如,工作流步骤可以抽象为CRD,简称为定义(Definition),任一工作流步骤可以抽象为CR。每个工作流步骤可以通过引用的方式对应到具体的Definition,Definition里面声明步骤对应的具体的代码。步骤配置文件可以是Yaml文件或其他类型/格式的配置文件。
根据本申请的实施例,每个步骤可对应一个类型信息,即步骤配置文件与一个类型信息对应,计算设备可以基于多个步骤对应的类型信息以及多个步骤之间的编排关系生成工作流配置文件,如此可以精简工作流配置文件。这样在执行工作流时,可以基于工作流配置文件中的类型信息调用与该类型信息对应的步骤配置文件中的代码,并根据工作流配置文件中与多个步骤对应的多个类型信息的先后顺序对各个步骤对应的代码进行排序,如此可以获取工作流对应的代码信息。
本实施例提供的工作流编排方法,利用IaC方法自定义用户实际需要的步骤,可以创建包含基础架构规范的配置文件,从而便于编辑和分发配置。此外,利用IaC方法自定义需要的步骤,可以确保每次配置的环境相同,且通过将IaC与工作流模型相结合,可以借助于不同IaC工具的能力(包括但不限于CUE语言、Terraform配置语言等),扩展工作流本身,从而提高整个生态的丰富性和稳定性。
根据本申请一实施例,上述工作流执行方法可以采用工作流模型来实现,工作流模型包括用户层、代码编写层和引擎层。基于用户层和代码编写层可实现上述工作流编排方法。引擎层用于对代码信息进行编译得到编译结果,并基于编译结果执行工作流,其中,获取用户自定义的第一工作流步骤对应的代码,包括:通过代码编写层获取用户编写的第一工作流步骤对应的代码,其中,基于用户自定义的第一工作流步骤对应的代码生成步骤配置文件,包括:基于用户在代码编写层自定义的第一工作流步骤对应的代码生成步骤配置文件,其中,根据用户选择的工作流的多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件,包括:根据用户在用户层选择的工作流的多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件。
具体地,一般的工作流模型包括用户层和引擎层两层结构,这种工作流模型的功能有限,即包括的步骤类型有限,难以满足多样化的应用场景需求。本实施例提供的工作流编排方法,通过将工作流模型设置成三层结构,可以在为初阶用户提供内置功能的同时,为高阶用户提供扩展功能。初阶用户可以无感知工作流模型的变化,省去学习成本和适应阶段,提高初阶用户体验,而高阶用户可以通过编写代码来自定义步骤,实现高阶用户所需的扩展功能,进而提高了高阶用户体验。
图3所示为本申请一示例性实施例提供的工作流模型的结构示意图。
本实施例的工作流模型包括三层,即用户层、代码编写层(也可称为IaC层)和引擎层,如图3所示。用户层可以用于向用户提供编排工作流的可视化界面(如计算设备的用户界面),例如,用户可以在用户层拖拽一些步骤(步骤1、步骤2、步骤3)作为步骤节点,并按照期望的执行顺序连接各个步骤节点以形成工作流。用户可以在用户层编排一个或多个工作流,如图3所示,用户编排了两个工作流,即工作流1和工作流2。
代码编写层可以用于向用户提供编写代码的界面,例如,该界面可以是编辑器的输入界面。用户可以利用IaC方法在代码编写层自定义需要的步骤。此外,代码编写层还可以内置一些预设的步骤对应的代码,这些预设的步骤对应的代码可以是原始的工作流模型中内置好的,且这些预设的步骤也可以是利用IaC方法定义的。如图3所示,代码编写层中包括IaC方法定义的多个步骤,每一个步骤对应一个类型信息,即针对一个步骤而言,类型信息和代码之间也有对应关系。例如,类型A对应的代码,代表步骤为构建镜像;类型B对应的代码,代表步骤为等待人工审核;类型C对应的代码,代表步骤为重启虚拟机;类型D对应的代码,代表其他可能的步骤。本实施例中类型A/B/C/D可理解为代码的类型信息。类型信息可以是用户设置的,也可以是计算设备按照一定规则设置的。代码编写层中与步骤对应的代码可以是工作流模型中内置的,或用户编写的。
当用户在用户层编排工作流时,计算设备可通过获取用户选择的多个步骤分别对应的类型信息,进而根据工作流中多个步骤之间的编排关系以及每个步骤对应的代码的类型信息生成工作流配置文件。
引擎层可以用于执行工作流,如编译代码以及运行代码,如图3所示。
本实施例中的工作流模型,可以为初阶用户提供常用的内置的工作流步骤(如构建镜像、等待人工审核、部署资源等)。用户侧的视图可以与其他工作流模型一致,这种用户侧的视图一致性可以让初阶用户像使用其他工作流模型一样使用本实施例提供的工作流模型,没有多余的学习成本。
本实施例中的工作流模型,可以为高阶用户提供自定义步骤的功能,即通过利用IaC方法编写代码来自定义步骤,使得高阶用户可以轻松地完成自己的定制化需求,节省开发成本。
根据本申请一实施例,工作流编排方法包括:根据用户选择的工作流的多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码生成代码信息,代码信息包括多个步骤对应的代码和多个步骤之间的编排关系,代码用于配置和运行工作流。
具体地,计算设备的用户界面上可以直接呈现各个步骤对应的代码,用户可以选择需要的步骤对应的代码,并对这些代码进行编排以得到工作流对应的代码信息。应理解,每个步骤对应的代码可以看作一个代码包,工作流对应的代码信息可以看作一个代码块,将多个步骤对应的代码包进行组合可以得到工作流对应的代码块。或者,计算设备的用户界面上可以直接呈现工作流(包含多个步骤)对应的代码信息,即呈现工作流对应的代码块,用户可以直接选择需要的工作流对应的代码块。
本实施例提供的工作流编排方法,通过直接利用IaC方法来定义工作流中的步骤,能够扩展工作流模型的功能,提高工作流执行过程的稳定性。
根据本申请一实施例,上述工作流执行方法可以采用工作流模型来实现,工作流模型包括:代码编写层和引擎层。基于代码编写层可实现上述工作流编排方法。引擎层用于对代码信息进行编译得到编译结果,并基于编译结果执行工作流,其中,该工作流编排方法还包括:通过代码编写层获取用户自定义的第一工作流步骤对应的代码。
图4所示为本申请另一示例性实施例提供的工作流模型的结构示意图。
本实施例的工作流模型包括两层,即代码编写层(也可称为IaC层)和引擎层,如图4所示。代码编写层可以用于向用户提供通过直接编写代码来编排工作流的界面,用户可在该界面编写代码,该界面可以是编辑器的输入界面。用户可以利用IaC方法在代码编写层自定义需要的步骤。此外,代码编写层还可以内置一些预设的步骤对应的代码,这些预设的步骤对应的代码可以是原始的工作流模型中内置好的,且这些预设的步骤也可以是利用IaC方法定义的。代码编写层中包括利用IaC方法定义的多个步骤,每个步骤对应的代码可以看作一个代码包,代码编写层中与步骤对应的代码包可以是工作流模型中内置的,或用户编写的。当用户在代码编写层编排工作流时,计算设备可通过代码编写层获取用户选择的多个步骤分别对应的代码包,并按照用户对各个代码包的排列顺序获得工作流对应的代码信息。该代码信息可看作是代码块。
如图4所示,类型A对应的代码包,代表步骤为构建镜像;类型B对应的代码包,代表步骤为等待人工审核;类型C对应的代码包,代表步骤为重启虚拟机;类型D对应的代码包,代表其他可能的步骤。通过对代码包进行复用和编排,可以得到工作流1和工作流2对应的代码块。
由于IaC具有包管理能力,通过在代码编写层编写各个步骤对应的代码包,可便于直接在代码编写层做组件(如代码包)的复用和编排,以获得工作流对应的代码块。
可选地,作为另一实施例,用户可以直接在代码编写层利用IaC方法编写一个完整的工作流对应的代码,该代码可以看作是该工作流对应的代码块,该代码块包括该工作流对应的代码信息。
引擎层可以用于执行工作流,如编译代码以及运行代码。
本实施例中的工作流模型,省略用户层,通过IaC本身能力实现工作流的编排,且使用IaC的包管理能力可以进行组件的复用,提升代码的利用率,同时提高编写代码和编排工作流的效率。
另外,本实施例提供的工作流编排方法,充分利用IaC的能力,可以简化工作流模型,且扩展工作流模型的功能,提高用户体验。
根据本申请一实施例,根据用户选择的工作流的多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件,包括:根据多个步骤之间的编排关系、多个步骤中每个步骤对应的代码的类型信息以及用户针对多个步骤设置的参数生成工作流配置文件。
具体地,IaC本身是一种配置语言,可以提供参数设置功能,即每个步骤里面需要什么参数,是可以配置的。例如,在代码编写层编写某个步骤对应的代码时,该代码中可以设置参数名,参数名对应的具体参数可以由用户进行设置。例如,用户需要进行两个操作,第一个操作是构建镜像,第二个操作是把镜像推送到镜像仓库。这里需要用户设置的参数名有两个,第一个是镜像名,第二个是镜像仓库名。本实施例通过提供参数设置功能,可以实现工作流的参数化,如此可以进一步提高工作流模型的可扩展性,以满足不同用户的使用需求。
在一实施例中,工作流模型包括用户层、代码编写层和引擎层,该工作流模型的具体结构和功能可参见上述实施例中的描述,为避免重复,此处不再赘述。用户在用户层选择某一步骤后,用户层可以向用户提供参数设置功能。例如,某一步骤对应的代码中的参数名可以暴露到用户层的用户界面,让用户可以通过用户界面直接配置该参数名对应的参数的内容。用户可以在用户界面上填写每个参数名对应的参数。
用户在代码编写层针对某一步骤编写的代码中可以包括参数名,基于该代码可以生成步骤配置文件,该步骤配置文件可以不包括具体的参数。当用户在用户层选择该步骤以形成工作流对应的工作流配置文件时,可以通过用户层向用户暴露该参数名,以便用户填入参数。如此,计算设备可以根据多个步骤之间的编排关系、多个步骤中每个步骤对应的代码的类型信息以及用户针对多个步骤设置的参数生成工作流配置文件(工作流文件)。例如,用户编排的工作流中可以有两个步骤的类型信息一样但具体参数不同,这样这两个步骤的具体内容就是不同的。通过定义一类步骤的类型信息,并在用户选择该类步骤时提供参数设置功能,可以实现步骤对应代码的重复利用,同时可以满足用户的多样化需求。
在另一实施例中,工作流模型包括代码编写层和引擎层,该工作流模型的具体结构和功能可参见上述实施例中的描述,为避免重复,此处不再赘述。用户在代码编写层选择某一步骤对应的代码包放入工作流对应的代码块时,可以直接设置代码中各个参数名对应的参数。计算设备可以根据多个步骤对应的代码、用户针对多个步骤设置的参数以及多个步骤之间的编排关系生成工作流对应的代码信息(工作流文件)。
在其他实施例中,用户可以在编写步骤对应的代码时便设置好代码中参数名对应的参数。基于设置好参数的代码生成工作流文件。
本实施例提供的工作流编排方法,通过提供参数设置功能,可以实现工作流的参数化,如此可以进一步提高工作流模型的可扩展性,实现工作流的差异化配置,以满足不同用户的使用需求,同时可以减少新代码的产生。
根据本申请一实施例,该工作流编排方法还包括:在用户界面上显示多个步骤中每个步骤对应的代码中的参数名的输入框;接收用户通过输入框输入的参数。
当用户在用户层或代码编写层选择某一步骤时,计算设备响应于用户的选择操作(如点击等),可以在用户界面上显示该步骤对应的代码中的参数名的输入框,以便用户根据需要设置参数。计算设备针对用户的选择操作的响应,可以通过预先设置的代码来实现。本实施例提供的工作流编排方法,通过用户界面显示参数名的输入框,可以直观地向用户呈现需要补充的参数,提高用户体验。
应理解的是,上述用户界面可以是用户本地用户终端的用户界面,也可以是计算设备的用户界面。
根据本申请一实施例,工作流编排方法基于控制器模式来实现,这种情况下,工作流引擎为控制器,其中,存储工作流配置文件,包括:将工作流配置文件存储到集群的Etcd数据库中。
具体地,可以将工作流配置文件以K8s的工作流自定义资源定义(WorkflowCustom Resource Definition,Workflow CRD)的形式存储到Etcd数据库。工作流引擎(引擎层)可以不断监听资源(如步骤配置文件、工作流配置文件、代码信息)的变化,实时更新资源。Etcd数据库中的工作流配置文件以及步骤配置文件的格式可以不是Yaml文件格式,可以是其他格式的数据。
控制器模式下的自定义控制器管理的资源是Workflow CRD,即自定义控制器可以创建、更新或删除Workflow CRD。自定义控制器可作为工作流模型的引擎,基于Etcd数据库中各种资源对象的信息(如步骤配置文件、工作流配置文件、代码信息),实现工作流的编排和执行。自定义控制器可以与CRD配套使用。当然,也可以利用K8s默认控制器管理WorkflowCRD,这种情况下需要修改默认控制器(修改K8s的源代码),需要侵入K8s的默认组件并保证K8s的原有逻辑不变。而通过构建自定义控制器来管理Workflow CRD,可以避免侵入K8s的默认组件,降低与CRD配套的控制器的构建难度。
根据本申请一实施例,工作流编排方法基于模型-视图-控制器(Model-View-Controller,MVC)模式来实现,工作流引擎为控制器,其中,存储工作流配置文件,包括:将工作流配置文件存储到模型(Model)数据库中。
具体地,工作流配置文件和步骤配置文件可以以定义的形式直接存在Model数据库,需要用时可根据请求调用。控制器实时监听下发工作流的变化,对应执行工作流中接下来的步骤,根据步骤的类型来源,可以去数据库中获取对应的步骤定义(步骤配置文件),进而基于步骤定义获取代码信息并对代码信息做编译。
本申请实施例提供的工作流编排方法可以采用不同的数据存储方式,适应于多种模式下的工作流编排与执行。
图5所示为本申请另一示例性实施例提供的工作流编排方法的流程示意图。图5实施例是图2实施例的例子,为避免重复,相同之处不再赘述。图5的方法可基于图3的工作流模型来实现,并由计算设备执行。如图5所示,该工作流编排方法包括如下内容。
510:通过代码编写层获取用户编写的第一工作流步骤对应的代码。
代码是利用基础设施即代码方法编写的。
520:基于用户在代码编写层自定义的第一工作流步骤对应的代码生成步骤配置文件,并存储步骤配置文件。
530:根据用户在用户层选择的多个步骤,在用户界面上显示多个步骤对应的代码中的参数名的输入框,并接收用户通过输入框输入的参数。
多个步骤包括第一工作流步骤。多个步骤中的每个步骤可以是用户自定义的,或者多个步骤中的部分步骤是工作流模型内置的。
具体地,当用户选择一个步骤时,可以在用户界面上显示该步骤对应的代码中的参数名的输入框。根据用户依次选择的多个步骤,可以在用户界面上依次显示多个步骤对应的代码中的参数名的输入框。
540:根据用户在用户层选择的工作流的多个步骤之间的编排关系、多个步骤中每个步骤对应的代码的类型信息以及用户针对多个步骤设置的参数生成工作流配置文件。
每个步骤可对应一个类型信息,即步骤配置文件与一个类型信息对应。类型信息可以看作是对该步骤对应的代码的定义或指代。
工作流配置文件用于获取工作流对应的代码信息,代码信息可以包括多个步骤对应的代码、具体参数和多个步骤之间的编排关系。
550:存储工作流配置文件,以便执行工作流。
在一实施例中,基于用户设置的各个步骤对应的代码中的参数生成并存储工作流配置文件后,引擎层可以直接基于工作流配置文件获取工作流对应的代码信息,并对代码信息进行编译和运行,以执行工作流。
进一步地,步骤510-520与步骤530-550可以是分两个阶段执行的,例如,用户可以先通过计算设备执行步骤510-520来编写需要的步骤对应的代码,以生成并存储步骤配置文件。在用户需要设置工作流时(例如在间隔一段时间后),可以由计算设备执行步骤530-550。
在另一实施例中,基于用户设置的各个步骤对应的代码中的参数生成工作流配置文件后,该工作流配置文件可以作为静态的文件进行存储,当用户间隔一定时间后,可以通过在用户层选择(如点击操作等)该工作流,以触发引擎层执行该工作流,即基于该工作流配置文件获取工作流对应的代码信息,并对代码信息进行编译和运行,以执行工作流。
图6所示为本申请另一示例性实施例提供的工作流编排方法的流程示意图。图6实施例是图2实施例的例子,为避免重复,相同之处不再赘述。图6的方法可基于图4的工作流模型来实现,并由计算设备执行。如图6所示,该工作流编排方法包括如下内容。
610:通过代码编写层获取用户编写的第一工作流步骤对应的代码。
代码是利用基础设施即代码方法编写的。第一工作流步骤对应的代码可以看作第一工作流对应的代码包。
620:通过代码编写层获取用户选择的多个步骤分别对应的代码,获取用户针对多个步骤对应的代码中各个参数名设置的参数,并根据多个步骤对应的代码、用户针对多个步骤设置的参数以及多个步骤之间的编排关系生成工作流对应的代码信息。
工作流对应的代码信息可以看作代码块。多个步骤包括第一工作流步骤。多个步骤中的每个步骤可以是用户自定义的,或者多个步骤中的部分步骤是工作流模型内置的。
例如,通过代码编写层获取用户选择的多个步骤分别对应的代码包,并按照用户对各个代码包的排列顺序获得工作流对应的代码块。在将多个代码包按照顺序排列得到代码块后,用户可以通过计算设备对代码块中各个代码包里的参数名进行参数设置。进行参数设置后的代码块包括工作流对应的代码信息。
或者,在用户选择某个步骤对应的代码包时即可通过计算设备对该代码包中的参数名进行参数设置,根据用户选择的多个设置好参数的代码包以及多个步骤之间的编排关系可生成工作流对应的代码块。
630:存储代码信息,以便执行工作流。
在一实施例中,生成并存储工作流对应的代码信息后,引擎层可以直接对代码信息进行编译和运行,以执行工作流。
进一步地,步骤610与步骤620-630可以是分两个阶段执行的,例如,用户可以先通过计算设备执行步骤610来编写需要的步骤对应的代码,并保存该代码。在用户需要设置工作流时(例如在间隔一段时间后),可以由计算设备执行步骤620-630。
在另一实施例中,基于用户设置的各个步骤对应的代码中的参数生成代码信息后,该代码信息可以作为静态的文件进行存储,当用户间隔一定时间后,可以通过在代码编写层选择(如点击操作等)该工作流,以触发引擎层执行该工作流,即对代码信息进行编译和运行,以执行工作流。
图7所示为本申请一示例性实施例提供的工作流执行方法的流程示意图。图7的方法可由计算设备执行。如图7所示,该工作流执行方法包括如下内容。
710:获取用户编排的工作流对应的代码信息,工作流包括多个步骤,代码信息包括多个步骤对应的代码和多个步骤之间的编排关系,代码用于配置和运行工作流。
具体地,当用户选择某一编排好的工作流时,计算设备可以获取该工作流对应的工作流文件,基于工作流文件获取工作流对应的代码信息。例如,可以基于用户在用户界面的点击操作确定用户选择的工作流,进而获取该工作流对应的工作流文件。
可选地,在基于用户选择的多个步骤对应的代码生成工作流文件后,计算设备可以直接基于工作流文件获取代码信息,以执行工作流。
工作流文件的生成过程可以参见上述工作流编排方法的实施例中的描述,为避免重复,此处不再赘述。
720:对代码信息进行编译得到编译结果。
计算设备对代码信息进行编译得到编码结果,编码结果的语言可以是计算设备可识别和执行的语言。在控制器模式下,编译可以是将代码信息转换成控制器模式下计算设备可以识别或执行的语言,例如将CUE语言的代码转换成Go语言的代码。
730:基于编译结果执行工作流。
计算设备可以根据编译结果执行工作流。由于代码信息包括多个步骤之间的编排关系,因此通过对代码信息进行编译获得的编译结果也包含多个步骤之间的编排关系。计算设备根据编译结果可以按照顺序执行工作流中的各个步骤。
在执行工作流时,工作流中的每个步骤的运行都是用同样的代码提供的,即都可以以相同的方式部署,这样使得安全标准可以在同一组织机构(如公司或部门)内一致地部署,且使得每次部署都可以溯源,从而可以保证执行的来源是可信任的。
本申请实施例提供了一种工作流执行方法,通过利用IaC方法来定义工作流中的步骤,可以通过代码(而非手动流程)来管理和置备基础架构,且为用户自定义新的步骤提供了可能,例如,当应用场景比较复杂时,用户可以根据需要自定义需要的步骤,扩展工作流模型的功能,因此利用IaC方法来定义工作流中的步骤,可以提高工作流模型的适应性,以满足不同应用场景的多样化需求。另外,利用IaC方法定义工作流的步骤,可以将面向过程的工作流与面向终态的IaC相结合,使得工作流中编排的每个基于IaC的步骤都是面向终态的,这种面向终态的步骤能够保证工作流执行过程的可靠性和稳定性。
根据本申请一实施例,多个步骤包括由用户利用代码自定义的步骤。
具体地,多个步骤可以全部是工作流模型初始构建时内置好的;或多个步骤全部是用户根据实际使用需要自定义的;或多个步骤中的部分步骤是工作流模型初始构建时内置好的,另外一部分步骤是用户根据实际使用需要自定义的。
用户可以利用IaC方法对需要新建的步骤进行自定义。对需要新建的步骤进行自定义的相关内容可以参见上述工作流编排方法的实施例中的描述,为避免重复,此处不再赘述。
本实施例提供的工作流执行方法,利用IaC方法自定义用户实际需要的步骤,可以提高工作流模型的可扩展性,进而提高用户体验。
根据本申请一实施例,获取用户编排的工作流对应的代码信息,包括:获取工作流对应的工作流配置文件,工作流配置文件包括代码信息中每个步骤对应的代码的类型信息以及多个步骤之间的编排关系;根据工作流配置文件获取代码信息。
工作流文件可以是工作流配置文件,基于工作流配置文件可以获取工作流对应的代码信息。
具体地,每个步骤可对应一个步骤配置文件,该步骤配置文件可包括该步骤对应的代码。每个步骤可对应一个类型信息,即步骤配置文件与一个类型信息对应。这样在执行工作流时,可以基于工作流配置文件中的类型信息调用与该类型信息对应的步骤配置文件中的代码,并根据工作流配置文件中与多个步骤对应的多个类型信息的先后顺序对各个步骤对应的代码进行排序,如此可以获取工作流对应的代码信息。例如,根据工作流配置文件中的类型信息调用与该类型信息对应的步骤配置文件中的代码,相当于根据步骤配置文件部署对应的资源,例如,部署应用或服务。
可选地,工作流配置文件包括代码信息中每个步骤对应的代码以及多个步骤之间的编排关系。这样在执行工作流时,可以从工作流配置文件中获取多个步骤对应的代码,且多个步骤对应的代码之间有先后顺序,如此可以直接基于工作流配置文件获取该工作流对应的代码信息。
步骤配置文件、工作流配置文件的具体生成过程可以参见上述工作流编排方法的实施例中的描述,为避免重复,此处不再赘述。
本实施例提供的工作流执行方法,利用IaC方法自定义用户实际需要的步骤,可以创建包含基础架构规范的配置文件,从而便于编辑和分发配置。此外,利用IaC方法自定义需要的步骤,可以确保每次配置的环境相同,且通过将IaC与工作流模型相结合,可以借助于不同IaC工具的能力(包括但不限于CUE语言、Terraform配置语言等),扩展工作流本身,从而提高整个生态的丰富性和稳定性。
根据本申请一实施例,根据工作流配置文件获取代码信息,包括:根据工作流配置文件确定多个步骤对应的代码的类型信息以及多个步骤之间的编排关系;根据多个步骤对应的代码的类型信息获取多个步骤对应的步骤配置文件;从多个步骤对应的步骤配置文件中获取多个步骤对应的代码;基于多个步骤对应的代码以及多个步骤之间的编排关系确定代码信息。
该工作流执行方法可以基于工作流模型来实现,该工作流模型可包括用户层、代码编写层和引擎层。引擎层用于对代码信息进行编译得到编译结果,并基于编译结果执行工作流。代码编写层可以用于向用户提供编写代码的界面。计算设备可以根据用户在代码编写层编写的代码生成步骤配置文件。计算设备可以将步骤配置文件存储到该计算设备中,或存储到其他计算设备中,如服务器或K8s集群中。
在一实施例中,在生成工作流配置文件后,引擎层可以直接基于工作流配置文件确定多个步骤对应的步骤配置文件,并从步骤配置文件中获取多个步骤对应的代码,以及基于多个步骤对应的代码以及多个步骤之间的编排关系确定代码信息。引擎层可基于代码信息执行工作流。
在另一实施例中,在生成工作流配置文件后,可以通过用户在用户层针对某一工作流的选择(如点击操作等),触发引擎层执行该工作流,即基于该工作流配置文件获取工作流对应的代码信息,并基于代码信息执行工作流。
引擎层可以根据用户的选择完成对工作流的整体编排以及对代码的编译和运行。这样可以帮助用户省去对代码管理的负担,且可以提高安全性,确保每次执行的代码产生的一些中间数据或使用的密钥信息不会外泄。
本实施例提供的工作流执行方法,通过将工作流模型设置成三层结构,可以在为初阶用户提供内置功能的同时,为高阶用户提供扩展功能。初阶用户可以无感知工作流模型的变化,省去学习成本和适应阶段,提高初阶用户体验,而高阶用户可以通过编写代码来自定义步骤,实现高阶用户所需的扩展功能,进而提高高阶用户体验。
进一步地,根据工作流配置文件可以确定多个步骤对应的代码的类型信息、用户针对多个步骤设置的参数以及多个步骤之间的编排关系,且根据多个步骤对应的代码的类型信息可以获取多个步骤对应的代码。这样可以基于多个步骤对应的代码、用户针对多个步骤设置的参数以及多个步骤之间的编排关系确定代码信息。本实施例提供的工作流执行方法,通过提供参数设置功能,可以实现工作流的参数化,如此可以进一步提高工作流模型的可扩展性,以满足不同用户的使用需求。
根据本申请一实施例,获取用户编排的工作流对应的代码信息,包括:根据用户在用户界面的选择确定工作流的多个步骤对应的代码和多个步骤之间的编排关系;根据多个步骤对应的代码以及多个步骤之间的编排关系确定代码信息。
本实施例中的代码信息可作为工作流文件。该工作流执行方法可以基于工作流模型来实现,该工作流模型可包括代码编写层和引擎层。引擎层用于对代码信息进行编译得到编译结果,并基于编译结果执行工作流。代码编写层可以用于向用户提供编写代码的界面。例如,当用户在代码编写层编排工作流时,计算设备可通过代码编写层获取用户选择的多个步骤分别对应的代码包,并按照用户对各个代码包的排列顺序获得工作流对应的代码信息。该代码信息可看作是代码块。
在根据用户选择的多个步骤对应的代码确定代码信息后,引擎层可以直接基于代码信息执行工作流。
由于IaC具有包管理能力,通过在代码编写层编写各个步骤对应的代码包,可便于直接在代码编写层做组件(如代码包)的复用和编排,以获得工作流对应的代码块。
本实施例提供的工作流执行方法,充分利用IaC的能力,可以简化工作流模型,且扩展工作流模型的功能,提高用户体验。
进一步地,该工作流执行方法还包括:获取用户在代码编写层针对多个步骤设置的参数。其中,根据多个步骤对应的代码以及多个步骤之间的编排关系确定代码信息,包括:根据多个步骤对应的代码、用户针对多个步骤设置的参数以及多个步骤之间的编排关系确定代码信息。例如,在将用户选择的步骤对应的代码包放入工作流对应的代码块时,可以直接根据用户的输入设置代码中各个参数名对应的参数。本实施例提供的工作流执行方法,通过提供参数设置功能,可以实现工作流的参数化,如此可以进一步提高工作流模型的可扩展性,以满足不同用户的使用需求。
根据本申请一实施例,该工作流执行方法基于控制器模式来实现,其中,获取用户编排的工作流对应的代码信息,包括:从集群的Etcd数据库的工作流自定义资源定义中获取工作流配置文件;基于工作流配置文件获取代码信息。
在控制器模式下可利用自定义控制器对Workflow CRD进行管理,有关自定义控制器的内容可参见上述实施例中的描述,为避免重复,此处不再赘述。
根据本申请一实施例,基于工作流配置文件获取代码信息,包括:基于工作流配置文件确定多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息;基于多个步骤中每个步骤对应的代码的类型信息从Etcd数据库的步骤自定义资源定义中获取多个步骤中每个步骤对应的代码;基于多个步骤中每个步骤对应的代码以及多个步骤之间的编排关系获取代码信息。
每个步骤可对应一个步骤配置文件,该步骤配置文件可包括该步骤对应的代码。每个步骤可对应一个类型信息,即步骤配置文件与一个类型信息对应。可以将步骤对应的步骤配置文件以K8s的自定义资源定义(Custom Resource Definition,CRD)的形式存储到Etcd数据库,该步骤配置文件对应的自定义资源定义可简称为Definition。
具体地,引擎层可以从Etcd数据库获取工作流配置文件,并基于工作流配置文件确定多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息。引擎层根据多个步骤对应的代码的类型信息从Etcd数据库的步骤自定义资源定义中获取多个步骤对应的步骤配置文件,并从多个步骤对应的步骤配置文件中获取多个步骤对应的代码。进一步地,引擎层基于每个步骤对应的代码以及多个步骤之间的编排关系获取代码信息。
控制器模式是K8s上使用面向终态的声明式资源的一种经典模式,与本申请实施例中面向终态的工作流步骤匹配性良好。本申请实施例提供的工作流执行方法可以与应用开放模型(Open Application Model,OAM)兼容,可以与OAM模型在工作流方面的能力衔接,从而实现在应用交付领域的进一步扩展。例如,本申请实施例提供的工作流执行方法可以应用于KubeVela项目中。
根据本申请一实施例,该工作流执行方法基于模型-视图-控制器(MVC)模式来实现,其中,获取用户编排的工作流对应的代码信息,包括:从模型(Model)数据库获取工作流配置文件;基于工作流配置文件获取代码信息。
具体地,MVC模式下工作流配置文件的存储与获取过程可参见上述实施例中的描述,为避免重复,此处不再赘述。
本申请实施例提供的工作流执行方法可以适应于不同的模式,可以通过不同的工作流引擎,来扩展工作流模型,而不需要强依赖于某一种特定的模式,具有较高的适应性。
应理解,本申请实施例提供的工作流执行方法可以包括上述的工作流编排方法。
图8所示为本申请另一示例性实施例提供的工作流执行方法的流程示意图。图8实施例是图7实施例的例子,为避免重复,相同之处不再赘述。图8的方法可基于图3的工作流模型来实现,并由图1A的第二计算设备执行。如图8所示,该工作流执行方法包括如下内容。
810:根据用户在用户层选择的多个步骤,在用户界面上显示多个步骤对应的代码中的参数名的输入框,并接收用户通过输入框输入的参数。
多个步骤中的每个步骤可以是用户利用IaC方法在代码编写层自定义的,或工作流模型内置的。或者,多个步骤中部分步骤是工作流模型内置的,另一部分步骤是用户利用IaC方法自定义的。
820:根据用户在用户层选择的工作流的多个步骤之间的编排关系、多个步骤中每个步骤对应的代码的类型信息以及用户针对多个步骤设置的参数生成工作流配置文件。
830:根据工作流配置文件确定多个步骤对应的代码的类型信息以及多个步骤之间的编排关系。
应理解的是,步骤830可以基于用户在用户层针对某工作流的选择而被触发执行。或者,在生成工作流配置文件后,步骤830可直接被执行。步骤830可以由引擎层执行。
840:根据多个步骤对应的代码的类型信息获取多个步骤对应的步骤配置文件。
步骤配置文件的相关内容可以参见上述实施例中的描述,为避免重复,此处不再赘述。
850:从多个步骤对应的步骤配置文件中获取多个步骤对应的代码。
860:基于多个步骤对应的代码以及多个步骤之间的编排关系确定代码信息。
具体地,根据工作流配置文件中与多个步骤对应的多个类型信息的先后顺序对各个步骤对应的代码进行排序,以获取工作流对应的代码信息。
代码信息包括多个步骤对应的代码和多个步骤之间的编排关系。
870:对代码信息进行编译得到编译结果。
880:基于编译结果执行工作流。
应理解的是,步骤840-880可以由引擎层执行。
图9所示为本申请另一示例性实施例提供的工作流执行方法的流程示意图。图9实施例是图7实施例的例子,为避免重复,相同之处不再赘述。图9的方法可基于图4的工作流模型来实现,并由图1A的第二计算设备执行。如图9所示,该工作流执行方法包括如下内容。
910:通过代码编写层获取用户选择的多个步骤分别对应的代码,获取用户针对多个步骤对应的代码中各个参数名设置的参数,并根据多个步骤对应的代码、用户针对多个步骤设置的参数以及多个步骤之间的编排关系生成工作流对应的代码信息。
920:对代码信息进行编译得到编译结果。
应理解的是,步骤920可以基于用户在代码编写层针对某工作流的选择而被触发执行。或者,在生成代码信息后,步骤920可直接被执行。
930:基于编译结果执行工作流。
应理解的是,步骤920-930可以由引擎层执行。
示例性装置
图10所示为本申请一示例性实施例提供的工作流编排装置1000的结构示意图。如图10所示,工作流编排装置1000包括:生成模块1010以及存储模块1020。
生成模块1010用于根据用户选择的工作流的多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件,其中,工作流配置文件用于获取工作流对应的代码信息,代码信息包括多个步骤对应的代码和多个步骤之间的编排关系,代码用于配置和运行工作流;存储模块1020用于存储工作流配置文件,以便执行工作流。
本申请实施例提供了一种工作流编排装置,通过利用IaC方法来定义工作流中的步骤,可以通过代码(而非手动流程)来管理和置备基础架构,且为用户自定义新的步骤提供了可能,例如,当应用场景比较复杂时,用户可以根据需要自定义需要的步骤,扩展工作流模型的功能,因此利用IaC方法来定义工作流中的步骤,可以提高工作流模型的适应性,以满足不同应用场景的多样化需求。另外,利用IaC方法定义工作流的步骤,可以将面向过程的工作流与面向终态的IaC相结合,使得工作流中编排的每个基于IaC的步骤都是面向终态的,这种面向终态的步骤能够保证工作流执行过程的可靠性和稳定性。
可选地,作为另一实施例,多个步骤包括第一工作流步骤,该工作流编排装置1000还包括:获取模块1030,用于获取用户自定义的第一工作流步骤对应的代码,代码信息包括第一工作流步骤对应的代码。
可选地,作为另一实施例,生成模块1010还用于:基于用户自定义的第一工作流步骤对应的代码生成步骤配置文件,步骤配置文件与第一工作流步骤对应的代码的类型信息对应。
在一实施例中,该工作流编排装置基于工作流模型来实现,工作流模型包括:用户层、代码编写层和引擎层,引擎层用于对代码信息进行编译得到编译结果,并基于编译结果执行工作流,其中,获取模块1030用于通过代码编写层获取用户编写的第一工作流步骤对应的代码,其中,生成模块1010用于:基于用户在代码编写层自定义的第一工作流步骤对应的代码生成步骤配置文件,其中,生成模块1010用于:根据用户在用户层选择的工作流的多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件。
在一实施例中,生成模块1010用于:根据多个步骤之间的编排关系、多个步骤中每个步骤对应的代码的类型信息以及用户针对多个步骤设置的参数生成工作流配置文件。
可选地,作为另一实施例,该工作流编排装置1000还包括:显示模块1040,用于在用户界面上显示多个步骤中每个步骤对应的代码中的参数名的输入框;接收模块1050,用于接收用户通过输入框输入的参数。
在一实施例中,工作流编排装置基于控制器模式来实现,其中,存储模块1020用于:将工作流配置文件存储到集群的Etcd数据库中。
在一实施例中,工作流编排装置基于模型-视图-控制器MVC模式来实现,其中,存储模块1020用于:将工作流配置文件存储到模型数据库中。
可选地,作为另一实施例,生成模块1010还用于:根据用户选择的工作流的多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码生成代码信息。
在一实施例中,该工作流编排装置基于工作流模型来实现,工作流模型包括:代码编写层和引擎层,引擎层用于对代码信息进行编译得到编译结果,并基于编译结果执行工作流,其中,多个步骤包括第一工作流步骤,获取模块1030用于通过代码编写层获取用户编写的第一工作流步骤对应的代码。
应当理解,上述实施例中的生成模块1010、存储模块1020、获取模块1030、显示模块1040以及接收模块1050的操作和功能可以参考上述图2、图5或图6实施例中提供的工作流编排中的描述,为了避免重复,在此不再赘述。
图11所示为本申请一示例性实施例提供的工作流执行装置1100的结构示意图。如图11所示,工作流执行装置1100包括:获取模块1110,编译模块1120以及执行模块1130。
获取模块1110用于获取用户编排的工作流对应的代码信息,工作流包括多个步骤,代码信息包括多个步骤对应的代码和多个步骤之间的编排关系,代码用于配置和运行工作流;编译模块1120用于对代码信息进行编译得到编译结果;执行模块1130用于基于编译结果执行工作流。
本申请实施例提供了一种工作流执行装置,通过利用IaC方法来定义工作流中的步骤,可以通过代码(而非手动流程)来管理和置备基础架构,且为用户自定义新的步骤提供了可能,例如,当应用场景比较复杂时,用户可以根据需要自定义需要的步骤,扩展工作流模型的功能,因此利用IaC方法来定义工作流中的步骤,可以提高工作流模型的适应性,以满足不同应用场景的多样化需求。另外,利用IaC方法定义工作流的步骤,可以将面向过程的工作流与面向终态的IaC相结合,使得工作流中编排的每个基于IaC的步骤都是面向终态的,这种面向终态的步骤能够保证工作流执行过程的可靠性和稳定性。
在一实施例中,多个步骤包括由用户利用代码自定义的步骤。
在一实施例中,获取模块1110用于:获取工作流对应的工作流配置文件,工作流配置文件包括代码信息中每个步骤对应的代码的类型信息以及多个步骤之间的编排关系;根据工作流配置文件获取代码信息。
在一实施例中,获取模块1110用于:根据工作流配置文件确定多个步骤对应的代码的类型信息以及多个步骤之间的编排关系;根据多个步骤对应的代码的类型信息获取多个步骤对应的步骤配置文件;从多个步骤对应的步骤配置文件中获取多个步骤对应的代码;基于多个步骤对应的代码以及多个步骤之间的编排关系确定代码信息。
在一实施例中,该工作流执行装置基于控制器模式来实现,其中,获取模块1110用于:从集群的Etcd数据库的工作流自定义资源定义中获取工作流配置文件;基于工作流配置文件获取代码信息。
在一实施例中,获取模块1110用于:基于工作流配置文件确定多个步骤之间的编排关系以及多个步骤中每个步骤对应的代码的类型信息;基于多个步骤中每个步骤对应的代码的类型信息从Etcd数据库的步骤自定义资源定义中获取多个步骤中每个步骤对应的代码;基于多个步骤中每个步骤对应的代码以及多个步骤之间的编排关系获取代码信息。
在一实施例中,该工作流执行装置基于模型-视图-控制器MVC模式来实现,其中,获取模块1110用于:从模型数据库获取工作流配置文件;基于工作流配置文件获取代码信息。
应当理解,上述实施例中的获取模块1110、编译模块1120以及执行模块1130的操作和功能可以参考上述图7、图8或图9实施例中提供的工作流执行方法中的描述,为了避免重复,在此不再赘述。
应理解,本申请实施例提供的工作流执行装置可以包括上述的工作流编排装置。
图12所示为本申请一示例性实施例提供的用于执行工作流编排方法或工作流执行方法的电子设备1200的框图。
参照图12,电子设备1200包括处理组件1210,其进一步包括一个或多个处理器,以及由存储器1220所代表的存储器资源,用于存储可由处理组件1210执行的指令,例如应用程序。存储器1220中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1210被配置为执行指令,以执行上述工作流编排方法或工作流执行方法。
电子设备1200还可以包括一个电源组件被配置为执行电子设备1200的电源管理,一个有线或无线网络接口被配置为将电子设备1200连接到网络,和一个输入输出(I/O)接口。可以基于存储在存储器1220的操作系统操作电子设备1200,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
一种非临时性计算机可读存储介质,当存储介质中的指令由上述电子设备1200的处理器执行时,使得上述电子设备1200能够执行一种工作流编排方法或工作流执行方法。
上述所有可选技术方案,可采用任意结合形成本申请的可选实施例,在此不再一一赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序校验码的介质。
需要说明的是,在本申请的描述中,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换等,均应包含在本申请的保护范围之内。

Claims (14)

1.一种工作流执行方法,其特征在于,包括:
获取用户编排的工作流对应的代码信息,所述工作流包括多个步骤,所述代码信息包括所述多个步骤对应的代码和所述多个步骤之间的编排关系,所述代码用于配置和运行所述工作流;
对所述代码信息进行编译得到编译结果;
基于所述编译结果执行所述工作流。
2.根据权利要求1所述的工作流执行方法,其特征在于,所述多个步骤包括由所述用户利用所述代码自定义的步骤。
3.根据权利要求1所述的工作流执行方法,其特征在于,所述获取用户编排的工作流对应的代码信息,包括:
获取所述工作流对应的工作流配置文件,所述工作流配置文件包括所述代码信息中每个步骤对应的代码的类型信息以及所述多个步骤之间的编排关系;
根据所述工作流配置文件获取所述代码信息。
4.根据权利要求3所述的工作流执行方法,其特征在于,所述根据所述工作流配置文件获取所述代码信息,包括:
根据所述工作流配置文件确定所述多个步骤对应的代码的类型信息以及所述多个步骤之间的编排关系;
根据所述多个步骤对应的代码的类型信息获取所述多个步骤对应的步骤配置文件;
从所述多个步骤对应的步骤配置文件中获取所述多个步骤对应的代码;
基于所述多个步骤对应的代码以及所述多个步骤之间的编排关系确定所述代码信息。
5.根据权利要求1所述的工作流执行方法,其特征在于,所述工作流执行方法基于控制器模式来实现,其中,所述获取用户编排的工作流对应的代码信息,包括:
从集群的Etcd数据库的工作流自定义资源定义中获取工作流配置文件;
基于所述工作流配置文件获取所述代码信息。
6.根据权利要求5所述的工作流执行方法,其特征在于,所述基于所述工作流配置文件获取所述代码信息,包括:
基于所述工作流配置文件确定所述多个步骤之间的编排关系以及所述多个步骤中每个步骤对应的代码的类型信息;
基于所述多个步骤中每个步骤对应的代码的类型信息从所述Etcd数据库的步骤自定义资源定义中获取所述多个步骤中每个步骤对应的代码;
基于所述多个步骤中每个步骤对应的代码以及所述多个步骤之间的编排关系获取所述代码信息。
7.根据权利要求1至6中任一项所述的工作流执行方法,其特征在于,还包括:
根据所述用户选择的所述工作流的所述多个步骤之间的编排关系以及所述多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件,所述工作流配置文件用于获取所述工作流对应的所述代码信息;
存储所述工作流配置文件,以便执行所述工作流。
8.根据权利要求7所述的工作流执行方法,其特征在于,所述多个步骤包括第一工作流步骤,所述工作流执行方法还包括:
获取所述用户自定义的所述第一工作流步骤对应的代码,所述代码信息包括所述第一工作流步骤对应的代码。
9.根据权利要求8所述的工作流执行方法,其特征在于,所述工作流执行方法还包括:
基于所述用户自定义的所述第一工作流步骤对应的代码生成步骤配置文件,所述步骤配置文件与所述第一工作流步骤对应的代码的类型信息对应。
10.根据权利要求9所述的工作流执行方法,其特征在于,所述工作流执行方法基于工作流模型来实现,所述工作流模型包括:用户层、代码编写层和引擎层,所述引擎层用于对所述代码信息进行编译得到编译结果,并基于所述编译结果执行所述工作流,其中,
所述获取所述用户自定义的所述第一工作流步骤对应的代码,包括:
通过所述代码编写层获取所述用户编写的所述第一工作流步骤对应的代码,
其中,所述基于所述用户自定义的所述第一工作流步骤对应的代码生成步骤配置文件,包括:
基于所述用户在所述代码编写层自定义的所述第一工作流步骤对应的代码生成所述步骤配置文件,
其中,所述根据所述用户选择的所述工作流的所述多个步骤之间的编排关系以及所述多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件,包括:
根据所述用户在所述用户层选择的所述工作流的所述多个步骤之间的编排关系以及所述多个步骤中每个步骤对应的代码的类型信息生成所述工作流配置文件。
11.根据权利要求7所述的工作流执行方法,其特征在于,所述根据所述用户选择的所述工作流的所述多个步骤之间的编排关系以及所述多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件,包括:
根据所述多个步骤之间的编排关系、所述多个步骤中每个步骤对应的代码的类型信息以及所述用户针对所述多个步骤设置的参数生成所述工作流配置文件。
12.根据权利要求1至6中任一项所述的工作流执行方法,其特征在于,还包括:
根据所述用户选择的所述工作流的所述多个步骤之间的编排关系以及所述多个步骤中每个步骤对应的代码生成代码信息,其中,
所述工作流执行方法基于工作流模型来实现,所述工作流模型包括:代码编写层和引擎层,所述引擎层用于对所述代码信息进行编译得到编译结果,并基于所述编译结果执行所述工作流,其中所述多个步骤包括第一工作流步骤,所述工作流执行方法还包括:
通过所述代码编写层获取所述用户自定义的所述第一工作流步骤对应的代码。
13.一种工作流编排方法,其特征在于,包括:
根据用户选择的工作流的多个步骤之间的编排关系以及所述多个步骤中每个步骤对应的代码的类型信息生成工作流配置文件,其中,所述工作流配置文件用于获取所述工作流对应的代码信息,所述代码信息包括所述多个步骤对应的代码和所述多个步骤之间的编排关系,所述代码用于配置和运行所述工作流;
存储所述工作流配置文件,以便执行所述工作流。
14.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器,
其中,所述处理器用于执行上述权利要求1至12中任一项所述的工作流执行方法或权利要求13所述的工作流编排方法。
CN202210543165.8A 2022-05-18 2022-05-18 工作流执行方法、工作流编排方法及电子设备 Pending CN114912897A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210543165.8A CN114912897A (zh) 2022-05-18 2022-05-18 工作流执行方法、工作流编排方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210543165.8A CN114912897A (zh) 2022-05-18 2022-05-18 工作流执行方法、工作流编排方法及电子设备

Publications (1)

Publication Number Publication Date
CN114912897A true CN114912897A (zh) 2022-08-16

Family

ID=82768034

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210543165.8A Pending CN114912897A (zh) 2022-05-18 2022-05-18 工作流执行方法、工作流编排方法及电子设备

Country Status (1)

Country Link
CN (1) CN114912897A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115955409A (zh) * 2023-03-09 2023-04-11 花瓣云科技有限公司 一种变更编排方法及相关装置
CN116028038A (zh) * 2023-03-28 2023-04-28 深圳市奥思网络科技有限公司 基于dag图表的可视化流水线编排方法及相关组件

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105320523A (zh) * 2015-10-16 2016-02-10 北京恒华伟业科技股份有限公司 一种数据处理方法和装置
CN108432208A (zh) * 2016-12-15 2018-08-21 华为技术有限公司 一种业务编排方法、装置及服务器
CN109145034A (zh) * 2017-06-15 2019-01-04 阿里巴巴集团控股有限公司 资源呈现方法、装置及计算机终端
CN111367618A (zh) * 2020-03-03 2020-07-03 山东汇贸电子口岸有限公司 基于docker的代码管理方法、系统、终端及介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105320523A (zh) * 2015-10-16 2016-02-10 北京恒华伟业科技股份有限公司 一种数据处理方法和装置
CN108432208A (zh) * 2016-12-15 2018-08-21 华为技术有限公司 一种业务编排方法、装置及服务器
US20190306256A1 (en) * 2016-12-15 2019-10-03 Huawei Technologies Co., Ltd. Service orchestration method and apparatus, and server
CN109145034A (zh) * 2017-06-15 2019-01-04 阿里巴巴集团控股有限公司 资源呈现方法、装置及计算机终端
CN111367618A (zh) * 2020-03-03 2020-07-03 山东汇贸电子口岸有限公司 基于docker的代码管理方法、系统、终端及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115955409A (zh) * 2023-03-09 2023-04-11 花瓣云科技有限公司 一种变更编排方法及相关装置
CN116028038A (zh) * 2023-03-28 2023-04-28 深圳市奥思网络科技有限公司 基于dag图表的可视化流水线编排方法及相关组件

Similar Documents

Publication Publication Date Title
US9952852B2 (en) Automated deployment and servicing of distributed applications
CN109542556B (zh) 一种基于Activiti的流程与表单交互方法及系统
US9286037B2 (en) Platform for distributed applications
CN110768833A (zh) 基于kubernetes的应用编排部署方法及装置
US20110004564A1 (en) Model Based Deployment Of Computer Based Business Process On Dedicated Hardware
CN106775744B (zh) 一种生成静态库的方法和装置
CN114912897A (zh) 工作流执行方法、工作流编排方法及电子设备
US10380009B2 (en) Code usage map
CN109144511B (zh) 数值模拟图形用户界面自动生成方法及系统
CN114064213B (zh) 基于Kubernets容器环境的快速编排服务方法及系统
CN111104103A (zh) 一种软件编辑微服务的可视化方法及系统
CN114461182A (zh) 流水线构建的方法、装置、电子设备及计算机可读存储介质
KR102397494B1 (ko) 로우(Low) 코드 웹 개발 및 운영 시스템 및 이를 이용한 서비스 방법
US8966434B2 (en) Repository based development using project development tools in enterprise management environment
CN113835691B (zh) 一种iOS应用开发方法、系统、设备、介质和程序产品
CN110764864A (zh) 一种基于Terraform的可视化资源编排方法
CN105760147A (zh) 一种软件页面显示构建方法及系统
Farhat et al. Safe Dynamic Reconfiguration of Concurrent Component-based Applications
CN114003343A (zh) 云原生应用构建方法、装置及计算机设备
CN112564979A (zh) 构建任务的执行方法、装置、计算机设备和存储介质
CN114077437A (zh) 一种人工智能应用的集成管理方法、装置及系统
CN112418796A (zh) 子流程节点激活方法、装置、电子设备及存储介质
EP3462309A1 (en) Method for generating user interfaces from a manufacturing application model
US20230289151A1 (en) Generation and consumption of templates based on source code examples
Heinrich et al. MDA applied: a task-model driven tool chain for multimodal applications

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