CN111208991A - 基于工作流的程序开发方法、电子设备及存储介质 - Google Patents
基于工作流的程序开发方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111208991A CN111208991A CN202010005892.XA CN202010005892A CN111208991A CN 111208991 A CN111208991 A CN 111208991A CN 202010005892 A CN202010005892 A CN 202010005892A CN 111208991 A CN111208991 A CN 111208991A
- Authority
- CN
- China
- Prior art keywords
- workflow
- node
- nodes
- workflows
- output
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 244000035744 Hura crepitans Species 0.000 claims abstract description 9
- 230000008520 organization Effects 0.000 claims abstract description 9
- 238000004891 communication Methods 0.000 claims abstract description 8
- 230000007246 mechanism Effects 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 13
- 239000003292 glue Substances 0.000 claims description 4
- 239000003795 chemical substances by application Substances 0.000 claims description 2
- 238000013461 design Methods 0.000 abstract description 12
- 238000011161 development Methods 0.000 abstract description 6
- 238000005538 encapsulation Methods 0.000 abstract description 4
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000006399 behavior Effects 0.000 description 13
- 230000009471 action Effects 0.000 description 9
- 230000014509 gene expression Effects 0.000 description 6
- 238000004806 packaging method and process Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000006378 damage Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (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
技术领域
本发明涉及软件工程领域,更具体地,涉及一种基于工作流的程序开发方法、电子设备及存储介质。
背景技术
在传统的软件开发过程中,开发人员需要通过利用所用编程语言的语法规则与组织工具来组合较小的程序单元,使其成为具有实用功能、满足设计需求的大型程序。
为完成此类程序组织活动,程序架构的设计者必须熟练掌握所用编程语言的语法规则与组件机制以及相关工具链的使用方式,并额外了解大量与所用技术的实现相关的设计技巧。如果程序使用多种语言混合写成,在设计时还会额外遇到更多关于程序单元间通信的问题。
此外,由于大量使用程序语言的语法机制进行程序单元的分划,单元内部与外部的边界仅由程序语言的文法甚至开发人员的约定进行界定,使得对此经验较少的一般开发人员很容易破坏单元间的封装抽象,加大了架构设计与项目管理的难度。
由此,关于程序单元的组合与程序架构的设计一直具有很高的学习成本与实施难度,不利于更多开发人员的学习与开发工作的进行。
因此需要提出一种面向流程的新型程序开发方法,以降低架构设计与项目管理的难度。
发明内容
本发明的目的是提出一种基于工作流的程序开发方法、电子设备及存储介质,实现降低架构设计与项目管理的难度,且有助于程序的抽象与封装,降低开发难度。
为实现上述目的,本发明提出了一种基于工作流的程序开发方法,包括:
将程序项目划分成多条工作流,其中每条工作流包括多个节点,所述节点被定义为最小的程序组织与执行单元;
指定程序的执行流程为一条工作流或多条工作流的组合;
指定每条工作流中所述多个节点之间的逻辑顺序;
使每条工作流以及每个节点的代码运行在独立的沙箱环境中;
建立每条工作流中所有节点可见的全局状态存储机制,通过读写所述全局状态模拟节点之间的连接与数据通信;
执行每条所述工作流。
可选地,在指定程序的执行流程为一条工作流或多条工作流的组合步骤中,包括:
通过配置文件或胶水代码指定程序的执行流程为一条工作流或多条工作流的组合。
可选地,在指定每条工作流中所述多个节点之间的逻辑顺序步骤中,包括:
通过编写依赖图指定每条工作流中所述多个节点之间的逻辑顺序。
可选地,所述依赖图为一条工作流中所有节点连接关系的集合,其中当前节点的输出作为后续节点的输入,且每个节点可以连接多个后续节点;
所述依赖图还包括多个节点信息元素,每个所述节点信息元素包括一个节点类的名称、所述一个节点的id以及所述一个节点的后续节点的id。
可选地,所述节点包括开始节点、终止节点、空节点、条件节点、循环节点、API节点、函数节点以及事件节点。
可选地,在执行每条所述工作流步骤中,包括:
提供工作流引擎,执行至少一条工作流,识别与所述工作流对应的依赖图中所有节点的逻辑顺序。
可选地,在执行每条所述工作流步骤中,还包括:
所述工作流引擎调用辅助库依次运行所述依赖图中的每一个节点,并将一个节点的输出作为后续节点的输入,同时将每一个节点的输入和输出记录到所述全局状态中;
当一个节点拥有多个后续节点时,将所述节点的输出作为所有后续节点的输入并通过所述辅助库并发执行所述多个后续节点的输入。
可选地,在执行每条所述工作流步骤中,还包括:
所述工作流引擎能够将工作流代理为HTTP服务或RPC服务,并将远程请求的内容作为所述开始节点的输入以执行所述工作流,当执行到所述终止节点,则终止所有节点的执行并将所述终止节点的输出作为整条工作流的输出,若一条工作流中没有所述终止节点,则将最后一个执行完毕的节点的输出作为整条工作流的输出。
本发明还提供一种电子设备,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行以上所述的基于工作流的程序开发方法。
本发明还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行以上所述的基于工作流的程序开发方法。
本发明的有益效果在于:
通过工作流形式开发程序项目,每条工作流以及每个节点的代码运行在独立的沙箱环境中,使得不同的工作流、不同的节点之间均应互不可见,并通过读写全局状态实现节点之间的互相通信,能够实现软件程序开发项目架构清晰、封装良好且易于设计,仅需规定不同的节点与工作流的行为并简单组合即可形成整个项目的原型框架,显著降低了开发成本,并且相较于原生的程序组织方式更为安全,使得经验较少的开发人员无法轻易破坏程序单元间的封装抽象,易于项目管理。
本发明的装置具有其它的特性和优点,这些特性和优点从并入本文中的附图和随后的具体实施方式中将是显而易见的,或者将在并入本文中的附图和随后的具体实施方式中进行详细陈述,这些附图和具体实施方式共同用于解释本发明的特定原理。
附图说明
通过结合附图对本发明示例性实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显,在本发明示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了根据本发明的一种基于工作流的程序开发方法的步骤图。
具体实施方式
下面将参照附图更详细地描述本发明。虽然附图中显示了本发明的优选实施例,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
根据本发明的一种基于工作流的程序开发方法,包括:
将程序项目划分成多条工作流,其中每条工作流包括多个节点,节点被定义为最小的程序组织与执行单元;
指定程序的执行流程为一条工作流或多条工作流的组合;
指定每条工作流中多个节点之间的逻辑顺序;
使每条工作流以及每个节点的代码运行在独立的沙箱环境中;
建立每条工作流中所有节点可见的全局状态存储机制,通过读写全局状态模拟节点之间的连接与数据通信;
执行每条工作流。
具体地,使用工作流概念组织项目架构,使用下述节点概念组织工作流,每条工作流以及每个节点的代码运行在独立的沙箱环境中,使得不同的工作流、不同的节点之间均应互不可见,并通过读写全局状态实现节点之间的互相通信,其中,工作流概念用于代替传统程序架构设计中的程序单元,如使用类或函数分割程序模块等概念,节点概念相当于工作流中的语句,提供了该方法下的最小执行单元,能够实现软件程序开发项目架构清晰、封装良好且易于设计,仅需规定不同的节点与工作流的行为并简单组合即可形成整个项目的原型框架,显著降低了开发成本。
进一步地,本发明提出一种面向数据流的组合式编程思想,其中,程序是节点“网络”的集合,将节点视为黑箱,节点之间通过“网络”连接并传递数据,节点之间并行执行,有向无序连接,消息驱动的执行流程,能够良好的封装(节点黑箱,连接与节点独立)以及优良的效率(节点并行)。
在一个示例中,在指定程序的执行流程为一条工作流或多条工作流的组合步骤中,包括:
通过配置文件或胶水代码指定程序的执行流程为一条工作流或多条工作流的组合。
具体地,一个程序项目由任意多条工作流组成,并通过配置文件或小部分胶水代码指定程序的执行流程为特定工作流的组合。
进一步地,本发明中的工作流为节点间的“网络”,具有以下特点:
有起始与终止节点,有执行顺序;
每个节点允许连接一个输入节点和任意多输出节点;
每个工作流有独立的全局状态;
通过读写全局状态来模拟节点间的连接与数据通信;
状态本身只读;
每写一次创建一个新的状态;
记录每一次状态的迁移,方便回退;
相较于手动连接节点,可以降低网络复杂度;
每一个节点的输出自动记录在全局状态中;
可以被启动;
从开始节点出发沿着网络的连接依次执行;
遇到向后分叉的节点会并发执行;
遇到任意一个终止节点即终止所有并发执行的任务;
如果一个节点触发了一个事件;
并发的执行对应的事件回调节点;
运行在独立的沙箱环境中。
在一个示例中,在指定每条工作流中多个节点之间的逻辑顺序步骤中,包括:
通过编写依赖图指定每条工作流中多个节点之间的逻辑顺序。
具体地,一条工作流由任意多个节点组成,并通过依赖图指定节点之间的逻辑顺序,也就是工作流的执行顺序。
在一个示例中,依赖图为一条工作流中所有节点连接关系的集合,其中当前节点的输出作为后续节点的输入,且每个节点可以连接多个后续节点;
依赖图还包括多个节点信息元素,每个节点信息元素包括一个节点类的名称、一个节点的id以及一个节点的后续节点的id。
具体地,依赖图是一个节点的集合,其中的每一个元素都包含一个节点类的名称,一个唯一的节点id以及它的(可能是多个)下一节点的id。
在一个示例中,节点包括开始节点、终止节点、空节点、条件节点、循环节点、API节点、函数节点以及事件节点。
具体地,节点是该开发方法中最小、最基础的程序组织与执行单元,可以是简单的执行逻辑,如开始节点、终止节点、条件分支节点等;可以是与外部应用进行交互的节点,如API节点;也可以是包含技术方案所支持的任意编程语言的任意代码的函数节点,用于执行业务逻辑。同时,节点的外部不透明(因此互相不可见)、拥有输入输出、可以从外部互相连接、允许并发执行、节点自身无状态、存在全局状态可供读写、每一次的输入输出都会被记录到全局状态中、可被事件触发执行
在一个示例中,基于Python创建节点的方法为:
(1)为每种节点定义各自的类;
(2)通过继承特定的类来实现特定种类的节点;
(3)通过实现特定的方法或指定特定的变量来定义一个节点的行为。
其中,每个节点均用于执行动作,若覆写则可以完全更改一个节点的行为为任意代码。
具体地,节点的类型包括:
开始节点:用于标识程序运行的起始端点,必须存在恰好一个;
终止节点:标识程序运行的终止端点,允许存在多个,执行到任意一个即终止整个程序的运行;
空节点:可以打断数据流传递或作为占位符;
条件节点:根据指定条件判断进行分支;
循环节点:根据指定条件判断循环执行;
API节点:将外部HTTP服务视为API,请求/响应即为输入/输出;
函数节点:自定义的执行逻辑,用于实现具体业务;
事件节点:事件系统的回调,当事件触发时被执行。
在一个示例中,在执行每条工作流步骤中,包括:
提供工作流引擎,执行至少一条工作流,识别与工作流对应的依赖图中所有节点的逻辑顺序。工作流引擎调用辅助库依次运行依赖图中的每一个节点,并将一个节点的输出作为后续节点的输入,同时将每一个节点的输入和输出记录到全局状态中;当一个节点拥有多个后续节点时,将节点的输出作为所有后续节点的输入并通过辅助库并发执行多个后续节点的输入。
工作流引擎能够将工作流代理为HTTP服务或RPC服务,并将远程请求的内容作为开始节点的输入以执行工作流,当执行到终止节点,则终止所有节点的执行并将终止节点的输出作为整条工作流的输出,若一条工作流中没有终止节点,则将最后一个执行完毕的节点的输出作为整条工作流的输出。
具体地,提供一个工作流引擎,工作流引擎调用辅助库API来启动一条工作流,识别编写的节点依赖图并依此执行节点中的逻辑。其中,对于每一个节点标注的输入输出,解析并据依赖图依次传递给下一节点。对于每一条工作流,提供一组其中所有节点可见的全局状态存储机制。对于函数节点中的任意代码,提供一个适配该语言的独立沙箱环境,对每一条工作流也提供一个独立的沙箱环境。多条工作流可以被工作流引擎并发执行。任意工作流均可被工作流引擎(应用网络库)代理为HTTP或RPC API服务,将远程请求的内容作为开始节点的输入执行工作流,并将输出作为响应。
其中,API包括:
(1)工作流
给定初始输入,启动一条工作流;
初始输入将被发送给开始节点并依网络定义向下传播;
创建一个工作流的依赖图;
抽象方法,通过给出一个实际的依赖图来实现该方法,以此定义一条工作流;
创建一个初始全局状态;
抽象方法,默认实现为创建一个空状态,可以被覆盖为任意初始全局状态;
自定义初始化;
执行任意的初始化代码;
状态监听响应(钩子);
已创建;
初始化前;
初始化完毕;
执行前;
执行完毕;
销毁前。
(2)节点
执行实际计算,根据输入产生一个输出;
空节点:默认输出空值以丢弃输入的数据流,可自定义输入输出;
条件节点:求值条件表达式并根据结果执行不同的计算并选择下一节点;
循环节点:求值条件表达式并根据结果反复执行指定计算多次;
API节点:将输入作为请求参数调用远程HTTP/RPC API并将响应结果作为输出;
函数节点:任意的自定义代码(自定义输入输出);
开始节点和终止节点:相较于函数节点仅多了执行上的标识功能,需自定义输入输出;
事件节点:相较于函数节点仅执行流程依赖于事件触发,需自定义输入输出;
自定义初始化;
状态监听响应(钩子);
已创建;
初始化前;
初始化完毕;
执行前;
执行完毕;
销毁前;
执行成功;
执行错误。
(3)节点中的代码
读全局状态
写全局状态
读输入
写输出
触发一个事件。
本实施例具体实施过程如下(基于Python):
(1)创建节点
为每种节点定义各自的类;
通过继承特定的类来实现特定种类的节点;
通过实现特定的方法或指定特定的变量来定义一个节点的行为。
所有节点:执行动作,若覆写则可以完全更改一个节点的行为为任意代码;
开始节点/终止节点:通过自定义执行动作来定义节点行为
空节点:通过自定义执行动作来定义节点行为
条件节点:条件表达式(通过访问全局状态/输入输出),条件表达式为真/为假时分别的执行动作,条件表达式为真/为假时的下一节点由依赖图指定。
循环节点:以下四者只有条件表达式为必选项,类似于for循环;
初始化动作;
条件表达式;
执行循环体后动作;
循环体;
可在依赖图中指定一系列连续的节点为循环体。
API节点:
API名称;
代理模式(与ArkOS有关),可选;
远端URL,必选;
HTTP请求方法,可选;
HTTP验证信息,可选;
HTTP请求头,可选;
HTTP URL参数,可选。
函数节点:通过自定义执行动作来定义节点行为。
事件节点:通过自定义执行动作来定义节点行为。
(2)创建工作流
定义一个工作流类;
通过继承工作流类来创建一个特定的工作流;
通过实现创建依赖图API来为工作流实际指定一个依赖图。
(3)执行工作流
给定一个工作流的名称以及一个初始输入,辅助库会在“flows”文件夹下“main.py”里寻找名为“Main”的类对象并将其视为工作流对象启动。
启动时工作流类会首先初始化一个默认的全局状态(可自定义),并从开始节点根据连接关系遍历整个依赖图。对于依赖图中的每一个节点,辅助库会依次运行它们并将一个的输出作为另一个的输入,并记录每一个节点的输入输出到全局状态中。每当一个节点拥有多个后续节点时,辅助库将会把该节点的输出当成所有后续节点的输入并使用并发手段同时执行它们。
如果执行到一个终止节点,辅助库将会终止所有节点的执行并将它的输出作为整条工作流的输出。假如没有终止节点,最后一个执行完毕的节点的输出将会作为整条工作流的输出。
当一个节点更改了全局状态时,辅助库会记录归档原来的状态并创建一个新的状态作为当前全局状态。
当一个节点触发了一个事件时,辅助库会找到对应的回调事件节点并发的执行。
(4)工具链
创建项目/工作流/节点的脚手架工具;
执行工作流的命令行工具;
编译工作流项目到裸机/Docker/k8s/ArkOS的打包工具。
本发明实施例还提供一种电子设备,电子设备包括:
至少一个处理器;以及,
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的基于工作流的程序开发方法。
本发明实施例还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行上述的基于工作流的程序开发方法。
使用本发明开发的项目架构清晰,封装良好,易于设计,仅需规定不同的节点与工作流的行为并简单组合即可形成整个项目的原型框架,显著降低了开发成本;并且,本方案较之原生的程序组织方式更为安全,使得经验较少的开发人员无法轻易破坏程序单元间的封装抽象,易于项目管理。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。
Claims (10)
1.一种基于工作流的程序开发方法,其特征在于,包括:
将程序项目划分成多条工作流,其中每条工作流包括多个节点,所述节点被定义为最小的程序组织与执行单元;
指定程序的执行流程为一条工作流或多条工作流的组合;
指定每条工作流中所述多个节点之间的逻辑顺序;
使每条工作流以及每个节点的代码运行在独立的沙箱环境中;
建立每条工作流中所有节点可见的全局状态存储机制,通过读写所述全局状态模拟节点之间的连接与数据通信;
执行每条所述工作流。
2.根据权利要求1所述的基于工作流的程序开发方法,其特征在于,在指定程序的执行流程为一条工作流或多条工作流的组合步骤中,包括:
通过配置文件或胶水代码指定程序的执行流程为一条工作流或多条工作流的组合。
3.根据权利要求1所述的基于工作流的程序开发方法,其特征在于,在指定每条工作流中所述多个节点之间的逻辑顺序步骤中,包括:
通过编写依赖图指定每条工作流中所述多个节点之间的逻辑顺序。
4.根据权利要求3所述的基于工作流的程序开发方法,其特征在于,所述依赖图为一条工作流中所有节点连接关系的集合,其中当前节点的输出作为后续节点的输入,且每个节点可以连接多个后续节点;
所述依赖图还包括多个节点信息元素,每个所述节点信息元素包括一个节点类的名称、所述一个节点的id以及所述一个节点的后续节点的id。
5.根据权利要求4所述的基于工作流的程序开发方法,其特征在于,所述节点包括开始节点、终止节点、空节点、条件节点、循环节点、API节点、函数节点以及事件节点。
6.根据权利要求5所述的基于工作流的程序开发方法,其特征在于,在执行每条所述工作流步骤中,包括:
提供工作流引擎,执行至少一条工作流,识别与所述工作流对应的依赖图中所有节点的逻辑顺序。
7.根据权利要求6所述的基于工作流的程序开发方法,其特征在于,在执行每条所述工作流步骤中,还包括:
所述工作流引擎调用辅助库依次运行所述依赖图中的每一个节点,并将一个节点的输出作为后续节点的输入,同时将每一个节点的输入和输出记录到所述全局状态中;
当一个节点拥有多个后续节点时,将所述节点的输出作为所有后续节点的输入并通过所述辅助库并发执行所述多个后续节点的输入。
8.根据权利要求7所述的基于工作流的程序开发方法,其特征在于,在执行每条所述工作流步骤中,还包括:
所述工作流引擎能够将工作流代理为HTTP服务或RPC服务,并将远程请求的内容作为所述开始节点的输入以执行所述工作流,当执行到所述终止节点,则终止所有节点的执行并将所述终止节点的输出作为整条工作流的输出,若一条工作流中没有所述终止节点,则将最后一个执行完毕的节点的输出作为整条工作流的输出。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8任一所述的基于工作流的程序开发方法。
10.一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行权利要求1-8任一所述的基于工作流的程序开发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010005892.XA CN111208991B (zh) | 2020-01-03 | 2020-01-03 | 基于工作流的程序开发方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010005892.XA CN111208991B (zh) | 2020-01-03 | 2020-01-03 | 基于工作流的程序开发方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111208991A true CN111208991A (zh) | 2020-05-29 |
CN111208991B CN111208991B (zh) | 2023-10-31 |
Family
ID=70788318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010005892.XA Active CN111208991B (zh) | 2020-01-03 | 2020-01-03 | 基于工作流的程序开发方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111208991B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419790A (zh) * | 2021-06-22 | 2021-09-21 | 杭州安恒信息技术股份有限公司 | 业务数据处理方法、装置、设备及计算机可读存储介质 |
CN117311678A (zh) * | 2023-08-04 | 2023-12-29 | 四川大学 | 用于ai系统的程序模块序化组接功能合成的等效嵌入方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193823A (zh) * | 2010-03-12 | 2011-09-21 | 微软公司 | 允许元编程的最优增量工作流执行 |
CN107864694A (zh) * | 2016-07-21 | 2018-03-30 | 百度时代网络技术(北京)有限公司 | 用于操作无人驾驶车辆的计算节点当中的有效通信 |
CN109901818A (zh) * | 2018-11-15 | 2019-06-18 | 阿里巴巴集团控股有限公司 | 用于软件架构设计的系统和方法 |
US20190220331A1 (en) * | 2018-01-16 | 2019-07-18 | Enterpriseweb Llc | Event-driven programming model-based on asynchronous, massively parallel dataflow processes for highly-scalable distributed applications |
-
2020
- 2020-01-03 CN CN202010005892.XA patent/CN111208991B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193823A (zh) * | 2010-03-12 | 2011-09-21 | 微软公司 | 允许元编程的最优增量工作流执行 |
CN107864694A (zh) * | 2016-07-21 | 2018-03-30 | 百度时代网络技术(北京)有限公司 | 用于操作无人驾驶车辆的计算节点当中的有效通信 |
US20190220331A1 (en) * | 2018-01-16 | 2019-07-18 | Enterpriseweb Llc | Event-driven programming model-based on asynchronous, massively parallel dataflow processes for highly-scalable distributed applications |
CN109901818A (zh) * | 2018-11-15 | 2019-06-18 | 阿里巴巴集团控股有限公司 | 用于软件架构设计的系统和方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419790A (zh) * | 2021-06-22 | 2021-09-21 | 杭州安恒信息技术股份有限公司 | 业务数据处理方法、装置、设备及计算机可读存储介质 |
CN117311678A (zh) * | 2023-08-04 | 2023-12-29 | 四川大学 | 用于ai系统的程序模块序化组接功能合成的等效嵌入方法 |
CN117311678B (zh) * | 2023-08-04 | 2024-06-04 | 四川大学 | 用于ai系统的程序模块序化组接功能合成的等效嵌入方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111208991B (zh) | 2023-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103198009B (zh) | 一种通用测试方法、系统及相应装置 | |
O'Kane | A gentle introduction to ROS | |
US8108834B2 (en) | Defining and executing processes using declarative programming language constructs | |
US6505342B1 (en) | System and method for functional testing of distributed, component-based software | |
Cengic et al. | On formal analysis of IEC 61499 applications, Part A: Modeling | |
KR20110116178A (ko) | 태스크 실행 관리 | |
EP1425662A4 (en) | PROCESS FOR ADDING NEW SOFTWARE FEATURES WITHOUT MODIFICATION EXISTING CODES | |
CN111208991A (zh) | 基于工作流的程序开发方法、电子设备及存储介质 | |
Brumbulli et al. | Automatic verification of BPMN models | |
US20210232494A1 (en) | Network application testing using domain-specific natural language | |
Amirat et al. | Automatic generation of PROMELA code from sequence diagram with imbricate combined fragments | |
CN111259042B (zh) | 一种动态查询方法及系统 | |
Muldoon et al. | Towards pervasive intelligence: Reflections on the evolution of the agent factory framework | |
Simonsen et al. | Generating protocol software from cpn models annotated with pragmatics | |
CN112269571A (zh) | 模块化代码开发方法和装置 | |
US11429358B2 (en) | Representing asynchronous state machine in intermediate code | |
Tapp | Automating system-level data-interchange software through a system interface description language | |
JP2007122187A (ja) | プログラム・コード生成装置 | |
CN114546670A (zh) | 一种基于协程的函数式异步数据分发系统及方法 | |
US20200334054A1 (en) | Automatic repetition of context-specific code edits | |
Chen et al. | Android stack machine | |
Ramey | The bourne-again shell | |
Laganeckas | A Simulator for high level Petri Nets: Model based design and implementation | |
Laarej | Automatic Transformation-Based Model Checking of Multi-agent Systems | |
Galasso | Visual approach to design and development of event-based software for industrial 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |