CN117971378A - 工作流执行方法、装置、电子设备以及存储介质 - Google Patents
工作流执行方法、装置、电子设备以及存储介质 Download PDFInfo
- Publication number
- CN117971378A CN117971378A CN202211320888.8A CN202211320888A CN117971378A CN 117971378 A CN117971378 A CN 117971378A CN 202211320888 A CN202211320888 A CN 202211320888A CN 117971378 A CN117971378 A CN 117971378A
- Authority
- CN
- China
- Prior art keywords
- instance
- application module
- workflow
- execution
- trigger
- 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
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000003860 storage Methods 0.000 title claims abstract description 20
- 230000014509 gene expression Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 20
- 238000005516 engineering process Methods 0.000 abstract description 16
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例提供了一种工作流执行方法、装置、电子设备以及存储介质,涉及计算机技术领域。本发明实施例可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景。工作流执行方法包括:接收工作流实例的创建指示信息;执行顺序指示信息用于指示各应用模块实例串行或并行执行;若接收到执行工作流实例的触发指令,响应于触发指令,基于创建指示信息创建对应的工作流实例;基于执行顺序指示信息通过不同容器执行工作流实例中的各应用模块实例;针对工作流实例中的任一应用模块实例,若基于执行顺序指示信息确定应用模块实例的后置的应用模块实例包括至少两个,则同时执行后置的至少两个应用模块实例。
Description
技术领域
本申请涉及计算机领域,具体而言,本申请涉及一种工作流执行方法、装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术
工作流引擎是一种通过可视化拖拽编程的方式来设计流程,降低学习门槛,提高效率的低代码技术,用户可以通过工作流引擎创建工作流实例,通过创建的工作流实例来实现编程中的各种代码特性,例如条件判断等功能。
目前通过工作流引擎创建的工作流实例,在执行过程中,将整个工作流实例中的各个应用模块实例的组合作为一个整体一次性在容器上执行,无法支持较为复杂的高级功能,例如,无法支持至少两个程序实例的并发执行。
发明内容
本申请实施例的目的旨在提供一种能够在能够支持较为复杂的高级功能的工作流执行方法、装置、电子设备以及存储介质,为了实现上述目的,本申请实施例提供的技术方案如下:
一方面,本申请实施例提供了一种工作流执行的方法,该方法包括:
接收工作流实例的创建指示信息;其中,创建指示信息中包括待创建的工作流实例中各应用模块实例的信息以及各应用模块实例的执行顺序指示信息;执行顺序指示信息用于指示各应用模块实例串行或并行执行;
若接收到执行工作流实例的触发指令,响应于触发指令,基于创建指示信息创建对应的工作流实例;
基于执行顺序指示信息通过不同容器执行工作流实例中的各应用模块实例;
针对工作流实例中的任一应用模块实例,若基于执行顺序指示信息确定应用模块实例的后置的应用模块实例包括至少两个,则同时执行后置的至少两个应用模块实例。
在一些可能的实施方式中,容器包括多个第一容器和多个第二容器;
基于执行顺序指示信息通过不同容器执行工作流实例中的各应用模块实例,包括:
基于执行顺序指示信息从各应用模块实例中确定出并发实例和非并发实例;其中,并发实例为与需要与至少一个不同的应用程序实例同时执行的应用模块实例;
将非并发实例推送到第一队列,以基于执行顺序指示信息通过与第一队列对应的多个第一容器执行非并发实例;
将并发实例推送到第二队列,以基于执行顺序指示信息通过与第二队列对应的多个第二容器执行并发实例。
在一些可能的实施方式中,方法还包括:
针对工作流实例中的任一应用模块实例,若基于执行顺序指示信息确定应用模块实例的前置的应用模块实例包括至少两个,则获取前置的至少两个应用模块实例的执行状态;
若前置的至少两个应用模块实例的执行状态均为已执行,则执行应用模块实例。
在一些可能的实施方式中,方法还包括:
若前置的至少两个应用模块实例中存在至少一个应用模块实例的执行状态不是已执行,则重新获取前置的至少两个应用模块实例的执行状态,直至前置的至少两个应用模块实例的执行状态均为已执行,执行应用模块实例。
在一些可能的实施方式中,方法还包括:
每执行完一个应用模块实例,将应用模块实例的开始执行时间和结束执行时间更新到工作流实例的执行记录中,并将应用模块实例的执行状态更新为已执行。
在一些可能的实施方式中,创建指示信息还包括针对触发器的选择指令;
基于创建指示信息创建对应的工作流实例,包括:
将与选择指令对应的触发器作为工作流实例的起始节点;
若接收到执行工作流实例的触发指令之前,还包括:
通过触发器生成触发指令。
在一些可能的实施方式中,通过触发器生成触发指令,包括如下任一种:
若触发器接收到指定程序发送的触发指示,则生成触发指令;
若触发器检测到当前时间达到指定时间,则生成触发指令;
触发器生成对应的统一资源定位***URL地址,若触发器检测到针对URL地址的调用指示,则生成触发指令。
在一些可能的实施方式中,基于创建指示信息创建对应的工作流实例之后,还包括:
生成针对所创建的工作流实例的目标工作流标识,将目标工作流标识推送至工作流消息队列;其中,工作流消息队列中包括已创建的工作流实例的工作流标识;
通过触发器生成触发指令,包括:
若接收到针对目标工作流标识的执行指令,将工作流实例的触发器推送到应用模块实例的执行队列中,通过触发器生成触发指令。
在一些可能的实施方式中,针对每一应用模块实例,执行应用模块实例,包括:
获取与应用模块实例对应的路径语法表达式;
解析路径语法表达式,确定路径语法表达式指向的执行顺序在前的应用模块实例标识;
获取应用模块实例标识对应的输出数据;
基于所获取的输出数据确定应用模块实例的执行参数,并基于所确定的执行参数执行应用模块实例。
在一些可能的实施方式中,方法还包括:
每执行完一个应用模块实例,将应用模块实例的执行参数更新到全局变量数据中;
获取应用模块实例标识对应的输出数据,包括:
从全局变量数据中获取应用模块实例标识对应的输出数据;其中,全局变量数据中包括多个应用模块实例标识和每一应用模块实例标识对应的应用模块实例的执行参数;执行参数中包括应用模块实例的输出数据。
另一方面,本申请实施例提供了一种工作流执行装置,该装置包括:
接收模块,用于接收工作流实例的创建指示信息;其中,创建指示信息中包括待创建的工作流实例中各应用模块实例的信息以及各应用模块实例的执行顺序指示信息;执行顺序指示信息用于指示各应用模块实例串行或并行执行;
创建模块,用于若接收到执行工作流实例的触发指令,响应于触发指令,基于创建指示信息创建对应的工作流实例;
第一执行模块,用于基于执行顺序指示信息通过不同容器执行工作流实例中的各应用模块实例;
第二执行模块,用于针对工作流实例中的任一应用模块实例,若基于执行顺序指示信息确定应用模块实例的后置的应用模块实例包括至少两个,则同时执行后置的至少两个应用模块实例。
在一些可能的实施方式中,第一执行模块在基于执行顺序指示信息通过不同容器执行工作流实例中的各应用模块实例时,具体用于:
基于执行顺序指示信息从各应用模块实例中确定出并发实例和非并发实例;其中,并发实例为与需要与至少一个不同的应用程序实例同时执行的应用模块实例;
将非并发实例推送到第一队列,以基于执行顺序指示信息通过与第一队列对应的多个第一容器执行非并发实例;
将并发实例推送到第二队列,以基于执行顺序指示信息通过与第二队列对应的多个第二容器执行并发实例。
在一些可能的实施方式中,装置还包括第一获取模块,用于:
针对工作流实例中的任一应用模块实例,若基于执行顺序指示信息确定应用模块实例的前置的应用模块实例包括至少两个,则获取前置的至少两个应用模块实例的执行状态;
若前置的至少两个应用模块实例的执行状态均为已执行,则执行应用模块实例。
在一些可能的实施方式中,装置还包括第二获取模块,用于:
若前置的至少两个应用模块实例中存在至少一个应用模块实例的执行状态不是已执行,则重新获取前置的至少两个应用模块实例的执行状态,直至前置的至少两个应用模块实例的执行状态均为已执行,执行应用模块实例。
在一些可能的实施方式中,方法还包括第一更新模块,用于:
每执行完一个应用模块实例,将应用模块实例的开始执行时间和结束执行时间更新到工作流实例的执行记录中,并将应用模块实例的执行状态更新为已执行。
在一些可能的实施方式中,创建指示信息还包括针对触发器的选择指令;
创建模块在基于创建指示信息创建对应的工作流实例时,具体用于:
将与选择指令对应的触发器作为工作流实例的起始节点;
装置还包括生成模块,用于:
通过触发器生成触发指令。
在一些可能的实施方式中,生成模块在通过触发器生成触发指令时,具体用于如下任一种:
若触发器接收到指定程序发送的触发指示,则生成触发指令;
若触发器检测到当前时间达到指定时间,则生成触发指令;
触发器生成对应的统一资源定位***URL地址,若触发器检测到针对URL地址的调用指示,则生成触发指令。
在一些可能的实施方式中,装置还包括推送模块,用于:
生成针对所创建的工作流实例的目标工作流标识,将目标工作流标识推送至工作流消息队列;其中,工作流消息队列中包括已创建的工作流实例的工作流标识;
生成模块在通过触发器生成触发指令,用于:
若接收到针对目标工作流标识的执行指令,将工作流实例的触发器推送到应用模块实例的执行队列中,通过触发器生成触发指令。
在一些可能的实施方式中,针对每一应用模块实例,执行模块在执行应用模块实例时,用于:
获取与应用模块实例对应的路径语法表达式;
解析路径语法表达式,确定路径语法表达式指向的执行顺序在前的应用模块实例标识;
获取应用模块实例标识对应的输出数据;
基于所获取的输出数据确定应用模块实例的执行参数,并基于所确定的执行参数执行应用模块实例。
在一些可能的实施方式中,装置还包括第二更新模块,用于:
每执行完一个应用模块实例,将应用模块实例的执行参数更新到全局变量数据中;
执行模块在获取应用模块实例标识对应的输出数据时,用于:
从全局变量数据中获取应用模块实例标识对应的输出数据;其中,全局变量数据中包括多个应用模块实例标识和每一应用模块实例标识对应的应用模块实例的执行参数;执行参数中包括应用模块实例的输出数据。
另一方面,本申请实施例还提供了一种电子设备,该电子设备包括存储器和处理器,存储器中存储有计算机程序,处理器执行该计算机程序以实现本申请任一可选实施例中提供的方法。
另一方面,本申请实施例还提供了一种计算机可读存储介质,该存储介质中存储有计算机程序,该计算机程序被处理器执行时实现本申请任一可选实施例中提供的方法。
另一方面,本申请实施例还提供了一种计算机程序产品,该计算机产品包括计算机程序,该计算机程序被处理器执行时实现本申请任一可选实施例中提供的方法。
本申请实施例提供的技术方案带来的有益效果如下:
在执行工作流实例时,是通过不同的容器执行工作流实例中的各个应用模块实例,当基于所述执行顺序指示信息确定所述应用模块实例的后置的应用模块实例包括至少两个时,可以同时执行后置的至少两个应用模块实例,从而实现工作流实例中应用模块实例的并发执行。
进一步的,通过将非并发实例推送到第一队列,以基于执行顺序指示信息通过与第一队列对应的多个第一容器执行非并发实例,并将并发实例推送到第二队列,以基于执行顺序指示信息通过与第二队列对应的多个第二容器执行并发实例,可以保证需要同时执行至少两个并发实例的时候,存在足够数量的空闲的第二容器可以同时分别执行该并发实例,从而确保需要并发实例能够同时执行。
进一步的,通过不同的容器执行不同的应用模块实例,当应用模块实例包括至少两个的前置的应用模块实例时,可以获取所述前置的至少两个应用模块实例的执行状态,在前置的至少两个应用模块实例的执行状态均为已执行时,执行所述应用模块实例,从而实现工作流实例的汇聚功能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为现有技术提供的工作流执行方案的示意图;
图2为本申请实施例提供的工作流执行方法的应用环境示意图;
图3为本申请实施例提供的一种工作流执行方法的流程示意图;
图4为本申请提供的一个示例中的工作流执行的方案的示意图;
图5为本申请提供的一个示例中各应用模块实例的执行流程的示意图;
图6为本申请提供的一个示例中每一应用模块实例的参数的示意图;
图7为本申请提供的一个示例中针对不同的触发器进行选择的界面示意图;
图8为本申请提供的一个示例中的一种触发器的触发方案的示意图;
图9为本申请提供的一个示例中的一种触发器的设置界面的示意图;
图10为本申请提供的一个示例中的一种触发器的设置界面的示意图;
图11为本申请提供的一个示例中将工作流实例推送到消息队列的方案的示意图;
图12为本申请提供的一个示例中将应用模块实例推送到消息队列的方案的示意图;
图13为本申请提供的一个示例中全局变量数据的示意图;
图14为本申请提供的一个示例中的工作流执行方法的示意图;
图15为本申请实施例提供的一种工作流执行装置的结构示意图;
图16为本申请实施例所适用的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。在描述多个(两个或两个以上)项目时,如果没有明确限定多个项目之间的关系,这多个项目之间可以是指多个项目中的一个、多个或者全部,例如,对于“参数A包括A1、A2、A3”的描述,可以实现为参数A包括A1或A2或A3,还可以实现为参数A包括参数A1、A2、A3这三项中的至少两项。
为了更好的说明和理解本申请实施例提供的方案,首先对本申请实施例中所涉及的一些相关的技术用语进行介绍:
App(应用模块):封装了某些常用的功能或接口服务,在本申请中也可以当成一个原子任务,是工作流里面最基础的执行单元。
App实例(应用模块实例):应用模块实例是应用模块的具体实例化,两者的区别是应用模块是一个模板,使用默认参数,而应用模块实例是使用某个应用模块模板,并且使用具体的参数,两者的关系就像面向对象编程里的类和对象一样。
并发:这里指工作流中多个应用模块实例同时并行执行,而不是串行执行。
并发汇聚等待:这里指当多个应用模块实例同时并行执行时,在流程中个某个节点等待这些应用模块实例执行完成
触发器:是触发工作流运行的起始应用模块,包括:定时器、WebHook(一种触发器)等。
凭据:主要指一些重要的参数信息,包括账号密码、标识、密钥等信息,不同的应用模块可能对应不同的凭据参数。
工作流:通过流程图的方式表示实际的业务模型,以自动化的方式完成特定的工作场景。
工作流引擎:工作流引擎是流程的路由控-制器。一个流程对应着一个实际流转的业务,流程的执行路线受当前的应用模块实例数据的控制。流程定义时就指定了流程的流转规则。一般情况下,这些流转的规则是根据应用模块实例当前数据的变量表达式决定。工作流引擎要做的就是根据流程的执行的上下文环境,对这些变量表达式进行解析,找出流程的下一步执行方向。
工作流定义语言:指设计工作流时使用的语法规范。
路径语法表达式:可通过形如{{AppInstId.data.0.name}}的路径索引到工作流中各个应用模块实例的输入或输出数据,从而实现数据可在运行时动态解析引用。
执行任务:指具体的工作流实例,当工作流被触发执行时,会生成具体的执行任务,工作流会根据输入的参数不同,从而得到不同结果的执行任务。
消息队列:是一种数据先进先出的数据结构,例如:redis(一种数据库)等中间件,常用于分布式***中。
工作流引擎是一种通过可视化拖拽编程的方式来设计流程,降低学习门槛,提高效率的低代码技术。通过这种低代码的技术来实现编程中的各种代码特性,例如条件判断、for循环、并发等功能。以低代码的方式降低编程开发成本,让普通没有编程经验的人都可以通过可视化编程来实现各种流程特性。绝大部分的工作流引擎仅实现了比较简单的串行执行、条件判断、for循环等代码特性,对于一些复杂的高级功能,例如并发执行以及并发等待都未能较好支持。
为了通过可视化工作流引擎实现这一功能,目前传统的实现方案如下:
在执行工作流时,是将整个工作流实例一次性加载到内存中执行,如图1所示,只有执行完以后才从内存中退出。它是把工作流中每一个App实例(也可称为App原子任务)的组合当成一个整体去执行,而不是把工作流按照App实例进行拆分执行。所以它是流程级别的执行,而不是App实例级别的执行。同时,这种执行方式也不支持流程节点汇聚的功能,即无法在一个汇聚节点控制等待多个App实例执行结束。
目前绝大部分工作流引擎通过图遍历算法(例如广度有限算法)的方式实现,是基于流程级别的执行机制,而不是基于应用模块原子任务级别的细粒度执行。因为仅实现了编程语言中的串行执行、条件分支、for循环等语言特性,但是不能很好支持一些高级特性,例如应用模块原子任务的并发执行以及并发汇聚等待等编程语言特性。
而本申请实现了基于App实例这一细粒度级别的执行机制。使得每一个App实例可以在分布式集群中不同的引擎中执行,同时,通过Redis来记录汇聚应用模块的前置节点的各个执行状态来控制并发汇聚条件的判断。从而实现了App实例的并发执行以及并发汇聚等待控制。
可选的,本申请实施例所涉及的工作流执行可以基于云技术(Cloud technology)实现,比如,执行应用模块实例等步骤可以采用云技术实现。云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。云计算则是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
下面通过对几个可选的实施例的描述,对本申请提供的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
图2为本申请实施例提供的工作流执行方法的应用环境示意图。其中,应用环境可以包括终端201,终端201中设置有工作流引擎。具体的,用户输入创建指示信息到工作流引擎中,若接收到执行工作流实例的触发指令,响应于所述触发指令,工作流引擎基于所述创建指示信息创建对应的工作流实例;基于所述执行顺序指示信息通过不同容器执行所述工作流实例中的各应用模块实例;针对所述工作流实例中的任一应用模块实例,若基于所述执行顺序指示信息确定所述应用模块实例的后置的应用模块实例包括至少两个,则同时执行后置的至少两个应用模块实例。
上述场景工作流引擎是设置在终端中,在其他场景中,工作流引擎也可以设置于服务器中。本领域技术人员可知,上述的场景仅为一个示例中的场景,不对本申请的工作流执行方法的应用场景进行限制。
本技术领域技术人员可以理解,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器或服务器集群。
终端(也可以称为用户终端或用户设备)可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能语音交互设备(例如智能音箱)、可穿戴电子设备(例如智能手表)、车载终端、智能家电(例如智能电视)、AR/VR设备、飞行器等,但并不局限于此。本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
图3示出了本申请实施例提供的一种工作流执行方法的流程示意图,该方法可以由工作流引擎执行,如图3所示,以执行主体为工作流引擎为例,本申请提供的工作流执行方法,可以包括如下步骤:
步骤S301,接收工作流实例的创建指示信息。
其中,创建指示信息中包括待创建的工作流实例中各应用模块实例的信息以及各应用模块实例的执行顺序指示信息;执行顺序指示信息用于指示各应用模块实例串行或并行执行。
其中,应用模块实例串行执行是指不同的应用模块实例可以根据顺序依次先后执行;应用模块实例并行执行是指不同的应用模块实例可以同时执行。
具体的,执行顺序指示信息包括每一应用模块实例的前置的应用模块实例和后置的应用模块实例,即上一步执行的至少一个应用模块实例和下一步执行的应用模块实例。
例如,执行顺序指示信息可以包括“指向的上一个APP实例的唯一ID(Identitydocument,身份标识)”以及“指向的下一个APP实例的唯一ID”,这里的“上一个”指的是执行流程中步骤的上一步,而不是限定上一步的App实例只有一个。
步骤S302,若接收到执行工作流实例的触发指令,响应于触发指令,基于创建指示信息创建对应的工作流实例。
其中,触发指令可以是通过预设的触发器来触发,不同的触发器对应不同的触发条件,具体针对触发指令的生成将在下文进行进一步详细阐述。
其中,可以根据创建指示信息获取工作流实例中对应的各个应用模块实例,并按照执行顺序指示信息来设置各个应用模块实例之间的执行顺序。
具体的,创建指示信息中还可以包括针对每一应用模块实例的设置指示,包括每一应用模块实例具体使用的模板类型,例如HTTP(Hyper Text Transfer Protocol,超文本传输协议)请求等,不同的模板类型可以支持不同的功能。
步骤S303,基于执行顺序指示信息通过不同容器执行工作流实例中的各应用模块实例。
具体的,通过执行顺序指示信息可以确定不同的应用模块执行的先后或者并发的执行顺序,按照执行顺序来执行不同的应用模块实例。
例如,应用模块实例A的后置的应用模块实例为B,应用模块实例B的后置的应用模块实例为C和D,则先执行应用模块实例A,然后执行应用模块实例,再同时执行应用模块实例为C和D。
在具体实施过程中,可以通过不同的容器来执行不同的应用模块实例。可以理解的是,无论应用模块实例之间是串行执行还是并行执行,都可以通过不同的容器来执行。
步骤S304,针对工作流实例中的任一应用模块实例,若基于执行顺序指示信息确定应用模块实例的后置的应用模块实例包括至少两个,则同时执行后置的至少两个应用模块实例。
其中,后置的应用模块实例即为应用模块实例的下一步骤需要执行的应用模块实例。
具体的,若应用模块实例的后置的应用模块实例包括至少两个,说明该应用模块实例的下一步需要并发执行至少两个应用模块实例,则同时执行后置的至少两个应用模块实例。
如图4所示,在一个示例中,工作流实例包括应用模块实例A、应用模块实例B、应用模块实例C和应用模块实例D,执行顺序为先执行应用模块实例A,然后并发执行应用模块实例B和应用模块实例C,最后执行应用模块实例D,图中将工作流实例拆分应用模块实例进行执行,将各个应用模块实例依次推送如消息队中,并基于执行顺序指示信息通过不同容器执行工作流实例中的各应用模块实例,如图中可以通过容器1先执行应用模块实例A,然后通过容器2执行应用模块实例B,并同时通过容器3并发执行应用模块实例C,当应用模块实例B和应用模块实例C均执行完成时,再通过容器4执行应用模块实例D。
上述实施例中,在执行工作流实例时,是通过不同的容器执行工作流实例中的各个应用模块实例,当基于执行顺序指示信息确定应用模块实例的后置的应用模块实例包括至少两个时,可以同时执行后置的至少两个应用模块实例,从而实现工作流实例中应用模块实例的并发执行。
在一些可能的实施方式中,容器包括多个第一容器和多个第二容器。
步骤S303基于执行顺序指示信息通过不同容器执行工作流实例中的各应用模块实例,可以包括:
(1)基于执行顺序指示信息从各应用模块实例中确定出并发实例和非并发实例。
其中,并发实例为与需要与至少一个不同的应用模块实例同时执行的应用模块实例。
具体的,可以判断每一个应用模块实例的后置的应用模块实例的个数,也就是下一步执行的应用模块实例的个数,若后置的应用模块实例的个数为至少两个,则说明这两个后置的应用模块实例需要同时执行,则可以将这两个后置的应用模块实例均作为并发实例。
若应用模块实例不需要与任何另外的应用模块实例同时执行,则该应用模块实例为单独执行的应用模块实例,可以作为非并发实例。
(2)将非并发实例推送到第一队列,以基于执行顺序指示信息通过与第一队列对应的多个第一容器执行非并发实例。
其中,第一队列可以设为专用存储非并发实例的队列,并且第一队列中的非并发实例可以通过第一容器执行。
(3)将并发实例推送到第二队列,以基于执行顺序指示信息通过与第二队列对应的多个第二容器执行并发实例。
其中,第二队列可以设为专用存储并发实例的队列,第二队列中的并发实例可以通过不同的第二容器同时执行。
具体的,第二容器的数量大于或等于需要同时执行的并发实例的最大个数。
上述实施例中,通过将非并发实例推送到第一队列,以基于执行顺序指示信息通过与第一队列对应的多个第一容器执行非并发实例,并将并发实例推送到第二队列,以基于执行顺序指示信息通过与第二队列对应的多个第二容器执行并发实例,可以保证需要同时执行至少两个并发实例的时候,存在足够数量的空闲的第二容器可以同时分别执行该并发实例,从而确保需要并发实例能够同时执行。
在一些可能的实施方式中,方法还包括:
针对工作流实例中的任一应用模块实例,若基于执行顺序指示信息确定应用模块实例的前置的应用模块实例包括至少两个,则获取前置的至少两个应用模块实例的执行状态;
若前置的至少两个应用模块实例的执行状态均为已执行,则执行应用模块实例。
其中,前置的应用模块实例是指当前的应用模块实例的上一步骤对应的应用模块实例。
具体的,若应用模块实例的前置的应用模块实例包括至少两个,说明书应用模块实例需要汇聚前置的至少两个应用模块实例的执行结果来执行。
在具体实施过程中,若前置的至少两个应用模块实例均执行完成,则可以执行当前的应用模块实例;若前置的至少两个应用模块实例中存在至少一个还未完成,则需要等待直至前置的至少两个应用模块实例均执行完成。
具体的,若前置的至少两个应用模块实例中存在至少一个应用模块实例的执行状态不是已执行,即还未执行完成,则重新获取前置的至少两个应用模块实例的执行状态,直至前置的至少两个应用模块实例的执行状态均为已执行,执行应用模块实例。
上述实施例中,通过不同的容器执行不同的应用模块实例,当应用模块实例包括至少两个的前置的应用模块实例时,可以获取前置的至少两个应用模块实例的执行状态,在前置的至少两个应用模块实例的执行状态均为已执行时,执行应用模块实例,从而实现工作流实例的汇聚功能。
在一些可能的实施方式中,方法还包括:
每执行完一个应用模块实例,将应用模块实例的开始执行时间和结束执行时间更新到工作流实例的执行记录中,并将应用模块实例的执行状态更新为已执行。
具体的,执行记录可以是创建工作流实例时即生成,执行记录中可以包括每一应用模块实例的执行记录,可以包括开始执行时间、结束执行时间、执行状态、执行ID、每一应用模块实例对应的模板类型、应用模块实例的参数和执行数据等等,最初的执行记录中针对每一应用模块实例的执行记录都不完善,因为只有执行完之后才能够生成执行数据、开始执行时间和结束时间等等,但最初的执行记录中包括每一应用模块实例的执行顺序指示信息,也就是每一应用模块实例的上一个应用模块实例和下一个应用模块实例。
如下表1所示,在一个示例中,应用模块实例可以称为App实例,执行记录可以入下表所示:
表1:工作流实例的执行记录
其中,apps字段中记录的流程关系,即各应用模块实例的执行顺序指示信息,工作流引擎的执行就是依据其流程的指向关系进行遍历执行。
如图5所示,在一个示例中,工作流的流程关系,即各应用模块实例的执行顺序指示信息,可以如图5中所示,包括每一应用模块实例的执行记录,可以包括开始执行时间、结束执行时间、执行状态、执行ID、每一应用模块实例对应的模板类型、应用模块实例的参数和执行数据等等。
每一App实例的执行记录可以如下:
表1:应用模块实例的执行记录
在上述表1中的apps字段中,存储的是一个Json(JavaScript Object Notation,JS对象简谱)结构的数据,如图6所示,apps字段中记录了当前App实例在工作流中的位置,前置的App实例和后置的App实例,即图中所示的指向的上一个app实例ID和指向下一个app实例ID,还包括输入参数以及运行时的数据信息。
上述实施例阐述了应用模块实例的并发和汇聚过程,以下将结合实施例进一步详细阐述上述的触发器。
在一些可能的实施方式中,创建指示信息还包括针对触发器的选择指令。
其中,不同的触发器对应不同的触发条件,例如可以是到达预设时间自动触发,还可以是根据用户的指令触发等。
步骤S302基于创建指示信息创建对应的工作流实例,可以包括:
将与选择指令对应的触发器作为工作流实例的起始节点。
具体的,用户选择对应的触发器,将触发器作为起始节点,即触发器触发工作流实例中的其他应用模块实例的执行。
步骤S303若接收到执行工作流实例的触发指令之前,还可以包括:
通过触发器生成触发指令。
具体的,不同的触发器生成触发指令的方式不同。
如图7所示,用户可以直接从已有的多种不同的候选触发器中选择触发器,候选触发器可以包括定时器、webhook触发器、手动触发器、邮件触发器、应用程序触发器等等。
在一些可能的实施方式中,通过触发器生成触发指令,可以包括如下任一种:
若触发器接收到指定程序发送的触发指示,则生成触发指令;
若触发器检测到当前时间达到指定时间,则生成触发指令;
触发器生成对应的统一资源定位***URL地址,若触发器检测到针对URL地址的调用指示,则生成触发指令。
以下将针对不同触发器的触发流程进行进一步阐述。
在一种实施方式中,触发器可以包括WebHook(网页开发中的网络钩子)触发器,当使用WebHook触发器作为工作流的起始节点时。这时,***会为当前工作流创建分配一个唯一的Token(标识)来构成一个唯一的WebHook URL(uniform resource locator,统一资源定位***)请求地址。
每一个WebHook URL对应一个工作流。当对这个URL发起POST请求时,工作流引擎API服务会接收到HTTP请求并获取到对应的工作流进行执行,如图8所示,当WebHook对应的URL接收到POST请求时,会获取对应的Token,根据Token查询唯一对应的工作流,然后确定是否需要启用工作流实例,若是,则获取POST请求参数,根据POST请求参数构建执行记录,并异步发起执行工作流实例,返回执行ID。
在另一种实施方式中,触发器可以包括指令触发器,例如,一个应用程序指令触发器,可以在指定的应用程序上申请并注册一个客服账号,并将这个客服账号的回调地址指向工作流引擎的回调API。则后续所有向应用程序的客服账号发送的消息都会通过企业微信转发给如下的API回调接口。
具体的,如图9所示,创建应用程序指令,每个指令名称是唯一的,跟当前的工作流一一对应。同时,可以授权指令给具体用户,只有有权限的用户才可以查看到指令并执行指令。用户可以在应用程序的客服账号上通过默认的三个***指令来查看自己可以使用的指令。通过指令和工作流一一对应的关系,就可以获取到对应的工作流。然后获取指令的授权成员,判断当前成员是否有权限执行指令。获取到工作流后,则把消息返回的指令内容作为参数传递给工作流,并创建执行实例让工作流引擎执行,并返回响应的结果给用户。
在另一种实施方式中,触发器可以包括周期任务触发器,例如,可以是cron触发器(一种触发器),如图10所示,用户可以指定周期任务触发器的预设时间或者预设周期,到了指定的预设时间后就会创建工作流执行实例执行。
在一些可能的实施方式中,基于创建指示信息创建对应的工作流实例之后,还可以包括:
生成针对所创建的工作流实例的目标工作流标识,将目标工作流标识推送至工作流消息队列。
其中,工作流消息队列中包括已创建的工作流实例的工作流标识。
具体的,如图11所示,每创建一个工作流实例,即生成一个工作流实例标识。将针对当前创建的工作流实例的目标工作流实例标识推送到工作流消息队列中。
通过触发器生成触发指令,可以包括:
若接收到针对目标工作流标识的执行指令,将工作流实例的触发器推送到应用模块实例的执行队列中,通过触发器生成触发指令。
具体的,若接收到针对目标工作流标识的执行指令,即该工作流实例可以执行了,此时可以将工作流实例中的各个应用模块实例的执行状态设置为待执行,如图12所示,将工作流实例中的各个应用模块实例依据执行顺序推送到应用模块实例消息队列中,即图中所示的app原子任务消息队列中,若再接收到触发器生成的触发指令,也就是工作流实例的开始节点生成的触发指令,即可开始通过不同的容器执行工作流实例。
上述实施例阐述了执行工作流实例的不同触发条件,以下将结合实施例进一步阐述工作流实例中的应用模块实例的具体执行过程。
在一些可能的实施方式中,针对每一应用模块实例,步骤S303中的执行应用模块实例,可以包括:
获取与应用模块实例对应的路径语法表达式;
解析路径语法表达式,确定路径语法表达式指向的执行顺序在前的应用模块实例标识;
获取应用模块实例标识对应的输出数据;
基于所获取的输出数据确定应用模块实例的执行参数,并基于所确定的执行参数执行应用模块实例。
其中,路径语法表达式可以用于定位到具体的实体的数据。
具体的,每一应用模块实例包括对应的执行参数,如参数值、参数类型、参数描述等等,其中,参数值既可以使用常量(数字或字符串),也可以使用路径语法表达式引用前面任意一个app实例的输出结果。
具体的,可以预先构建每一应用模块实例和对应的执行参数之间的关系,生成全局变量数据,当应用模块实例还未执行时,执行参数可以为默认数值或者为空,或者为0,每执行完一个应用模块实例,将应用模块实例的执行参数更新到全局变量数据中。
获取应用模块实例标识对应的输出数据,可以包括:
从全局变量数据中获取应用模块实例标识对应的输出数据。
其中,全局变量数据中包括多个应用模块实例标识和每一应用模块实例标识对应的应用模块实例的执行参数;执行参数中包括应用模块实例的输出数据。
具体的,由于路径语法表达式引用的是执行流程在前的任意一个应用模块实例的输出数据,此时输出数据已经更新,因此可以基于流程在前的应用模块实例的输出数据来确定应用模块实例的执行参数。
如图13所示,图13中为全局变量数据的示意图,全局变量数据中包括多个应用模块实例标识,即图中所示的App实例ID,以及每一应用模块实例标识对应的应用模块实例的执行参数,即图中所示的App实例输入、输出数据。
为了更清楚的阐述本申请的工作流执行方法,以下将结合示例进行进一步说明。
如图14所示,在一个示例中,本申请的工作流执行方法,可以包括如下步骤:
通过触发器生成触发指令,触发工作流;其中,触发器可以包括Webhook触发器、周期任务触发器和应用程序触发器中的至少一种;
响应于触发指令,基于创建指示信息创建对应的工作流实例,即图中的创建工作流执行实例;
获取并解析工作流实例,即图中所示的获取执行实例、解析执行实例;
初始化工作流实例中各个应用模块实例的的初始状态,即图中所示的初始化各个App原子任务的初始状态;
将触发器并入队列,即图中所示的获取起始App原子任务并入队列;
基于执行顺序指示信息通过不同容器执行工作流实例中的各应用模块实例;
每执行一个应用模块实例,即设置应用模块实例的状态为执行中,即图中所示的设置App原子任务的状态为执行中;
判断当前的应用模块实例是否为并发汇聚App,即基于执行顺序指示信息判断应用模块实例的前置的应用模块实例是否包括至少两个;
若是,则获取当前的应用模块实例的前置的应用模块实例,并获取前置的至少两个应用模块实例的执行状态,即图中所示的获取指向并发汇聚App的前置App,获取前置App的执行状态;
判断是否所有的前置App都已经执行结束,若是,则执行下一个应用模块实例;若否,则判断当前的工作流实例是否执行完成;
若当前的应用模块实例不是并发汇聚App,则获取与应用模块实例对应的路径语法表达式,并解析路径语法表达式;
确定路径语法表达式指向的执行顺序在前的应用模块实例标识,获取应用模块实例标识对应的输出数据;基于所获取的输出数据确定应用模块实例的执行参数,并基于所确定的执行参数执行应用模块实例,即图中所示的执行App原子任务;
每执行完成一个应用模块实例,即判断当前的工作流实例是否执行结束,若是,则清理各个应用模块实例缓存,若否,则继续执行下一个应用模块实例。
上述的工作流执行方法,在执行工作流实例时,是通过不同的容器执行工作流实例中的各个应用模块实例,当基于执行顺序指示信息确定应用模块实例的后置的应用模块实例包括至少两个时,可以同时执行后置的至少两个应用模块实例,从而实现工作流实例中应用模块实例的并发执行。
进一步的,通过将非并发实例推送到第一队列,以基于执行顺序指示信息通过与第一队列对应的多个第一容器执行非并发实例,并将并发实例推送到第二队列,以基于执行顺序指示信息通过与第二队列对应的多个第二容器执行并发实例,可以保证需要同时执行至少两个并发实例的时候,存在足够数量的空闲的第二容器可以同时分别执行该并发实例,从而确保需要并发实例能够同时执行。
进一步的,通过不同的容器执行不同的应用模块实例,当应用模块实例包括至少两个的前置的应用模块实例时,可以获取前置的至少两个应用模块实例的执行状态,在前置的至少两个应用模块实例的执行状态均为已执行时,执行应用模块实例,从而实现工作流实例的汇聚功能。
如图15所示,在一些可能的实施方式中,提供了一种工作流执行装置,包括:
接收模块1501,用于接收工作流实例的创建指示信息;其中,所述创建指示信息中包括待创建的工作流实例中各应用模块实例的信息以及各应用模块实例的执行顺序指示信息;所述执行顺序指示信息用于指示各所述应用模块实例串行或并行执行;
创建模块1502,用于若接收到执行工作流实例的触发指令,响应于所述触发指令,基于所述创建指示信息创建对应的工作流实例;
第一执行模块1503,用于基于所述执行顺序指示信息通过不同容器执行所述工作流实例中的各应用模块实例;
第二执行模块1504,用于针对所述工作流实例中的任一应用模块实例,若基于所述执行顺序指示信息确定所述应用模块实例的后置的应用模块实例包括至少两个,则同时执行后置的至少两个应用模块实例。
在一些可能的实施方式中,第一执行模块1503在基于执行顺序指示信息通过不同容器执行工作流实例中的各应用模块实例时,具体用于:
基于执行顺序指示信息从各应用模块实例中确定出并发实例和非并发实例;其中,并发实例为与需要与至少一个不同的应用程序实例同时执行的应用模块实例;
将非并发实例推送到第一队列,以基于执行顺序指示信息通过与第一队列对应的多个第一容器执行非并发实例;
将并发实例推送到第二队列,以基于执行顺序指示信息通过与第二队列对应的多个第二容器执行并发实例。
在一些可能的实施方式中,所述装置还包括第一获取模块,用于:
针对所述工作流实例中的任一应用模块实例,若基于所述执行顺序指示信息确定所述应用模块实例的前置的应用模块实例包括至少两个,则获取所述前置的至少两个应用模块实例的执行状态;
若前置的至少两个应用模块实例的执行状态均为已执行,则执行所述应用模块实例。
在一些可能的实施方式中,所述装置还包括第二获取模块,用于:
若前置的至少两个应用模块实例中存在至少一个应用模块实例的执行状态不是已执行,则重新获取所述前置的至少两个应用模块实例的执行状态,直至前置的至少两个应用模块实例的执行状态均为已执行,执行所述应用模块实例。
在一些可能的实施方式中,所述方法还包括第一更新模块,用于:
每执行完一个应用模块实例,将所述应用模块实例的开始执行时间和结束执行时间更新到所述工作流实例的执行记录中,并将所述应用模块实例的执行状态更新为已执行。
在一些可能的实施方式中,所述创建指示信息还包括针对触发器的选择指令;
所述创建模块1502在基于所述创建指示信息创建对应的工作流实例时,具体用于:
将与所述选择指令对应的触发器作为所述工作流实例的起始节点;
所述装置还包括生成模块,用于:
通过所述触发器生成所述触发指令。
在一些可能的实施方式中,所述生成模块在通过所述触发器生成所述触发指令时,具体用于如下任一种:
若所述触发器接收到指定程序发送的触发指示,则生成所述触发指令;
若所述触发器检测到当前时间达到指定时间,则生成所述触发指令;
所述触发器生成对应的统一资源定位***URL地址,若所述触发器检测到针对所述URL地址的调用指示,则生成所述触发指令。
在一些可能的实施方式中,所述装置还包括推送模块,用于:
生成针对所创建的工作流实例的目标工作流标识,将所述目标工作流标识推送至工作流消息队列;其中,所述工作流消息队列中包括已创建的工作流实例的工作流标识;
所述生成模块在通过所述触发器生成所述触发指令,用于:
若接收到针对所述目标工作流标识的执行指令,将所述工作流实例的触发器推送到应用模块实例的执行队列中,通过所述触发器生成所述触发指令。
在一些可能的实施方式中,针对每一应用模块实例,执行模块在执行所述应用模块实例时,用于:
获取与所述应用模块实例对应的路径语法表达式;
解析所述路径语法表达式,确定所述路径语法表达式指向的执行顺序在前的应用模块实例标识;
获取所述应用模块实例标识对应的输出数据;
基于所获取的输出数据确定所述应用模块实例的执行参数,并基于所确定的执行参数执行所述应用模块实例。
在一些可能的实施方式中,所述装置还包括第二更新模块,用于:
每执行完一个应用模块实例,将所述应用模块实例的执行参数更新到所述全局变量数据中;
所述执行模块在获取所述应用模块实例标识对应的输出数据时,用于:
从全局变量数据中获取所述应用模块实例标识对应的输出数据;其中,所述全局变量数据中包括多个应用模块实例标识和每一应用模块实例标识对应的应用模块实例的执行参数;所述执行参数中包括所述应用模块实例的输出数据。
上述的工作流执行装置,在执行工作流实例时,是通过不同的容器执行工作流实例中的各个应用模块实例,当基于所述执行顺序指示信息确定所述应用模块实例的后置的应用模块实例包括至少两个时,可以同时执行后置的至少两个应用模块实例,从而实现工作流实例中应用模块实例的并发执行。
进一步的,通过将非并发实例推送到第一队列,以基于执行顺序指示信息通过与第一队列对应的多个第一容器执行非并发实例,并将并发实例推送到第二队列,以基于执行顺序指示信息通过与第二队列对应的多个第二容器执行并发实例,可以保证需要同时执行至少两个并发实例的时候,存在足够数量的空闲的第二容器可以同时分别执行该并发实例,从而确保需要并发实例能够同时执行。
进一步的,通过不同的容器执行不同的应用模块实例,当应用模块实例包括至少两个的前置的应用模块实例时,可以获取所述前置的至少两个应用模块实例的执行状态,在前置的至少两个应用模块实例的执行状态均为已执行时,执行所述应用模块实例,从而实现工作流实例的汇聚功能。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行存储器中存储的计算机程序时可实现本申请任一可选实施例中的方法。
图15示出了本发明实施例所适用的一种电子设备的结构示意图,如图15所示,该电子设备可以为服务器或者用户终端,该电子设备可以用于实施本发明任一实施例中提供的方法。
如图16中所示,该电子设备1600主要可以包括至少一个处理器1601(图16中示出了一个)、存储器1602、通信模块1603和输入/输出接口1604等组件,可选的,各组件之间可以通过总线1605实现连接通信。需要说明的是,图16中示出的该电子设备1600的结构只是示意性的,并不构成对本申请实施例提供的方法所适用的电子设备的限定。
其中,存储器1602可以用于存储操作***和应用程序等,应用程序可以包括在被处理器1601调用时实现本发明实施例所示方法的计算机程序,还可以包括用于实现其他功能或服务的程序。存储器1602可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和计算机程序的其他类型的动态存储设备,也可以是EEPROM(ElectricallyErasable Programmable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(CompactDisc Read Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
处理器1601通过总线1605与存储器1602连接,通过调用存储器1602中所存储的应用程序实现相应的功能。其中,处理器1601可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application Specific Integrated Circuit,专用集成电路),FPGA(FieldProgrammable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合,其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1601也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
电子设备1600可以通过通信模块1603(可以包括但不限于网络接口等组件)连接到网络,以通过网络与其它设备(如用户终端或服务器等)的通信,实现数据的交互,如向其他设备发送数据或从其他设备接收数据。其中,通信模块1603可以包括有线网络接口和/或无线网络接口等,即通信模块可以包括有线通信模块或无线通信模块中的至少一项。
电子设备1600可以通过输入/输出接口1604可以连接所需要的输入/输出设备,如键盘、显示设备等,电子设备160自身可以具有显示设备,还可以通过接口1604外接其他显示设备。可选的,通过该接口1604还可以连接存储装置,如硬盘等,以可以将电子设备1600中的数据存储到存储装置中,或者读取存储装置中的数据,还可以将存储装置中的数据存储到存储器1602中。可以理解的,输入/输出接口1604可以是有线接口,也可以是无线接口。根据实际应用场景的不同,与输入/输出接口1604连接的设备,可以是电子设备1600的组成部分,也可以是在需要时与电子设备1600连接的外接设备。
用于连接各组件的总线1605可以包括一通路,在上述组件之间传送信息。总线1605可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。根据功能的不同,总线1605可以分为地址总线、数据总线、控制总线等。
可选的,对于本发明实施例所提供的方案而言,存储器1602可以用于存储执行本发明方案的计算机程序,并由处理器1601来运行,处理器1601运行该计算机程序时实现本发明实施例提供的方法或装置的动作。
基于与本申请实施例提供的方法相同的原理,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的相应内容。
本申请实施例还提供了一种计算机程序产品,该产品包括计算机程序,该计算机程序被处理器执行时可实现前述方法实施例的相应内容。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (13)
1.一种工作流执行方法,其特征在于,包括:
接收工作流实例的创建指示信息;其中,所述创建指示信息中包括待创建的工作流实例中各应用模块实例的信息以及各应用模块实例的执行顺序指示信息;所述执行顺序指示信息用于指示各所述应用模块实例串行或并行执行;
若接收到执行工作流实例的触发指令,响应于所述触发指令,基于所述创建指示信息创建对应的工作流实例;
基于所述执行顺序指示信息通过不同容器执行所述工作流实例中的各应用模块实例;
针对所述工作流实例中的任一应用模块实例,若基于所述执行顺序指示信息确定所述应用模块实例的后置的应用模块实例包括至少两个,则同时执行后置的至少两个应用模块实例。
2.根据权利要求1所述的工作流执行方法,其特征在于,所述容器包括多个第一容器和多个第二容器;
所述基于所述执行顺序指示信息通过不同容器执行所述工作流实例中的各应用模块实例,包括:
基于所述执行顺序指示信息从各应用模块实例中确定出并发实例和非并发实例;其中,所述并发实例为与需要与至少一个不同的应用程序实例同时执行的应用模块实例;
将所述非并发实例推送到第一队列,以基于所述执行顺序指示信息通过与第一队列对应的多个第一容器执行所述非并发实例;
将所述并发实例推送到第二队列,以基于所述执行顺序指示信息通过与第二队列对应的多个第二容器执行所述并发实例。
3.根据权利要求1所述的工作流执行方法,其特征在于,所述方法还包括:
针对所述工作流实例中的任一应用模块实例,若基于所述执行顺序指示信息确定所述应用模块实例的前置的应用模块实例包括至少两个,则获取所述前置的至少两个应用模块实例的执行状态;
若前置的至少两个应用模块实例的执行状态均为已执行,则执行所述应用模块实例。
4.根据权利要求3所述的工作流执行方法,其特征在于,所述方法还包括:
若前置的至少两个应用模块实例中存在至少一个应用模块实例的执行状态不是已执行,则重新获取所述前置的至少两个应用模块实例的执行状态,直至前置的至少两个应用模块实例的执行状态均为已执行,执行所述应用模块实例。
5.根据权利要求3或4所述的工作流执行方法,其特征在于,所述方法还包括:
每执行完一个应用模块实例,将所述应用模块实例的开始执行时间和结束执行时间更新到所述工作流实例的执行记录中,并将所述应用模块实例的执行状态更新为已执行。
6.根据权利要求1所述的工作流执行方法,其特征在于,所述创建指示信息还包括针对触发器的选择指令;
所述基于所述创建指示信息创建对应的工作流实例,包括:
将与所述选择指令对应的触发器作为所述工作流实例的起始节点;
所述若接收到执行工作流实例的触发指令之前,还包括:
通过所述触发器生成所述触发指令。
7.根据权利要求6所述的工作流执行方法,其特征在于,所述通过所述触发器生成所述触发指令,包括如下任一种:
若所述触发器接收到指定程序发送的触发指示,则生成所述触发指令;
若所述触发器检测到当前时间达到指定时间,则生成所述触发指令;
所述触发器生成对应的统一资源定位***URL地址,若所述触发器检测到针对所述URL地址的调用指示,则生成所述触发指令。
8.根据权利要求6所述的工作流执行方法,其特征在于,所述基于所述创建指示信息创建对应的工作流实例之后,还包括:
生成针对所创建的工作流实例的目标工作流标识,将所述目标工作流标识推送至工作流消息队列;其中,所述工作流消息队列中包括已创建的工作流实例的工作流标识;
所述通过所述触发器生成所述触发指令,包括:
若接收到针对所述目标工作流标识的执行指令,将所述工作流实例的触发器推送到应用模块实例的执行队列中,通过所述触发器生成所述触发指令。
9.根据权利要求1所述的工作流执行方法,其特征在于,针对每一应用模块实例,执行所述应用模块实例,包括:
获取与所述应用模块实例对应的路径语法表达式;
解析所述路径语法表达式,确定所述路径语法表达式指向的执行顺序在前的应用模块实例标识;
获取所述应用模块实例标识对应的输出数据;
基于所获取的输出数据确定所述应用模块实例的执行参数,并基于所确定的执行参数执行所述应用模块实例。
10.根据权利要求9所述的工作流执行方法,其特征在于,所述方法还包括:
每执行完一个应用模块实例,将所述应用模块实例的执行参数更新到所述全局变量数据中;
所述获取所述应用模块实例标识对应的输出数据,包括:
从全局变量数据中获取所述应用模块实例标识对应的输出数据;其中,所述全局变量数据中包括多个应用模块实例标识和每一应用模块实例标识对应的应用模块实例的执行参数;所述执行参数中包括所述应用模块实例的输出数据。
11.一种工作流执行装置,其特征在于,包括:
接收模块,用于接收工作流实例的创建指示信息;其中,所述创建指示信息中包括待创建的工作流实例中各应用模块实例的信息以及各应用模块实例的执行顺序指示信息;所述执行顺序指示信息用于指示各所述应用模块实例串行或并行执行;
创建模块,用于若接收到执行工作流实例的触发指令,响应于所述触发指令,基于所述创建指示信息创建对应的工作流实例;
第一执行模块,用于基于所述执行顺序指示信息通过不同容器执行所述工作流实例中的各应用模块实例;
第二执行模块,用于针对所述工作流实例中的任一应用模块实例,若基于所述执行顺序指示信息确定所述应用模块实例的后置的应用模块实例包括至少两个,则同时执行后置的至少两个应用模块实例。
12.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-10任一项所述工作流执行方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-10任一项所述的工作流执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211320888.8A CN117971378A (zh) | 2022-10-26 | 2022-10-26 | 工作流执行方法、装置、电子设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211320888.8A CN117971378A (zh) | 2022-10-26 | 2022-10-26 | 工作流执行方法、装置、电子设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117971378A true CN117971378A (zh) | 2024-05-03 |
Family
ID=90848531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211320888.8A Pending CN117971378A (zh) | 2022-10-26 | 2022-10-26 | 工作流执行方法、装置、电子设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117971378A (zh) |
-
2022
- 2022-10-26 CN CN202211320888.8A patent/CN117971378A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180365254A1 (en) | Method and apparatus for processing information flow data | |
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
US11775269B2 (en) | Generating a synchronous digital circuit from a source code construct defining a function call | |
CN111221643A (zh) | 任务处理方法和任务处理装置 | |
CN110781180B (zh) | 一种数据筛选方法和数据筛选装置 | |
CN111813517B (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
CN110633959A (zh) | 基于图结构的审批任务创建方法、装置、设备及介质 | |
CN111988429A (zh) | 算法调度方法以及*** | |
CN113094125B (zh) | 业务流程处理方法、装置、服务器及存储介质 | |
CN110704099B (zh) | 联盟链的构建方法、装置和电子设备 | |
CN113448570A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112860412A (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN117632395A (zh) | 工作流处理方法、装置、设备、存储介质和程序产品 | |
CN112052152A (zh) | 一种模拟测试的方法和装置 | |
CN117971378A (zh) | 工作流执行方法、装置、电子设备以及存储介质 | |
CN115563160A (zh) | 数据处理方法、装置、计算机设备和计算机可读存储介质 | |
CN111813407B (zh) | 游戏开发方法、游戏运行方法、装置和电子设备 | |
CN109150993B (zh) | 一种获取网络请求切面的方法、终端装置及存储介质 | |
CN112035581A (zh) | 基于模型的任务处理方法、装置、设备和介质 | |
CN117435367B (zh) | 用户行为处理方法、装置、设备、存储介质和程序产品 | |
CN112532750B (zh) | 一种大数据推送处理方法、***及云平台 | |
CN114189365B (zh) | 基于字段映射的通用多租户业务授权方法和装置 | |
CN113965900B (zh) | 流量资源动态扩容的方法、装置、计算设备及存储介质 | |
CN106557359B (zh) | 一种任务调度方法及*** | |
CN117667322A (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 |