CN115965227A - 工作流的数据处理方法、装置、设备、存储介质及产品 - Google Patents
工作流的数据处理方法、装置、设备、存储介质及产品 Download PDFInfo
- Publication number
- CN115965227A CN115965227A CN202111182907.0A CN202111182907A CN115965227A CN 115965227 A CN115965227 A CN 115965227A CN 202111182907 A CN202111182907 A CN 202111182907A CN 115965227 A CN115965227 A CN 115965227A
- Authority
- CN
- China
- Prior art keywords
- data
- application
- workflow
- execution
- executed
- 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
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供了一种工作流的数据处理方法、装置、设备、存储介质及产品,该工作流的数据处理方法可应用于云技术、云安全、人工智能和智慧交通等各种应用场景。该工作流的数据处理方法包括:获取待执行工作流的触发参数,基于触发参数,执行待执行工作流中的第1个应用,得到1个执行数据;通过迭代i执行以下处理:基于前i‑1个应用对应的i‑1个执行数据,对第i个应用的数据表达式进行解析,得到第i个应用实例数据,其中,数据表达式包括引用数据表达式和数据处理表达式;基于第i个应用实例数据,执行第i个应用,得到i个执行数据;基于迭代i获得的N个执行数据,确定待执行工作流的执行结果。通过本申请,能够提升工作流的执行效率。
Description
技术领域
本申请涉及计算机应用领域中的数据处理技术,尤其涉及一种工作流的数据处理方法、装置、设备、存储介质及产品。
背景技术
由于工作流的执行是通过多个应用的协同工作来实现的,因此,在执行工作流的过程中,针对当前应用的执行,常常涉及到对引用的应用所对应的执行数据进行处理的情况,比如,求均值和求最大值等。
一般来说,为了对引用的应用所对应的执行数据进行处理,通常是人为地对引用的应用所对应的执行数据进行处理,再利用处理后的数据进行当前应用的执行,从而实现工作流的执行。然而,上述工作流执行的过程中,由于对引用的应用所对应的执行数据进行处理是通过人工进行的,导致工作流的执行效率较低。
发明内容
本申请实施例提供一种工作流的数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品,能够提升工作流的执行效率。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种工作流的数据处理方法,包括:
获取待执行工作流的触发参数,基于所述触发参数,执行所述待执行工作流中的第1个应用,其中,所述待执行工作流为N个所述应用协同处理数据的流程,N为大于1的正整数,第1个所述应用为N个所述应用中最先执行的所述应用;
通过迭代i执行以下处理,其中,1<i≤N,且i是以迭代步幅为1的单调递增的整数变量,以及i是指所述应用的执行顺序:
基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的数据表达式进行解析,得到第i个应用实例数据,其中,所述数据表达式包括引用数据表达式和数据处理表达式,所述引用数据表达式用于获取第i个所述应用的引用数据,所述数据处理表达式用于对所述引用数据进行处理;
基于第i个所述应用实例数据,执行第i个所述应用,得到i个所述执行数据;
基于迭代i获得的N个所述执行数据,确定所述待执行工作流的执行结果。
本申请实施例提供一种工作流的数据处理装置,包括:
应用执行模块,用于获取待执行工作流的触发参数,基于所述触发参数,执行所述待执行工作流中的第1个应用,得到1个执行数据,其中,所述待执行工作流为N个所述应用协同处理数据的流程,N为大于1的正整数,第1个所述应用为N个所述应用中最先执行的所述应用;
迭代执行模块,用于通过迭代i执行以下处理,其中,1<i≤N,且i是以迭代步幅为1的单调递增的整数变量,以及i是指所述应用的执行顺序:基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的数据表达式进行解析,得到第i个应用实例数据,其中,所述数据表达式包括引用数据表达式和数据处理表达式,所述引用数据表达式用于获取第i个所述应用的引用数据,所述数据处理表达式用于对所述引用数据进行处理;基于第i个所述应用实例数据,执行第i个所述应用,得到i个所述执行数据;
结果获取模块,用于基于迭代i获得的N个所述执行数据,确定所述待执行工作流的执行结果。
在本申请实施例中,所述迭代执行模块,还用于基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的所述引用数据表达式进行解析,得到所述引用数据;基于所述数据处理表达式,对所述引用数据进行处理,得到第i个所述应用实例数据。
在本申请实施例中,所述迭代执行模块,还用于基于第i个所述应用的所述引用数据表达式,确定引用的所述应用对应的数据参数,其中,引用的所述应用属于前i-1个所述应用;从i-1个所述执行数据中,确定引用的所述应用对应的所述执行数据;基于引用的所述应用对应的所述执行数据,确定所述数据参数对应的所述引用数据。
在本申请实施例中,所述迭代执行模块,还用于将引用的所述应用对应的所述执行数据转换为待解析格式的数据,得到待解析执行数据;解析所述待解析执行数据,确定所述数据参数中的每个引用参数对应的数据类型,其中,所述数据参数包括一个或多个所述引用参数,所述数据类型为字符串类型、字符串序列类型和值类型中的一种或多种;基于所述数据类型,解析所述引用参数对应的数据,得到引用参数数据;将与所述数据参数对应的一个或多个所述引用参数数据,确定为所述引用数据。
在本申请实施例中,当所述数据类型包括所述字符串序列类型时,所述迭代执行模块,还用于基于所述字符串序列类型,遍历所述引用参数,并对遍历到的子引用参数进行数据解析,得到子引用参数数据,其中,所述引用参数为多个所述子引用参数构成的序列,所述子引用参数与所述字符串序列类型的序列单元对应;当完成对所引用参数的遍历时,将与所述引用参数对应的多个所述子引用参数数据,确定为所述引用参数数据。
在本申请实施例中,所述工作流的数据处理装置还包括工作流转换模块,用于获取业务工作流,其中,所述业务工作流为流程图形式的业务模型;将所述业务工作流转换为待解析格式的数据,得到所述待执行工作流。
在本申请实施例中,所述工作流的数据处理装置还包括工作流触发模块,用于从所述待执行工作流包括的N个所述应用中,确定触发应用;将所述触发应用确定为第1个所述应用。
在本申请实施例中,所述迭代执行模块,还用于当i小于N时,从所述待执行工作流中确定第i个所述应用所指向的第i+1个所述应用;将第i+1个所述应用压入任务队列;从所述任务队列中读取第i+1个所述应用;基于i个所述执行数据,对读取出的第i+1个所述应用的所述数据表达式进行解析,得到第i+1个所述执行数据,N个所述执行数据包括第i+1个所述执行数据。
在本申请实施例中,所述工作流的数据处理装置还包括错误执行模块,用于基于第i个所述应用实例数据,执行第i个所述应用,得到第i个执行错误信息;基于第i个所述执行错误信息,对执行错误次数执行增量处理;当处理后的所述执行错误次数小于等于指定次数时,执行错误应用,其中,所述错误应用用于确定第i个所述执行错误信息对应的处理方式;当处理后的所述执行错误次数大于所述指定次数时,结束所述待执行工作流的处理流程。
在本申请实施例中,所述工作流的数据处理装置还包括工作流停止模块,用于响应于针对所述待执行工作流的停止指令,结束所述待执行工作流的处理流程,其中,所述停止指令包括暂停指令或终止指令;当所述停止指令包括所述暂停指令时,响应于针对结束后的所述待执行工作流的继续执行指令,继续执行所述待执行工作流。
本申请实施例提供一种工作流的数据处理设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的工作流的数据处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令用于被处理器执行时,实现本申请实施例提供的工作流的数据处理方法。
本申请实施例提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本申请实施例提供的工作流的数据处理方法。
本申请实施例至少具有以下有益效果:在执行待执行工作流的过程中,由于当前应用(第i个应用)的数据表达式中,包括引用数据表达式和数据处理表达式,而引用数据表达式用于获取当前应用对应的引用数据,数据处理表达式用于对引用数据进行处理;因此,通过解析当前应用的数据表达式,不仅能够获得所引用的其他应用的数据,还能够获得引用数据的处理结果,实现了一种自动获取应用数据并进行处理的过程;从而,当基于处理结果执行当前应用时,能够提升应用执行效率,从而,能够提升工作流的执行效率。
附图说明
图1是本申请实施例提供的工作流的数据处理系统的架构示意图;
图2是本申请实施例提供的图1中服务器的组成结构示意图;
图3是本申请实施例提供的工作流的数据处理方法的流程示意图一;
图4是本申请实施例提供的工作流的数据处理方法的流程示意图二;
图5是本申请实施例提供的工作流的数据处理方法的流程示意图三;
图6是本申请实施例提供的一种示例性的工作流的数据处理流程图;
图7是本申请实施例提供的一种示例性的获取应用实例数据的流程图;
图8是本申请实施例提供的一种示例性的运行数据结构示意图;
图9是本申请实施例提供的一种示例性的动态解析值的流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本申请实施例中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)工作流(Workflow),是工作流程的计算模型;指业务过程的部分或整体在计算机应用环境下的自动化,是对工作流程及其各操作步骤之间业务规则的抽象、概括描述;工作流通常是为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务的过程的描述;其中,工作流可以通过流程图的方式表示实际的业务模型,以自动化的方式完成特定的工作场景;在本申请实施例中,业务工作流可以为通过流程图的方式描述的业务模型。
2)工作流引擎,是指工作流作为应用系统的一部分并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由和内容等级等核心的解决方案;工作流引擎包括工作流的节点管理、流向管理、工作流样例管理等功能,能够根据业务逻辑开发出符合实际需要的程序逻辑并确保其稳定性、易维护性和弹性,因此,工作流引擎是工作流的路由控制器。通常一个工作流对应着一个实际流转的业务,工作流的执行路线受当前应用模块(简称为应用)对应的实例数据的控制;以及工作流定义时就指定了流转规则,而流转规则是基于当前应用模块对应的实例数据和变量表达式(数据表达式)确定的。在本申请实施例中,工作流引擎用于根据工作流在执行时的上下文环境,对当前应用模块对应的实例数据和变量表达式进行解析,确定工作流的下一步的执行方向;从而,本申请实施例提供的工作流的数据处理设备可实施为工作流引擎。
3)应用模块,简称为应用,用于实现一个功能或接口服务;其中,触发器是特殊的一个应用模块,用于触发工作流的执行;比如,定时器,网络钩子(WebHook)触发器、缓存(Redis)触发器、命令(Crontab)触发器、邮件(E-mail)触发器。在本申请实施例中,所描述的应用(比如,第1个应用和第i个应用)均是应用模块。
4)应用模块实例,是对应用模块实例化获得的;也就是说,应用模块相当于一个模板,通常对应的参数为默认参数;而应用模块实例是使用一个模板,且采用实际业务参数;在本申请实施例中,应用实例数据和应用共同构成一个应用模块实例。
5)工作流定义语言,用于描述工作流的语法规范;比如,“Json”语言;在本申请实施例中,待解析格式即为工作流定义语言的格式。
6)路径语法表达式,用于索引到工作流中各个应用模块实例的输入数据或输出数据;比如,“{AppInstId.data.0.name}”。通过路径语法表达式,能够在工作流执行过程中实现数据的动态解析;在本申请实施例中,引用数据表达式即是一种路径语法表达式。以及路径语义表达式还可以对数据进行基础处理,此时,数据处理表达式即是一个待数据处理函数的路径语法表达式。
7)工作流任务,又称为执行任务,是指当工作流被触发执行时,生成的一个工作流实例;在本申请实施例中,工作流被触发时对应的工作流的输入参数的不同,会生成不同的工作流实例。
一般来说,为了对引用的应用所对应的执行数据进行处理,通常是人为地对引用的应用所对应的执行数据进行处理,再利用处理后的数据进行当前应用的执行,从而实现工作流的执行。然而,上述工作流执行的过程中,由于对引用的应用所对应的执行数据进行处理是通过人工进行的,导致工作流的执行效率较低。
另外,为了对引用的应用所对应的执行数据进行处理,还可以通过编写额外的脚本程序来实现;然而,额外编写脚本程序实现对引用的应用例所对应的执行数据的处理,增加了数据处理成本,增加了计算资源的消耗。
本申请实施例提供一种工作流的数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品,能够提升工作流的执行效率,降低计算资源的消耗。下面说明本申请实施例提供的工作流的数据处理设备的示例性应用,本申请实施例提供的工作流的数据处理设备可以实施为智能手机、智能手表、笔记本电脑、平板电脑、台式计算机、智能电视、职能家电、机顶盒、智能车载设备、便携式音乐播放器、个人数字助理、专用消息设备、便携式游戏设备和智能音箱等各种类型的终端,也可以实施为服务器。下面,将说明工作流的数据处理设备实施为服务器时的示例性应用。
参见图1,图1是本申请实施例提供的工作流的数据处理系统的架构示意图;如图1所示,为支撑一个工作流执行应用,在工作流的数据处理系统100中,终端200(示例性示出了终端200-1和终端200-2)通过网络300连接服务器400(工作流的数据处理设备),网络300可以是广域网或者局域网,又或者是二者的组合。另外,该工作流执行系统100中还包括数据库500,用于向服务器400提供数据支持;并且,图1中示出的为数据库500独立于服务器400的一种情况,此外,数据库500还可以集成在服务器400中,本申请实施例对此不作限定。
终端200,用于通过网络300向服务器400发送待执行工作流。
服务器400,用于获取待执行工作流的触发参数,基于触发参数,执行待执行工作流中的执行第1个应用,得到1个执行数据,其中,待执行工作流为N个应用协同处理数据的流程,N为大于1的正整数,第1个应用为N个应用中最先执行的应用;通过迭代i执行以下处理,其中,1<i≤N,且i是以迭代步幅为1的单调递增的整数变量,以及i是指应用的执行顺序:基于前i-1个应用对应的i-1个执行数据,对第i个应用的数据表达式进行解析,得到第i个应用实例数据,其中,数据表达式包括引用数据表达式和数据处理表达式,引用数据表达式用于获取第i个应用的引用数据,数据处理表达式用于对引用数据进行处理;基于第i个应用实例数据,执行第i个应用,得到i个执行数据;基于迭代i获得的N个执行数据,确定待执行工作流的执行结果。
在本申请的一些实施例中,服务器400可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,Content Delivery Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端200可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能家电和车载设备等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不作限制。
参见图2,图2是本申请实施例提供的图1中服务器的组成结构示意图,图2所示的服务器400包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。服务器400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在本申请的一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算机设备,示例性的网络接口420包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在本申请的一些实施例中,本申请实施例提供的工作流的数据处理装置可以采用软件方式实现,图2示出了存储在存储器450中的工作流的数据处理装置455,其可以是程序和插件等形式的软件,包括以下软件模块:应用执行模块4551、迭代执行模块4552、结果获取模块4553、工作流触发模块4554、错误执行模块4555和工作流停止模块4556,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在本申请的一些实施例中,本申请实施例提供的工作流的数据处理装置可以采用硬件方式实现,作为示例,本申请实施例提供的工作流的数据处理装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的工作流的数据处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
在本申请的一些实施例中,终端或服务器可以通过运行计算机程序来实现本申请实施例提供的工作流的数据处理方法。举例来说,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作系统中安装才能运行的程序,如工作流执行APP;也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
需要说明的是,本申请实施例提供的工作流的数据处理方法可应用于云技术、云安全、人工智能和智慧交通等各种应用场景。
下面,将结合本申请实施例提供的工作流的数据处理设备(简称为数据处理设备)的示例性应用和实施,说明本申请实施例提供的工作流的数据处理方法。
参见图3,图3是本申请实施例提供的工作流的数据处理方法的流程示意图一,将结合图3示出的步骤进行说明。
S301、获取待执行工作流的触发参数,基于触发参数,执行待执行工作流中的第1个应用,得到1个执行数据。
在本申请实施例中,在确定对待执行工作流进行执行时,数据处理设备进行触发事件的检测,当检测到用于触发待执行工作流执行的触发参数时,基于该触发参数触发待执行工作流的执行;这里,数据处理设备对待执行工作流进行执行时,先从待执行工作流所包括的N个应用中确定最先执行的应用,也就获得了第1个应用;接着,数据处理设备基于触发参数对第1个应用进行执行,将第1个应用的执行结果、第1个应用对应的输入数据和第1个应用在执行过程中的数据中的一种或多种确定为第1个执行数据,也就获得了1个执行数据;其中,第1个应用为N个应用中最先执行的应用。
需要说明的是,待执行工作流为N个应用协同处理数据的流程,用于完成指定业务的处理;其中,N为大于1的正整数,比如为2,又比如为10。待执行工作流的执行可以是通过检测确定触发条件被触发时进行的,比如,待执行工作流的触发器被触发时;还可以是接收到其他设备发送的用于请求执行待执行工作流的请求时进行的;等等,本申请实施例对此不作限定。触发参数为待执行工作流的输入参数,可以是账号密码、令牌(token)和密钥等凭据信息,还可以是输入至待执行工作流用于进行处理的数据,等等,本申请实施例对此不作限定。另外,执行数据包括执行结果、应用对应的输入数据和应用在执行过程中的数据中的一种或多种。
还需要说明的是,待执行工作流中描述了N个应用的执行顺序,其中,i是指应用的执行顺序;基于该执行顺序,能够确定N个应用之间的执行顺序,进而能够确定N个应用中最先执行的应用,还能确定当前执行的应用的下一应用,以及能够确定最后执行的应用。
在本申请实施例中,数据处理设备通过迭代i执行S302和S303,其中,1<i≤N,且i为单调递增的整数变量,以及递增的步幅为1,当然递增的步幅还可以为其他值,比如,2,5,等等。
S302、基于前i-1个应用对应的i-1个执行数据,对第i个应用的数据表达式进行解析,得到第i个应用实例数据。
在本申请实施例中,数据处理设备通过不断的根据历史执行的应用(前i-1个应用)所对应的执行数据,确定当前执行的应用(第i个应用)所对应的输入数据,以对当前的应用(第i个应用)进行执行,直至停止待执行工作流的执行或者完成最后一个应用的执行。从而,数据处理设备针对当前执行的第i个应用,先判断第i个应用中是否包括数据表达式;如果第i个应用中不包括数据表达式,则直接能够获得第i个应用的输入数据;如果第i个应用中包括数据表达式,则基于前i-1个应用对应的i-1个执行数据对该数据表达式进行解析,以获得第i个应用的输入数据,也就获得了第i个应用实例数据。
需要说明的是,数据表达式包括引用数据表达式和数据处理表达式,引用数据表达式用于获取第i个应用的引用数据,比如,“{{AppInstId.data.0.name}}”,数据处理表达式用于对引用数据进行处理,比如,“{{sub(value1,value2)}}”;以及,数据处理表达式的处理对象为引用数据表达式,即引用数据表达式为数据处理表达式的参数。其中,对引用数据的处理为可以为基础处理,比如,转换、获取均值、获取最大值、获取最小值、累加、累积、加减融合等。这里,前i-1个应用与i-1个执行数据一一对应,前i-1个应用包括第1个应用,i-1个执行数据包括第1个执行数据。另外,数据表达式的数量为一个或多个。
S303、基于第i个应用实例数据,执行第i个应用,得到i个执行数据。
在本申请实施例中,第i个应用实例数据作为第i个应用的输入数据,用于对第i个应用进行实例化,以获得第i个应用对应的第i个实例化应用;由于实例化应用具有可执行性,从而,数据处理设备能够通过执行第i个实例化应用,实现对第i个应用的执行,并基于所获得的结果得到第i个实例对应的第i个执行数据,以及组合i-1个执行数据和第i个执行数据,也就得到了i个执行数据。
需要说明的是,数据处理设备在获得了第i个执行数据时,将第i个执行数据和i-1个执行数据进行组合,以实现历史执行的应用对应的历史执行数据的更新。以及数据处理设备在完成了第i个应用的执行之后,通过迭代i执行第i个应用的下一应用。
还需要说明的是,当第1个应用为触发器时,用于触发第i个应用的执行;当第1个应用为业务功能应用时,第1个应用的执行过程与第i个执行过程类似,在第1个应用包括数据表达式时,数据处理设备基于触发参数对第1个应用的数据表达式进行解析,得到第1个执行数据;这里,第1个应用的数据表达式不包括引用数据表达式,仅包括数据处理表达式,这是因为第1个应用的引用数据为待执行工作流的输入数据(触发参数)。
S304、基于迭代i获得的N个执行数据,确定待执行工作流的执行结果。
在本申请实施例中,数据处理设备在迭代i执行应用的过程中,当i迭代至N时,即执行了第N个应用,获得了第N个执行数据时,也就完成了N个应用的执行,进而完成了待执行工作流的执行;此时,第N个执行数据和之前的N-1个执行数据即为迭代i获得的N个执行数据,该N个执行数据即为待执行工作流的执行结果。其中,N个执行数据与N个应用一一对应。
可以理解的是,数据处理设备在对待执行工作流进行执行时,将对引用数据的处理作为解析数据的处理,能够提升对引用数据的处理效率,从而能够提升工作流任务执行的效率。
参见图4,图4是本申请实施例提供的工作流的数据处理方法的流程示意图二;如图4所示,在本申请实施例中,S302可通过S3021和S3022实现;也就是说,基于前i-1个应用对应的i-1个执行数据,对第i个应用的数据表达式进行解析,得到第i个应用实例数据,包括S3021和S3022,下面对各步骤分别进行说明。
S3021、基于前i-1个应用对应的i-1个执行数据,对第i个应用的引用数据表达式进行解析,得到引用数据。
需要说明的是,由于引用数据表达式为数据表达式中数据处理表达式的参数,从而数据处理设备先对引用数据表达式进行解析,再基于解析出的数据对数据处理表达式,来获得数据表达式对应的数据。这里,数据处理设备在对引用数据表达式进行解析时,是基于前i-1个应用对应的i-1个执行数据进行的,即将i-1个执行数据中与引用数据表达式关联的数据作为引用数据表达式的输入数据并输入至引用数据表达式中进行解析,解析出的结果即为引用数据。
S3022、基于数据处理表达式,对引用数据进行处理,得到第i个应用实例数据。
需要说明的是,数据处理设备在对数据处理表达式进行解析时,将引用数据作为数据处理表达式的输入数据输入至数据处理表达式中进行解析,解析出的结果即为第i个应用实例数据。
可以理解的是,数据处理设备通过将对引用数据的处理作为解析表达式的处理,并将引用数据作为解析数据处理表达式的输入数据,通过解析表达式实现了对引用数据的处理,提升了引用数据的处理效率,进而提升了工作流的执行效率,并减少了工作流执行过程中的资源消耗。
在本申请实施例中,S3021可通过S30211至S30213实现;也就是说,基于前i-1个应用对应的i-1个执行数据,对第i个应用的引用数据表达式进行解析,得到引用数据,包括S30211至S30213,下面对各步骤分别进行说明。
S30211、基于第i个应用的引用数据表达式,确定引用的应用对应的数据参数。
在本申请实施例中,由于引用数据表达式中包括引用的应用,以及引用的应用所对应的引用参数;因此,数据处理设备能够通过解析引用数据表达式,获得第i个应用所引用的应用,以及所引用的应用的参数,该所引用的应用的参数即为数据参数。
需要说明的是,所引用的应用属于前i-1个应用,也就是说,所引用的应用为前i-1个应用中的一个或多个。
S30212、从i-1个执行数据中,确定引用的应用对应的执行数据。
需要说明的是,由于引用的应用为前i-1个应用,而i-1个应用对应i-1个执行数据,从而,数据处理设备能够从i-1个执行数据中获取出引用的应用对应的执行数据。
S30213、基于引用的应用对应的执行数据,确定数据参数对应的引用数据。
在本申请实施例中,数据处理设备获得了引用的应用对应的执行数据之后,基于引用的应用对应的执行数据,确定数据参数对应的参数值,也就获得了第i个应用的引用数据。
在本申请实施例中,S30213可通过S302131至S302134实现;也就是说,数据处理设备基于引用的应用对应的执行数据,确定数据参数对应的引用数据,包括S302131至S302134,下面对各步骤分别进行说明。
S302131、将引用的应用对应的执行数据转换为待解析格式的数据,得到待解析执行数据。
需要说明的是,数据处理设备能够解析的数据格式为待解析格式,比如,“Json”数据格式,“xml”数据格式;当引用的应用对应的执行数据所对应的数据格式为不同于解析格式的数据格式时,数据处理设备对引用的应用所对应的执行数据进行格式转换,以将引用的应用所对应的执行数据转换为待解析格式的数据;其中,待解析格式的数据转换出的待解析格式的数据即为待解析执行数据。
S302132、解析待解析执行数据,确定数据参数中的每个引用参数对应的数据类型。
需要说明的是,由于待解析执行数据为待解析格式的数据,从而数据处理设备能够对待解析执行数据进行解析。这里,由于数据参数包括一个或多个引用参数,因此,数据处理设备基于待解析执行数据,对各个引用参数对应的值进行解析;以及数据处理设备在解析每个引用参数的值时,先获取该引用参数的数据类型,基于该数据类型确定引用参数的解析方式。其中,数据类型为字符串类型、字符串序列类型(比如,数值,矩阵等)和值类型中的一种或多种,当然,数据类型还可以为其他的类型。
S302133、基于数据类型,解析引用参数对应的数据,得到引用参数数据。
需要说明的是,数据处理设备针对不同数据类型的引用参数,采用不同的解析方式确定引用参数的值(数据),而引用参数的值即为引用参数数据。其中,解析方式比如为,解析单个字符串对应的值的方式,或者遍历多个字符串并解析单个字符串对应的值再进行组合的方式,或者直接将对应的值确定为解析出的值的方式。
在本申请实施例中,当数据类型为字符串类型时,数据处理设备采用解析单个字符串对应的值的方式,来获得引用参数的值。
在本申请实施例中,当数据类型包括字符串序列类型时,数据处理设备采用遍历多个字符串并解析单个字符串对应的值再进行组合的方式,来获得引用参数的值;也就是说,数据处理设备基于字符串序列类型,遍历引用参数,并对遍历到的子引用参数进行数据解析,得到子引用参数数据,当完成对所引用参数的遍历时,将与引用参数对应的多个子引用参数数据,确定为引用参数数据;其中,引用参数为多个子引用参数构成的序列,子引用参数与字符串序列类型的序列单元对应,即子引用参数为字符串序列类型对应的字符串序列中的一个序列单元。
在本申请实施例中,当数据类型包括值类型时,引用参数即为一个数值,此时,数据处理设备将该引用参数作为引用参数数据。
还需要说明的是,数据类型包括字符串类型、字符串序列类型和值类型中的多种时,数据处理设备基于每种类型的解析方式进行解析后再进行组合。
S302134、将与数据参数对应的一个或多个引用参数数据,确定为引用数据。
需要说明的是,数据处理设备获得了每个数据参数对应的引用参数数据之后,则针对数据参数中的一个或多个引用参数,能够获得一个或多个引用参数数据;而获得的一个或多个引用参数数据,即为第i个应用的引用数据。
参见图5,图5是本申请实施例提供的工作流的数据处理方法的流程示意图三;如图5所示,在本申请实施例中,在本申请实施例中,S301之前还包括S305和S306;也就是说,数据处理设备获取待执行工作流的触发参数之前,该工作流的数据处理方法还包括S305和S306,下面对各步骤分别进行说明。
S305、获取业务工作流。
需要说明的是,业务工作流为流程图形式的业务模型,或者为动画形式的业务模型,或者为表格形式的业务模型,或者为文本描述形式的业务模型,或者为待解析格式的数据,等等。
S306、将业务工作流转换为待解析格式的数据,得到待执行工作流。
在本申请实施例中,当业务工作流为待解析格式之外的数据格式时,由于数据处理设备所解析的数据对应的数据格式为待解析格式,从而,数据处理设备还用于将业务工作流转换为待解析格式的数据;其中,所获得的转换后的待解析格式的数据即为待执行工作流。
继续参见图5,在本申请实施例中,S301之前还包括S307和S308;也就是说,数据处理设备获取待执行工作流的触发参数之前,该工作流的数据处理方法还包括S307和S308,下面对各步骤分别进行说明。
S307、从待执行工作流包括的N个应用中,确定触发应用。
需要说明的是,当数据处理设备包括触发器时,即待执行工作流中包括的N个应用中包括触发器;数据处理设备在N个应用中对触发器进行识别,也就获得了触发应用;易知,该触发应用为N个应用中的一个应用,且为触发器,用于触发待执行工作流中N-1个应用的执行。
S308、将触发应用确定为第1个应用。
需要说明的是,当数据处理设备包括触发器时,触发应用即为第1个应用。当业务运行场景的数据满足触发应用的触发条件时,触发应用被触发,此时,数据处理设备响应于触发应用的触发,执行触发应用。
在本申请实施例中,S302之后还包括S309和S312;也就是说,数据处理设备基于前i-1个应用对应的i-1个执行数据,对第i个应用的数据表达式进行解析,得到第i个应用实例数据之后,该工作流的数据处理方法还包括S309和S312,下面对各步骤进行说明。
S309、当i小于N时,从待执行工作流中确定第i个应用所指向的第i+1个应用。
需要说明的是,当数据处理设备完成了第i个应用的执行时,如果i小于N,表明待执行工作流中还包括未执行的应用;此时,数据处理设备从待执行工作流中确定第i个应用所指向的下一个应用,也就获得了第i+1个应用。
S310、将第i+1个应用压入任务队列。
S311、从任务队列中读取第i+1个应用。
需要说明的是,数据处理设备通过从任务队列中获取应用进行执行,从而,当获得了第i+1个应用之后,数据处理设备将第i+1个应用压入任务队列,并确定对第i+1个应用进行执行时,从任务队列中读取第i+1个应用进行执行。
在本申请实施例中,任务队列可以为队列数据结构,还可以为栈数据结构,等等,本申请实施例对此不作限定。
S312、基于i个执行数据,对读取出的第i+1个应用的数据表达式进行解析,得到i+1个执行数据。
需要说明的是,数据处理设备在执行第i+1个应用时,是基于i个执行数据,对读取出的第i+1个应用的数据表达式进行解析,得到第i+1个应用实例数据,进而基于第i+1个应用实例数据执行第i+1个应用,第i+1个执行数据;易知,N个执行数据包括i+1个执行数据。
在本申请实施例中,S302之后还包括S313至S316;也就是说,数据处理设备基于前i-1个应用对应的i-1个执行数据,对第i个应用的数据表达式进行解析,得到第i个应用实例数据之后,该工作流的数据处理方法还包括S313至S316,下面对各步骤分别进行说明。
S313、基于第i个应用实例数据,执行第i个应用,得到第i个执行错误信息。
需要说明的是,S303中数据处理设备基于第i个应用实例数据,执行第i个应用,获得的第i个执行数据,描述的是执行流程正常执行的情况;S313中数据处理设备基于第i个应用实例数据,执行第i个应用,得到第i个执行错误信息,描述的是执行流程出错的情况。从而,第i个执行错误信息用于表征第i个应用的执行出现错误。
S314、基于第i个执行错误信息,对执行错误次数执行增量处理。
在本申请实施例中,数据处理设备每次获得了第i个执行错误信息之后,就对当前的执行错误次数进行增量处理,比如,执行错误次数加1处理,或者基于第i个执行错误信息中的错误数量对执行错误次数进行累加处理。其中,执行错误次数是指待执行工作流的执行过程中执行应用时的出错次数。
S315、当处理后的执行错误次数小于等于指定次数时,执行错误应用。
需要说明的是,待执行工作流中或者数据处理设备中设置有错误应用,用于确定应用执行出错时的处理方式,比如,跳过,邮件提醒,显示提示信息,确定指定应用为下一待执行的应用,等等。这里,数据处理设备对处理后的执行错误次数和指定次数(比如,1次,3次)进行对比,如果确定处理后的执行错误次数小于等于指定次数,可以通过执行错误应用确定下一步的处理。
需要说明的是,错误应用可以是一个触发器,当处理后的执行错误次数小于等于指定次数时触发该触发器的执行,以确定第i个执行错误信息对应的处理方式。
S316、当处理后的执行错误次数大于指定次数时,结束待执行工作流的处理流程。
需要说明的是,数据处理设备在确定处理后的执行错误次数大于指定次数时,表明待执行工作流中的出错频率较高,从而,结束待执行工作流的处理流程。
在本申请实施例中,S315和S316是两个对立的执行步骤;也就是说,数据处理设备在执行S315时,则不再执行S316,而数据处理设备在执行S316时,则不再执行S315。
可以理解的是,数据处理设备通过执行错误次数确定待执行工作流的执行过程中出错时的处理方式,能够提升工作流执行的健壮性和稳定性。
在本申请实施例中,该工作流的数据处理方法还包括S317和S318;下面对各步骤分别进行说明。
S317、响应于针对待执行工作流的停止指令,结束待执行工作流的处理流程。
需要说明的是,数据处理设备在执行待工作流的过程中,对停止指令进行实时监测,当监测到待执行工作流的停止指令时,则对停止指令进行响应,结束待执行工作流的处理流程。这里,停止指令包括暂停指令或终止指令;从而,数据处理设备结束待执行工作流的处理流程,包括暂时结束待执行工作流的处理流程,或者终止待执行工作流的处理流程。
S318、当停止指令包括暂停指令时,响应于针对结束后的待执行工作流的继续执行指令,继续执行待执行工作流。
需要说明的是,当停止指令为暂停指令时,数据处理设备在结束待执行工作流的处理流程之后,对继续执行指令进行实时监测,当监测到继续执行指令时,则对继续执行指令进行响应,从暂停的应用开始继续执行待执行工作流。
在本申请实施例中,数据处理设备在终止待执行工作流或完成待执行工作流的N个应用的执行时,还会删除已执行的应用对应的临时执行数据。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
参见图6,图6是本申请实施例提供的一种示例性的工作流的数据处理流程图;如图6所示,该示例性的工作流执行流程由工作流引擎(工作流的数据处理设备)执行,下面结合图6示出的步骤分别进行说明。
S601、解析工作流。
需要说明的是,解析工作流的过程是指,工作流引擎对前端可视化编辑器上编辑出的工作流(业务工作流)进行转换,以获得以工作流定义语言(Json语言)描述的工作流(待执行工作流)。
示例性地,当以Json语言描述解析的工作流时,解析的工作流包括开始应用模块实例(StartAppInstId)、结束应用模块实例(DestAppInstId)和应用模块(Apps)。其中,应用模块实例包括应用模块实例描述(Name)、参数项(Parameters,包括参数、参数值、参数类型、表达式和参数描述)、应用模块实例采用的应用模块模板(Template)、应用模块实例在前端可视化编辑器画布的坐标位置(Position)、在工作流中表示应用模块实例的唯一标识(InstId)、指向的上一个应用模块实例应用模块(PrevAppInstIds)、指向的下一个应用模块实例标识(NextAppInstIds)、应用模块实例的输出结果(Output)、应用模块实例如果执行中出错的错误信息(Error)、应用模块实例的状态(Status)、应用模块实例执行的开始时间(StartTime)和应用模块实例执行的结束时间(EndTime)。
其中,应用模块描述的为一个应用模块(应用)的相关信息。参数项中的参数通常包括该应用模块的变量表达式(数据表达式),且该变量表达式可以是路径表达式(引用数据表达式),还可以是带函数的路径表达式(其中的函数即为上述的数据处理表达式);参数类型对应于上述的数据类型。标识与应用模块对应,用于确定应用模块。应用模块实例的状态包括运行中、未运行和已运行等。
S602、基于解析的工作流,加载应用模块实例。
需要说明的是,工作流引擎将解析出的工作流中的各个应用模块实例(N个应用)、应用模块实例中参数的相关信息、以及各个应用模块实例之间的指引关系,保存至工作流数据区域中,以实现工作流的执行过程中所需数据向内存的加载,从而完成应用模块实例的初始化。
S603、从应用模块实例中,确定起始应用模块实例(触发应用)。
需要说明的是,工作流引擎从工作流中的各个应用模块实例中识别起始应用模块实例。其中,起始应用模块实例为触发器;比如,工作流引擎支持网络钩子触发器、缓存触发器、命令触发器和邮件触发器时,工作流引擎基于网络钩子触发器、缓存触发器、命令触发器和邮件触发器,从各个应用模块实例中识别出起始应用模块实例。另外,一个工作流中包括一个起始应用模块实例,用于触发工作流的执行。
S604、将起始应用模块实例压入(Push)任务队列。
需要说明的是,工作流引擎将确定出的起始应用模块实例压入任务队列等待执行。
S605、从任务队列中取出(Pop)出起始应用模块实例并进行执行。
需要说明的是,当工作流引擎检测到用于触发起始应用模块实例执行的事件(比如,到达指定时间,接收到指定指令,等待)时,则从任务队列中取出出起始应用模块实例并进行执行。
S606、判断是否接收到终止/暂停指令。如果是,则执行S612;如果否,则执行S607。
需要说明的是,工作流执行过程中可以暂停或终止;这里,由工作流引擎进行工作流终止/暂停指令的检测;如果在工作流执行过程中捕捉到该终止/暂停指令则会停止工作流的执行。
S607、确定待执行的应用模块实例(第i个应用),并压入任务队列。
S608、判断任务队列是否为空。如果是,则执行S612;如果否,则执行S609。
S609、从任务队列中取出应用模块实例并进行解析。
需要说明的是,如果应用模块实例的参数项中包括变量表达式,则对该变量表达式进行解析,以获得从已执行应用模块实例中引用的数据(引用数据),以及获得对引用的数据进行基本加工处理后的数据(第i个应用实例数据)。
这里,当解析出的数据(第i个应用实例数据)为对引用的数据进行基本加工处理后的数据时,变量表达式为带基础处理功能的路径表达式,如表1所示:
表1
在表1中,“value1,value2,value3,…”和“value1,value2”为路径表达式对应的引用数据;比如,“value1”可以是通过解析路径表达式“{{<应用模块实例标识>.data}}”获得的,“value3”可以是通过解析路径表达式“{{<应用模块实例标识>.参数.<参数值>}}”获得的。
S610、基于解析的应用模块实例执行应用模块实例。
S611、判断应用模块实例是否执行成功。是则执行S612并执行S607,否则执行S613。
S612、存储应用模块实例执行的日志和数据。
这里,工作流引擎将应用模块实例执行过程中产生的日志和数据会更新保存到工作流数据区域中。
S613、判断是否是第一次(指定次数)出错。如果是则执行S614,如果否则执行S612。
S614、将错误触发器对应的应用模块实例确定为待执行的应用模块实例,并压入任务队列。执行S608。
下面,对S609中工作流引擎解析变量表达式中路径表达式的过程进行说明。参见图7,图7是本申请实施例提供的一种示例性的获取应用实例数据的流程图;如图7所示,该示例性的获取应用实例数据的流程包括:
S701、获取工作流的运行数据结构(i-1个执行数据)。
需要说明的是,工作流的运行数据结构是指已运行的应用模块实例的运行数据。这里,当工作流引擎执行工作流时对应一个字典结构(map)的数据结构,用于存储工作流中每个应用模块实例的输入数据、输出数据和异常等运行数据,是一种全局级别的信息。
参见图8,图8是本申请实施例提供的一种示例性的运行数据结构示意图;如图8所示,应用模块实例8-1至应用模块实例8-N中,每个应用模块实例均对应一个应用模块实例输入/输出数据(输入数据和输出数据)和运行信息(开始时间、结束时间、运行状态和错误信息)。
S702、从运行数据结构中确定路径表达式中所引用的应用模块实例的目标运行数据(引用的应用对应的执行数据)。
需要说明的是,由于引用的应用模块实例的数量为一个或多个,当为多个时,工作流引擎遍历引用的应用模块实例,并依据每个引用的应用模块实例的目标运行数据进行解析处理。
S703、将目标运行数据转换成Json格式(待解析格式),得到待解析的运行数据。
这里,由于工作流引擎是通过路径表达式(比如,“{{App实例ID1.data.field}}”)来确定引用数据的,因此,需要先把map数据结构的目标运行数据转换成Json格式的Json字符串。
S704、基于待解析的运行数据,判断路径表达式中的每个参数的类型是否是字符串类型。如果是则执行S705,如果否则执行S706。
S705、动态解析参数的值。
S706、判断参数的类型是否是数组类型(字符串序列类型)。如果是则执行S708,如果否则执行S707。
S707、确定参数的值。
S708、遍历每个数组元素。
S709、动态解析数组元素的值。
需要说明的是,工作流引擎基于参数的类型(数据类型),确定采用不同的的方式进行解析。比如,当参数的描述为“"code":"{{xxx.data.field}}"”时,则确定参数的类型为字符串类型,动态解析参数值;当参数的描述为“"timeout":10”时,则直接将该值确定为参数值;当参数的描述为“"params":["{{yyy.data.field1}}","{{yyy.data.field2}}"]”时,则动态解析每个参数的值。
其中,S705和S709中的动态解析值的过程参见图9,图9是本申请实施例提供的一种示例性的动态解析值的流程示意图;如图9所示,该示例性的解析路径表达式的流程包括:
S901、提取路径表达式。
需要说明的是,工作流执行引擎从待解析的参数中正则识别出路径表达式。
S902、判断是否提取到了路径表达式。如果否则执行S903,如果是则执行S904。
S903、返回参数值。
S904、基于已执行的应用模块实例的运行数据,解析路径表达式。
下面继续说明本申请实施例提供的工作流的数据处理装置455的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器450的工作流的数据处理装置455中的软件模块可以包括:
应用执行模块4551,用于响应于针对待执行工作流的触发指令,基于所述触发指令对应的触发参数,执行第1个应用,得到1个执行数据,其中,所述待执行工作流为N个所述应用协同处理数据的流程,N为大于1的正整数,第1个所述应用为N个所述应用中最先执行的所述应用;
迭代执行模块4552,用于通过迭代i执行以下处理,其中,1<i≤N,且i是以迭代步幅为1的单调递增的整数变量,以及i是指所述应用的执行顺序:基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的数据表达式进行解析,得到第i个应用实例数据,其中,所述数据表达式包括引用数据表达式和数据处理表达式,所述引用数据表达式用于获取第i个所述应用的引用数据,所述数据处理表达式用于对所述引用数据进行处理;基于第i个所述应用实例数据,执行第i个所述应用,得到i个所述执行数据;
结果获取模块4553,用于基于迭代i获得的N个所述执行数据,确定所述待执行工作流的执行结果。
在本申请实施例中,所述迭代执行模块4552,还用于基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的所述引用数据表达式进行解析,得到所述引用数据;基于所述数据处理表达式,对所述引用数据进行处理,得到第i个所述应用实例数据。
在本申请实施例中,所述迭代执行模块4552,还用于基于第i个所述应用的所述引用数据表达式,确定引用的所述应用对应的数据参数,其中,引用的所述应用属于前i-1个所述应用;从i-1个所述执行数据中,确定引用的所述应用对应的所述执行数据;基于引用的所述应用对应的所述执行数据,确定所述数据参数对应的所述引用数据。
在本申请实施例中,所述迭代执行模块4552,还用于将引用的所述应用对应的所述执行数据转换为待解析格式的数据,得到待解析执行数据;解析所述待解析执行数据,确定所述数据参数中的每个引用参数对应的数据类型,其中,所述数据参数包括一个或多个所述引用参数,所述数据类型为字符串类型、字符串序列类型和值类型中的一种或多种;基于所述数据类型,解析所述引用参数对应的数据,得到引用参数数据;将与所述数据参数对应的一个或多个所述引用参数数据,确定为所述引用数据。
在本申请实施例中,当所述数据类型包括所述字符串序列类型时,所述迭代执行模块4552,还用于基于所述字符串序列类型,遍历所述引用参数,并对遍历到的子引用参数进行数据解析,得到子引用参数数据,其中,所述引用参数为多个所述子引用参数构成的序列,所述子引用参数与所述字符串序列类型的序列单元对应;当完成对所引用参数的遍历时,将与所述引用参数对应的多个所述子引用参数数据,确定为所述引用参数数据。
在本申请实施例中,所述工作流的数据处理装置455还包括工作流转换模块4553,用于获取业务工作流,其中,所述业务工作流为流程图形式的业务模型;将所述业务工作流转换为待解析格式的数据,得到所述待执行工作流。
在本申请实施例中,所述工作流的数据处理装置455还包括工作流触发模块4554,用于从所述待执行工作流包括的N个所述应用中,确定触发应用;将所述触发应用确定为第1个所述应用。
在本申请实施例中,所述迭代执行模块4552,还用于当i小于N时,从所述待执行工作流中确定第i个所述应用所指向的第i+1个所述应用;将第i+1个所述应用压入任务队列;从所述任务队列中读取第i+1个所述应用;基于i个所述执行数据,对读取出的第i+1个所述应用的所述数据表达式进行解析,得到第i+1个所述执行数据,N个所述执行数据包括第i+1个所述执行数据。
在本申请实施例中,所述工作流的数据处理装置455还包括错误执行模块4555,用于基于第i个所述应用实例数据,执行第i个所述应用,得到第i个执行错误信息;基于第i个所述执行错误信息,对执行错误次数执行增量处理;当处理后的所述执行错误次数小于等于指定次数时,执行错误应用,其中,所述错误应用用于确定第i个所述执行错误信息对应的处理方式;当处理后的所述执行错误次数大于所述指定次数时,结束所述待执行工作流的处理流程。
在本申请实施例中,所述工作流的数据处理装置455还包括工作流停止模块4556,用于响应于针对所述待执行工作流的停止指令,结束所述待执行工作流的处理流程,其中,所述停止指令包括暂停指令或终止指令;当所述停止指令包括所述暂停指令时,响应于针对结束后的所述待执行工作流的继续执行指令,继续执行所述待执行工作流。
可以理解的是,本申请实施例提供的工作流的数据处理方法,使得工作流引擎能够通过解析表达式的方式完成引用数据的获取的同时,还能够快速的实现对引用数据的数据加工处理,提高了工作流执行的智能性和执行效率。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备(工作流的数据处理设备)的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的工作流的数据处理方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的工作流的数据处理方法,例如,如图3示出的工作流的数据处理方法。
在本申请的一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在本申请的一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算机设备上执行(此时,这一个计算机设备即工作流的数据处理设备),或者在位于一个地点的多个计算机设备上执行(此时,位于一个地点的多个计算机设备即工作流的数据处理设备),又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行(此时,分布在多个地点且通过通信网络互连的多个计算机设备即工作流的数据处理设备)。
综上所述,通过本申请实施例,在执行待执行工作流的过程中,由于当前应用(第i个应用)的数据表达式中,包括引用数据表达式和数据处理表达式,而引用数据表达式用于获取当前应用对应的引用数据,数据处理表达式用于对引用数据进行处理;因此,通过解析当前应用的数据表达式,不仅能够获得所引用的其他应用的数据,还能够获得引用数据的处理结果;从而,当基于处理结果执行当前应用时,能够提升应用执行效率,从而,能够提升工作流的执行效率和智能性。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (14)
1.一种工作流的数据处理方法,其特征在于,所述方法包括:
获取待执行工作流的触发参数,基于所述触发参数,执行所述待执行工作流中的第1个应用,得到1个执行数据,其中,所述待执行工作流为N个所述应用协同处理数据的流程,N为大于1的正整数,第1个所述应用为N个所述应用中最先执行的所述应用;
通过迭代i执行以下处理,其中,1<i≤N,且i是以迭代步幅为1的单调递增的整数变量,以及i是指所述应用的执行顺序:
基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的数据表达式进行解析,得到第i个应用实例数据,其中,所述数据表达式包括引用数据表达式和数据处理表达式,所述引用数据表达式用于获取第i个所述应用的引用数据,所述数据处理表达式用于对所述引用数据进行处理;
基于第i个所述应用实例数据,执行第i个所述应用,得到i个所述执行数据;
基于迭代i获得的N个所述执行数据,确定所述待执行工作流的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的数据表达式进行解析,得到第i个应用实例数据,包括:
基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的所述引用数据表达式进行解析,得到所述引用数据;
基于所述数据处理表达式,对所述引用数据进行处理,得到第i个所述应用实例数据。
3.根据权利要求2所述的方法,其特征在于,所述基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的所述引用数据表达式进行解析,得到所述引用数据,包括:
基于第i个所述应用的所述引用数据表达式,确定引用的所述应用对应的数据参数,其中,引用的所述应用属于前i-1个所述应用;
从i-1个所述执行数据中,确定引用的所述应用对应的所述执行数据;
基于引用的所述应用对应的所述执行数据,确定所述数据参数对应的所述引用数据。
4.根据权利要求3所述的方法,其特征在于,所述基于引用的所述应用对应的所述执行数据,确定所述数据参数对应的所述引用数据,包括:
将引用的所述应用对应的所述执行数据转换为待解析格式的数据,得到待解析执行数据;
解析所述待解析执行数据,确定所述数据参数中的每个引用参数对应的数据类型,其中,所述数据参数包括一个或多个所述引用参数,所述数据类型为字符串类型、字符串序列类型和值类型中的一种或多种;
基于所述数据类型,解析所述引用参数对应的数据,得到引用参数数据;
将与所述数据参数对应的一个或多个所述引用参数数据,确定为所述引用数据。
5.根据权利要求4所述的方法,其特征在于,当所述数据类型包括所述字符串序列类型时,所述基于所述数据类型,解析所述引用参数对应的数据,得到引用参数数据,包括:
基于所述字符串序列类型,遍历所述引用参数,并对遍历到的子引用参数进行数据解析,得到子引用参数数据,其中,所述引用参数为多个所述子引用参数构成的序列,所述子引用参数与所述字符串序列类型的序列单元对应;
当完成对所引用参数的遍历时,将与所述引用参数对应的多个所述子引用参数数据,确定为所述引用参数数据。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述获取待执行工作流的触发参数之前,所述方法还包括:
获取业务工作流,其中,所述业务工作流为流程图形式的业务模型;
将所述业务工作流转换为待解析格式的数据,得到所述待执行工作流。
7.根据权利要求1至5任一项所述的方法,其特征在于,所述获取待执行工作流的触发参数之前,所述方法还包括:
从所述待执行工作流包括的N个所述应用中,确定触发应用;
将所述触发应用确定为第1个所述应用。
8.根据权利要求1至5任一项所述的方法,其特征在于,所述基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的数据表达式进行解析,得到第i个应用实例数据之后,所述方法还包括:
当i小于N时,从所述待执行工作流中确定第i个所述应用所指向的第i+1个所述应用;
将第i+1个所述应用压入任务队列;
从所述任务队列中读取第i+1个所述应用;
基于i个所述执行数据,对读取出的第i+1个所述应用的所述数据表达式进行解析,得到第i+1个所述执行数据,N个所述执行数据包括第i+1个所述执行数据。
9.根据权利要求1至5任一项所述的方法,其特征在于,所述基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的数据表达式进行解析,得到第i个应用实例数据之后,所述方法还包括:
基于第i个所述应用实例数据,执行第i个所述应用,得到第i个执行错误信息;
基于第i个所述执行错误信息,对执行错误次数执行增量处理;
当处理后的所述执行错误次数小于等于指定次数时,执行错误应用,其中,所述错误应用用于确定第i个所述执行错误信息对应的处理方式;
当处理后的所述执行错误次数大于所述指定次数时,结束所述待执行工作流的处理流程。
10.根据权利要求1至5任一项所述方法,其特征在于,所述方法还包括:
响应于针对所述待执行工作流的停止指令,结束所述待执行工作流的处理流程,其中,所述停止指令包括暂停指令或终止指令;
当所述停止指令包括所述暂停指令时,响应于针对结束后的所述待执行工作流的继续执行指令,继续执行所述待执行工作流。
11.一种工作流的数据处理装置,其特征在于,所述工作流数据处理装置包括:
应用执行模块,用于获取待执行工作流的触发参数,基于所述触发参数,执行所述待执行工作流中的第1个应用,得到1个执行数据,其中,所述待执行工作流为N个所述应用协同处理数据的流程,N为大于1的正整数,第1个所述应用为N个所述应用中最先执行的所述应用;
迭代执行模块,用于通过迭代i执行以下处理,其中,1<i≤N,且i是以迭代步幅为1的单调递增的整数变量,以及i是指所述应用的执行顺序:基于前i-1个所述应用对应的i-1个所述执行数据,对第i个所述应用的数据表达式进行解析,得到第i个应用实例数据,其中,所述数据表达式包括引用数据表达式和数据处理表达式,所述引用数据表达式用于获取第i个所述应用的引用数据,所述数据处理表达式用于对所述引用数据进行处理;基于第i个所述应用实例数据,执行第i个所述应用,得到i个所述执行数据;
结果获取模块,用于基于迭代i获得的N个所述执行数据,确定所述待执行工作流的执行结果。
12.一种工作流的数据处理设备,其特征在于,所述工作流的数据处理设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至10任一项所述的工作流的数据处理方法。
13.一种计算机可读存储介质,存储有可执行指令,其特征在于,所述可执行指令用于被处理器执行时,实现权利要求1至10任一项所述的工作流的数据处理方法。
14.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时实现权利要求1至10任一项所述的工作流的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111182907.0A CN115965227A (zh) | 2021-10-11 | 2021-10-11 | 工作流的数据处理方法、装置、设备、存储介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111182907.0A CN115965227A (zh) | 2021-10-11 | 2021-10-11 | 工作流的数据处理方法、装置、设备、存储介质及产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115965227A true CN115965227A (zh) | 2023-04-14 |
Family
ID=87363619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111182907.0A Pending CN115965227A (zh) | 2021-10-11 | 2021-10-11 | 工作流的数据处理方法、装置、设备、存储介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115965227A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11775270B1 (en) * | 2023-04-19 | 2023-10-03 | Tsinghua University | Method and apparatus for parsing structured parameters of geocomputation language, device and medium |
-
2021
- 2021-10-11 CN CN202111182907.0A patent/CN115965227A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11775270B1 (en) * | 2023-04-19 | 2023-10-03 | Tsinghua University | Method and apparatus for parsing structured parameters of geocomputation language, device and medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304201B (zh) | 对象更新方法、装置及设备 | |
CN111209005B (zh) | 程序文件的编译方法、装置和计算机可读存储介质 | |
CN112286485B (zh) | 通过语音控制应用的方法、装置、电子设备与存储介质 | |
CN111324619A (zh) | 微服务系统中的对象更新方法、装置、设备和存储介质 | |
CN115965227A (zh) | 工作流的数据处理方法、装置、设备、存储介质及产品 | |
EP3843090B1 (en) | Method and apparatus for outputting analysis abnormality information in spoken language understanding | |
CN116701011A (zh) | 一种基于规则引擎的算法服务调度管理系统 | |
CN115061916B (zh) | 自动化生成接口测试用例的方法及其相关设备 | |
CN111151008B (zh) | 游戏运营数据的校验方法、装置、配置后台及介质 | |
CN111770236B (zh) | 一种对话处理方法、装置、系统、服务器和存储介质 | |
CN114371982A (zh) | 一种模拟测试方法、装置、设备及可读存储介质 | |
CN110781182A (zh) | 校验逻辑的自动编码方法、装置以及计算机设备 | |
CN115426146B (zh) | 系统登录方法、装置、计算机设备及存储介质 | |
CN116700703B (zh) | 一种业务处理方法、装置、设备及存储介质 | |
CN114021723B (zh) | 医疗知识库的规则管理方法、装置及计算机可读存储介质 | |
CN117472367B (zh) | 异构资源智能识别及接入方法、装置、设备以及存储介质 | |
CN113590166B (zh) | 应用程序的更新方法、装置以及计算机可读存储介质 | |
CN112532750B (zh) | 一种大数据推送处理方法、系统及云平台 | |
CN114924809B (zh) | 一种基于dex文件类的流式微服务加载验证方法 | |
CN111967273B (zh) | 对话管理系统、方法和规则引擎设备 | |
CN113238796B (zh) | 一种代码重构方法、装置、设备及存储介质 | |
CN117272943A (zh) | 课件元素添加方法、装置、存储介质以及计算机设备 | |
CN116932060A (zh) | 一种数据加载方法、相关设备和存储介质 | |
CN117290019A (zh) | 一种接口调用方法、装置、计算机设备和存储介质 | |
CN114896578A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40085624 Country of ref document: HK |