掌桥专利:专业的专利平台
掌桥专利
首页

业务运行方法、装置、电子设备和计算机存储介质

文献发布时间:2023-06-19 10:27:30


业务运行方法、装置、电子设备和计算机存储介质

技术领域

本公开涉及计算机技术领域,尤其涉及一种业务运行方法、装置、电子设备、计算机存储介质和计算机程序产品。

背景技术

为了减少服务器应用开发中的重复逻辑开发,提升代码复用性,从而整体提升开发效率,“无服务器(Serverless)”平台越来越广泛的应用。这些平台基于函数即服务(Function as a Service,简称:FaaS)的架构,从而使得开发者关注需要业务函数的开发,而不用担心基础架构和相关的运维操作。然而,这些FaaS平台在实现中,业务函数之间的通信往往基于专有的网络协议或者远程过程调用(Remote Procedure Call,简称:RPC)协议来实现调用或通信,而复杂的业务一般由多个业务函数组成,这样业务函数之间的调用或通信会带来额外的时间消耗,导致业务整体的执行耗时时间长,业务运行效率低的缺陷。

发明内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种业务运行方法、装置、电子设备、计算机存储介质和计算机程序产品。

本公开实施例提供了一种业务运行方法,包括:

获取与待运行业务关联的业务流程图;

对所述业务流程图进行解析,以得到所述业务流程图中至少两个第一业务函数的运行顺序,以及所述至少两个第一业务函数的运行结果间的依赖关系;

创建第一共享存储空间,所述第一共享存储空间用于保存所述第一业务函数的运行结果;

基于所述运行顺序和所述运行结果间的依赖关系运行所述至少两个第一业务函数,并将所述至少两个第一业务函数的运行结果存储到所述第一共享存储空间中。

在一些实施例中,所述获取与待运行业务关联的业务流程图,包括:

通过交互接口接收用户发送的与待运行业务关联的业务流程图。

在一些实施例中,所述创建第一共享存储空间之前,还包括:

通过交互接口接收用户发送的业务运行指令;

所述创建第一共享存储空间包括:基于所述业务运行指令,创建第一共享存储空间。

在一些实施例中,所述第一业务函数包括第一业务函数本体,以及与所述第一业务函数本体关联的子函数,所述子函数包括条件子函数、前置子函数、后置子函数、超时子函数和容错子函数中的至少一个。

在一些实施例中,所述对业务流程图进行解析之后,运行所述至少两个第一业务函数之前,所述方法还包括:

获取所述至少两个第一业务函数的函数运行信息,所述函数运行信息包括所述至少两个第一业务函数的函数代码;

所述基于所述运行顺序和所述运行结果间的依赖关系运行所述至少两个第一业务函数,包括:

基于所述运行顺序、所述运行结果间的依赖关系和所述函数代码运行所述至少两个第一业务函数。

在一些实施例中,在运行所述至少两个第一业务函数之前,所述方法还包括:

获取所述至少两个第一业务函数的运行配置信息,所述运行配置信息包括所述至少两个第一业务函数运行所需的依赖数据接口信息和/或存储系统配置信息:

基于所述依赖数据接口信息获取所述至少两个第一业务函数运行所需的依赖数据,和/或,基于所述存储系统配置信息获取所述至少两个第一业务函数运行所需的存储系统数据;

将所述至少两个第一业务函数运行所需的依赖数据和/或存储系统数据注入所述函数代码中。

在一些实施例中,所述函数运行信息还包括所述至少两个第一业务函数的描述信息。

在一些实施例中,所述函数运行信息还包括初始化处理信息,所述方法还包括:

基于所述初始化处理信息为运行所述第一业务函数进行初始化处理。

在一些实施例中,所述方法在运行引擎中运行,所述同一个业务流程图中的至少两个第一业务函数的函数运行信息被加载到同一个运行引擎中;

所述至少两个第一业务函数的函数运行信息从函数库中获取。

在一些实施例中,还包括:

通过交互接口接收到用户发送的任务卸载请求;

卸载所述至少两个第一业务函数的函数运行信息。

在一些实施例中,还包括:

通过交互接口接收流程图更新请求,以获取更新后的与所述待运行业务关联的业务流程图;

对所述更新后的业务流程图进行解析,以得到更新后的所述业务流程图中至少两个第二业务函数的运行顺序,以及所述至少两个第二业务函数的运行结果间的依赖关系;

创建第二共享存储空间,所述第二共享存储空间用于保存所述第二业务函数的运行结果;

基于所述运行顺序和所述运行结果间的依赖关系运行所述至少两个第二业务函数,并将所述至少两个第二业务函数的运行结果存储到所述第二共享存储空间中;

卸载在先加载到所述执行引擎中的所述与待运行业务关联的原业务流程图和/或至少两个第一业务函数的函数运行信息。

在一些实施例中,还包括:

向用户下发函数开发工具包,以由用户基于所述函数开发工具包开发所述第一业务函数;

接收用户开发的第一业务函数,并存储到函数库中。

在一些实施例中,还包括:

向用户下发开发所述第一业务函数所需的依赖数据接口信息和/或存储系统配置信息,以由用户将所述依赖数据接口信息和所述存储系统配置信息编辑到所述第一业务函数的函数代码中。

在一些实施例中,通过所述函数开发工具包下发所述开发第一业务函数的函数代码所需的依赖数据接口信息和/或存储系统配置信息。

在一些实施例中,还包括:

向用户下发运行业务流程图中至少两个第一业务函数的虚拟运行环境,以由用户基于所述虚拟运行环境测试开发的所述第一业务函数。

在一些实施例中,所述虚拟运行环境集成在所述函数开发工具包中。

在一些实施例中,所述交互接口包括界面交互接口、SDK接口或者API接口中的至少一种。

本公开实施例还提供了一种业务运行平台,包括:

流程图获取模块,用于获取与待运行业务关联的业务流程图;

解析模块,用于对所述业务流程图进行解析,以得到所述业务流程图中至少两个第一业务函数的运行顺序,以及所述至少两个第一业务函数的运行结果间的依赖关系;

存储空间创建模块,创建第一共享存储空间,所述第一共享存储空间用于保存所述第一业务函数的运行结果;

业务运行模块,用于基于所述运行顺序和所述运行结果间的依赖关系运行所述至少两个第一业务函数,并将所述至少两个第一业务函数的运行结果存储到所述第一共享存储空间中。

在一些实施例中,还包括:

交互接口,用于通过所述交互接口接收用户发送的与待运行业务关联的业务流程图。

在一些实施例中,所述交互接口还用于交互接口接收用户发送的业务运行指令;

所述存储空间创建模块,用于基于所述业务运行指令,创建第一共享存储空间。

在一些实施例中,所述第一业务函数包括第一业务函数本体,以及与所述第一业务函数本体关联的子函数,所述子函数包括条件子函数、前置子函数、后置子函数、超时子函数和容错子函数中的至少一个。

在一些实施例中,还包括:

运行信息获取模块,用于获取所述至少两个第一业务函数的函数运行信息,所述函数运行信息包括所述至少两个第一业务函数的函数代码;

所述业务运行模块具体用于基于所述运行顺序、所述运行结果间的依赖关系和所述函数代码运行所述至少两个第一业务函数。

在一些实施例中,还包括:

配置信息获取模块,用于获取所述至少两个第一业务函数的运行配置信息,所述运行配置信息包括所述至少两个第一业务函数运行所需的依赖数据接口信息和/或存储系统配置信息:基于所述依赖数据接口信息获取所述至少两个第一业务函数运行所需的依赖数据,和/或,基于所述存储系统配置信息获取所述至少两个第一业务函数运行所需的存储系统数据;将所述至少两个第一业务函数运行所需的依赖数据和/或存储系统数据注入所述函数代码中。

在一些实施例中,所述函数运行信息还包括所述至少两个第一业务函数的描述信息。

在一些实施例中,所述函数运行信息还包括初始化处理信息,所述方法还包括:

初始化模块,用于基于所述初始化处理信息为运行所述第一业务函数进行初始化处理。

在一些实施例中,还包括运行引擎和函数库:

所述流程图获取模块、解析模块、存储空间创建模块、运行信息获取模块和业务运行模块均设置在运行引擎中,所述同一个业务流程图中的至少两个第一业务函数的函数运行信息被加载到同一个所述运行引擎中;所述至少两个第一业务函数的函数运行信息存储在函数库中获取。

在一些实施例中,所述交互接口还用于接收用户发送的任务卸载请求;所述运行引擎还包括:

卸载模块,用于卸载所述至少两个第一业务函数的函数运行信息。

在一些实施例中,所述交互接口还用于接收流程图更新请求,所述流程图获取模块用于获取更新后的与所述待运行业务关联的业务流程图;

所述解析模块,还用于对所述更新后的业务流程图进行解析,以得到更新后的所述业务流程图中至少两个第二业务函数的运行顺序,以及所述至少两个第二业务函数的运行结果间的依赖关系;

所述存储空间创建模块,还用于创建第二共享存储空间,所述第二共享存储空间用于保存所述第二业务函数的运行结果;

所述业务运行模块,还用于基于所述运行顺序和所述运行结果间的依赖关系运行所述至少两个第二业务函数,并将所述至少两个第二业务函数的运行结果存储到所述第二共享存储空间中;所述运行引擎还包括:

卸载模块,用于卸载在先加载到所述执行引擎中的所述与待运行业务关联的原业务流程图和/或至少两个第一业务函数的函数运行信息。

在一些实施例中,还包括:

工具包下发模块,用于向用户下发函数开发工具包,以由用户基于所述函数开发工具包开发所述第一业务函数;

函数接收模块,用于接收用户开发的第一业务函数,并存储到函数库中。

在一些实施例中,还包括:

信息下发模块,用于向用户下发开发所述第一业务函数所需的依赖数据接口信息和/或存储系统配置信息,以由用户将所述依赖数据接口信息和所述存储系统配置信息编辑到所述第一业务函数的函数代码中。

在一些实施例中,所述信息下发模块设置于所述工具包下发模块中。

在一些实施例中,还包括:

运行环境下发模块,用于向用户下发运行业务流程图中至少两个第一业务函数的虚拟运行环境,以由用户基于所述虚拟运行环境测试开发的所述第一业务函数。

在一些实施例中,所述虚拟运行环境集成在所述函数开发工具包中。

在一些实施例中,所述交互接口包括界面交互接口、SDK接口或者API接口中的至少一种。

本公共实施例还提供一种电子设备,所述电子设备包括:

处理器;

用于存储所述处理器可执行指令的存储器;

所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述的业务运行方法。

本公共实施例还提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述的业务运行方法。

本公共实施例还提供一种计算机程序产品,所述计算机程序产品用于执行上述的业务运行方法。

本公开实施例提供了一种技术方案,其中创建第一共享存储空间,该第一共享存储空间用于保存所述第一业务函数的运行结果,其是通过为同一个业务流程图中的至少两个第一业务函数创建第一共享存储空间,该第一共享存储空间中可以存储上述业务函数的运行结果,进而使得第一业务函数之间的调用或通信可以由在上述共享存储空间中存储和读取运行结果来解决,从而不需要带来额外的时间消耗,缩短业务整体的执行时间,提高业务运行效率。

附图说明

结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。

图1为本公开实施例提供的一种业务运行方法的流程示意图;

图2为本公开实施例提供的一种业务流程图的示意图;

图3为本公开实施例提供的另一种业务运行方法的流程示意图;

图4为本公开实施例提供的一种业务卸载流程的流程示意图;

图5为本公开实施例提供的一种更新业务流程图的流程示意图;

图6为本公开实施例提供的一种函数开发流程的流程示意图;

图7为本公开实施例提供的另一种函数开发流程的流程示意图;

图8为本公开实施例提供的一种业务运行平台的结构示意图;

图9为本公开实施例提供的另一种业务运行平台的结构示意图;

图10为本公开实施例提供的再一种业务运行平台的结构示意图;

图11为本公开实施例提供的又一种业务运行平台的结构示意图;

图12为本公开实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。

本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。

需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。

需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。

针对现有技术中FaaS平台在实现中,业务函数之间的通信往往基于专有的网络协议或者远程过程调用(Remote Procedure Call,简称:RPC)协议来实现调用或通信,而复杂的业务一般由多个业务函数组成,这样业务函数之间的调用或通信会带来额外的时间消耗,导致业务整体的执行耗时时间长,业务运行效率低的缺陷。本公开实施例提供了一种技术方案,是通过为同一个业务流程图中的至少两个业务函数创建共享存储空间,该共享存储空间中可以存储上述业务函数的运行结果,进而使得业务函数之间的调用或通信可以由在上述共享存储空间中存储和读取运行结果来解决,从而不需要带来额外的时间消耗,缩短业务整体的执行时间,提高业务运行效率。

图1为本公开实施例提供的一种业务运行方法的流程示意图,该业务运行方法可以是通过一个业务运行平台来实现,该业务运行平台运行在电子设备上,该电子设备包括但不限于云服务器、本地服务器或者本地主机设备等;且上述的业务运行平台可以包括运行引擎,并通过运行引擎运行业务流程图中的至少两个业务函数。可选的,上述的业务运行平台还可以包括交互接口,并通过该交互接口接收用户的发送的业务流程图,或者其他的指令;可选的,上述的业务运行平台还可以包括函数库,用于存储业务函数等等,该业务运行平台的组成部分可以根据实际需求进行设置,本公开实施例中并不进行限制。如图1所示,示例性的,该方法包括如下步骤:

步骤101、获取与待运行业务关联的业务流程图;

具体的,上述的业务流程图主要限定业务运行需要哪些业务函数,该业务函数的具体运行顺序,哪个业务函数先运行,哪个业务函数后运行,哪个业务函数并行运行等;以及业务函数的运行结果间的依赖关系,即存在先后执行顺序的两个业务函数,先运行的业务函数的执行结果是后运行的业务函数的输入信息,或者可以限定先运行的业务函数的执行结果满足预设条件时,后运行的业务函数才能够正式运行;

另外,本步骤中的获取与待运行业务关联的业务流程图,其中的业务流程图可以是由用户根据实际的业务需求编辑得到的业务流程图,具体的,可以是向用户提供交互接口,并通过交互接口接收用户发送的与待运行业务关联的业务流程图。具体的,上述的交互接口可以包括但不限于界面交互接口、SDK接口或者API接口中的至少一种,用户可以通过上述任意一种或几种接口来发送业务流程图,并且可选的,可以通过上述任意一种交互接口为用户提供在线编辑功能,即由用户通过上述交互接口在线编辑业务流程图。

步骤102、对业务流程图进行解析,以得到业务流程图中至少两个第一业务函数的运行顺序,以及至少两个第一业务函数的运行结果间的依赖关系;

在获取到上述的业务流程图后,即可以对业务流程图进行解析以得到业务流程图所限定的内容,为后续运行业务流程图中的至少两个业务函数做准备,为了描述更加清晰,本公开实施例中,将业务流程图中的业务函数称为第一业务函数。如上的,业务流程图中限定了至少两个第一业务函数的运行顺序,以及至少两个第一业务函数的运行结果间的依赖关系,则可以从上述业务流程图中解析得到上述信息。

图2为本公开实施例提供的一种业务流程图的示意图,如图2所示,该业务流程图中包括四个业务函数,即业务函数A、业务函数B、业务函数C和业务函数D,其中的运行顺序是先运行业务函数A,然后并行运行业务函数B和业务函数C,最后运行业务函数D,即A>(B,C)>D;其中,可以限定业务函数D的运行条件是业务函数B和业务函数C中至少一个的运行结果,或者业务函数B的运行条件是业务函数A的运行结果,从而限定出上述运行结果间的依赖关系。

可选的,可以进一步设置入口和出口,通过入口注入业务执行所需的外部数据,通过出口输出业务执行完成后得到的结果,该结果通常可以为业务函数D的运行结果。

步骤103、创建第一共享存储空间,该第一共享存储空间用于保存第一业务函数的运行结果;

本步骤中为了解决在至少两个第一业务函数运行过程中,相互之间需要调用执行结果的问题,为每个业务流程图,也就是业务流程图中的至少两个第一业务函数创建第一共享存储空间,使得第一业务函数运行过程中所产生的运行结果可以存储到第一共享存储空间中,使得可以方便快捷的相互调用,从而缩短业务整体的执行时间,提高业务运行效率。

在一些实施例中,本步骤中在创建第一共享存储空间之前,可以是先通过交互接口接收用户发送的业务运行指令,然后基于业务运行指令,创建第一共享存储空间。其中的交互接口可以包括但不限于界面交互接口、SDK接口或者API接口中的至少一种,用户可以通过上述任意一种或几种接口来发送业务流程图,以及发送业务运行指令。

步骤104、基于上述运行顺序和上述运行结果间的依赖关系运行上述至少两个第一业务函数,并将至少两个第一业务函数的运行结果存储到步骤103创建的第一共享存储空间中。

本步骤中即在业务流程图所包括的两个第一业务函数的运行过程中,将运行结果都存储到第一共享存储空间中,可以节约第一业务函数间调用时的效率。例如图2所示的实施例中,可以将业务函数A、业务函数B、业务函数C和业务函数D的执行结果都存储到第一共享存储空间中,并分别命名为运行结果A、运行结果B、运行结果C和运行结果D,其中,具体的业务运行流程可以如下所示:

步骤一、运行第一个业务函数A,将其运行的结果存储到第一共享存储空间中,命名为运行结果A;

步骤二、运行业务函数B和业务函数C,若业务函数B的运行需要用到运行结果A,则会从第一共享存储空间中去读取运行结果A,然后运行,业务函数C的运行过程也同理;在运行业务函数B和业务函数C运行结束后,将对应的运行结果存储到第一共享存储空间中,命名为运行结果B和运行结果C;

步骤三、运行业务函数D,假定其运行需要运行结果B和运行结果C,则会从第一共享存储空间中读取运行结果B和运行结果C,然后再运行,并将运行结果存到第一共享存储空间中,命名为运行结果D。

如果检测到整个业务流程图的运行步骤结束,则可以将运行结果D,或者还包括上述运行结果A、运行结果B和运行结果C中的一个作为业务输出结果从出口输出。本公开实施例中,从出口输出的业务输出结果,其可以是反馈给发送业务流程图的发送方,也可以是其他的第三方,以支持对多种业务场景的适应和匹配,应用场景更加广泛。

在一些实施例中,也可以设置上述的业务函数B和业务函数C的运行结果均为运行结果Y,此时业务函数可以基于业务函数B和业务函数C中的任一个运行结果Y而运行。

在一些实施例中,其中的第一业务函数除可以包括第一业务函数本体外,还可以进一步包括与第一业务函数本体关联的子函数,该子函数按照类型划分,包括但不限于条件子函数、前置子函数、后置子函数、超时子函数和容错子函数中的至少一个。

其中执行条件子函数,是指仅当执行条件子函数运行通过时才运行第一业务函数本体;前置子函数,是指在运行第一业务函数本体前会运行子函数;后置子函数,是指在第一业务函数本体运行成功后,才会运行的子函数;超时子函数,是指在第一业务函数本体运行超时后才会运行的子函数,其中的超时可以是用户设置的超时时间或系统默认的超时时间;容错子函数,是指第一业务函数本体运行出错时才会运行的子函数,在设置了超时子函数时,其中的运行出错通常不包括运行超时的情况。

本公开实施例中,其中第一业务函数本体及其子函数会作为一个整体的函数节点来运行,当然,并为所有的第一业务函数都会配置子函数,其可以不配置任何子函数或只配置某一个或某几个子函数。

通过上述子函数的配置,可以设置第一业务函数运行的各种条件,或者出现异常情况的处理方式,从而可以丰富其应用场景,满足用户的各种业务需求。

在一些实施例中,如图3所示,其中在对业务流程图进行解析之后,运行上述至少两个第一业务函数之前,还可以进一步包括:

步骤105、获取至少两个第一业务函数的函数运行信息,该函数运行信息包括至少两个第一业务函数的函数代码;

则上述图1所示实施例中的步骤104中,其中的基于运行顺序和运行结果间的依赖关系运行至少两个第一业务函数的步骤,可以包括:

基于运行顺序、运行结果间的依赖关系和函数代码运行上述至少两个第一业务函数。

在一些实施例中,仍如图3所示,其中在运行上述至少两个第一业务函数之前,还包括:

步骤106、获取所述至少两个第一业务函数的运行配置信息,上述的配置信息可以包括至少两个第一业务函数运行所需的依赖数据接口信息和/或存储系统配置信息。

步骤107、基于依赖数据接口信息获取至少两个第一业务函数运行所需的依赖数据,和/或,基于存储系统配置信息获取至少两个第一业务函数运行所需的存储系统数据;

步骤108、将该至少两个第一业务函数运行所需的依赖数据和/或存储系统数据注入函数代码中。

上述依赖数据或者存储系统数据是第一业务函数初始运行时所需要的数据,例如某一个计算任务,其在运行时需要获取初始的外部数据,上述的外部数据可以存储在存储系统中,或者从外部的数据供应商处获取,而外部的数据供应商提供了相应的结果,因此可以在业务正式运行前,从依赖数据接口获取依赖数据,或者从存储系统获取存储系统数据,然后将其注入到函数代码中,以利用后续业务的正常运行。

在一些实施例中,上述的函数运行信息包括至少两个第一业务函数的描述信息,该第一业务函数的描述信息可以包括函数的功能、特性等介绍信息,以使得用户可以充分了解每个第一业务函数。

在一些实施例中,上述的函数运行信息还包括初始化处理信息,在该方法还可以进一步包括:

基于初始化处理信息为运行第一业务函数进行初始化处理。

如上所述的,本公开实施例提供的技术方案中,其中可以运行在业务运行平台中,而该业务运行平台可以包括运行引擎,则本公开实实施例中上述图1所示的实施例中,其中各步骤均在运行引擎中执行,对于其中的函数运行信息,包括函数代码、描述信息和初始化信息等,都可以由开发者开发后记录在函数库中,运行引擎在获取到业务流程图后,对业务流程图进行解析,得到所需要的第一业务函数,进而可以去函数库中获取对应的函数运行信息,并可以将至少两个第一业务函数的函数信息加载在同一个运行引擎中,以利用后续创建第一共享存储空间,实现内存共享,降低相互间调用运行结果的效率。

另外,具体的,对于上述步骤中基于依赖数据接口信息获取至少两个第一业务函数运行所需的依赖数据,和/或,基于存储系统配置信息获取至少两个第一业务函数运行所需的存储系统数据。其可以是在业务运行平台中设置配置中心模块,由运行引擎在从函数运行信息中提取出来依赖数据接口信息和/或存储系统配置信息后,将其发送给配置中心模块,由配置中心模块基于上述的依赖数据接口信息和/或存储系统配置信息去获取相应的数据,然后反馈给运行引擎。

本公开上述实施例中,主要涉及到如何获取业务流程图,并基于业务流程图运行对应的业务。在有些情况下,业务运行完毕后,可以卸载运行中的业务。图4为本公开实施例提供的一种业务卸载流程的流程示意图,如图4所示,包括如下步骤:

步骤401、通过交互接口接收到用户发送的任务卸载请求,该交互接口是业务运行平台提供的对外交互接口,如同接收业务流程图的交互接口,其上述的交互接口可以包括但不限于界面交互接口、SDK接口或者API接口中的至少一种。

步骤402、卸载所述至少两个第一业务函数的函数运行信息,具体可以包括将上述至少两个第一业务函数的函数代码从运行引擎中卸载,以及删除第一业务函数的描述信息、初始化信息等,当上述的第一业务函数包括第一业务函数本体,以及与该第一业务函数本体关联的子函数,该子函数包括条件子函数、前置子函数、后置子函数、超时子函数和容错子函数中的至少一个时,可以是卸载上述的第一业务函数本体,以及与该第一业务函数本体关联的子函数。

进一步的,对于上述实施例中的函数运行信息中包括销毁处理信息时,该方法还可以进一步包括:

步骤403、基于销毁处理信息进行销毁处理。

具体的,该销毁处理过程可以包括清除至少两个第一业务函数运行过程中所生成的运行结果,包括最终的运行结果、中间运行结果等内容等。通过销毁处理步骤可以进一步清除上述第一业务函数运行过程中所产生的数据信息,一方面能够节约存储空间,二方面由于本公共的技术方案可以应用到云服务器等应用场景中,及时清除业务函数运行所产生的数据,也能够达到保护数据安全的作用。

在一些实施例中会存在更新业务流程图的情况出现,在此情况下,通常会基于更新后的业务流程图,先按照图1所示实施例中的步骤,达到运行更新后的业务流程图中的第二业务函数后,在卸载之前运行的业务流程图中改的第一业务函数。

具体的,图5为本公开实施例提供的一种更新业务流程图的流程示意图,如图5所示,包括如下步骤:

步骤501、通过交互接口接收流程图更新请求,以获取更新后的业务流程图;

具体的,可以是通过图1所示步骤101中的方式,通过各种类型的接口接收用户发送的流程图更新请求,该流程图更新请求中包括更新后的业务流程图。在此基础上可以继续按照图1所示的步骤102-步骤104执行如下的步骤502-步骤504,本实施例中对下述步骤502-步骤504不再详细描述;

步骤502、对更新后的业务流程图进行解析,以得到更新后的业务流程图中至少两个第二业务函数的运行顺序,以及至少两个第二业务函数的运行结果间的依赖关系;

步骤503、创建第二共享存储空间,该第二共享存储空间用于保存第二业务函数的运行结果;

步骤504、基于上述运行顺序和上述运行结果间的依赖关系运行至少两个第二业务函数,并将至少两个第二业务函数的运行结果存储到第二共享存储空间中;

步骤505、卸载在先加载到执行引擎中的与待运行业务关联的原业务流程图和/或至少两个第一业务函数的函数运行信息。

在步骤504中更新后的至少两个第二业务函数运行起来后,说明业务已经按照更新后的业务流程图正常运行了,在此即可以卸载之前的第一业务函数,具体的卸载方式可以参考图4所示的实施例,并且在卸载完成后,也可以进一步的基于销毁处理信息进行销毁处理,具体的销毁处理方式也可以参照上述图4所示的实施例。

本公开实施例中的业务运行平台,在上述实施例中是基于开发者开发的第一业务函数运行业务。上述的第一业务函数可以由不同的开发者进行开发。图6为本公开实施例提供的一种函数开发流程的流程示意图,具体可以包括:

步骤601、向用户下发函数开发工具包,以由用户基于函数开发工具包开发第一业务函数;

具体的,上述的第一业务函数可以是业务流程图中的一个或者多个函数。通常一个业务流程图能够完成一项完整的功能任务,而一个函数通常是完整功能任务的一部分,例如一项推荐服务,其可以按照业务流程图拆分为物料召回、模型排序和规则重排三个模块,则一个第一业务函数可以是其中一个模块对应的功能,在确定好第一业务函数对应的功能后,可以向开发者明确开发任务,用户可以基于上述的函数开发工具包进行开发,开发得到具体的函数代码,开发完成后可以通过编辑工具将函数代码打包。

而根据实际需要,开发者除提供函数代码外,还可以进一步的提供该第一业务函数的描述信息或初始化信息。

步骤602、接收用户开发的第一业务函数,并存储到函数库中。

本步骤是在步骤601的基础上,将第一业务函数的函数代码。或者是,还可以进一步的将第一业务函数的描述信息或初始化信息,发送到业务运行平台,以将上述信息存储到函数库中,上述的第一业务函数的函数代码、描述信息和初始化信息,可以统称为第一业务函数的运行信息,以在业务运行时使用。

在一些实施例中,上述步骤601中,还可以向用户下发开发第一业务函数所需的依赖数据接口信息和/或存储系统配置信息,此时负责开发第一业务函数的用户可以直接引用上述信息,将上述依赖数据接口信息和存储系统配置信息编辑到第一业务函数的函数代码中,从而无需关心最终第一业务函数最终在运行时具体的环境和集群配置等。

上述开发第一业务函数的函数代码所需的依赖数据接口信息和/或存储系统配置信息,其可以是和函数开发工具包同时下发的,在函数开发工具包中嵌入上述的信息,用户在开发第一业务函数时能够随时查看。

进一步的,图7为本公开实施例提供的另一种函数开发流程的流程示意图,其在图6所示的实施例的基础上,还可以进一步包括:

步骤603、向用户下发运行业务流程图中至少两个第一业务函数的虚拟运行环境,以由用户基于虚拟运行环境测试开发的第一业务函数。

本步骤中的虚拟运行环境可以模拟业务运行平台中的运行引擎,将用户开发的第一业务函数在虚拟运行环境中运行,以达到用户可以在本地进行函数开发和测试的目的,并可以降低测试成本。如上述实施例所示的,其中的第一业务函数是在一个业务流程图中执行的,因此,该虚拟运行环境中也可以按照业务流程图进行测试,此时若用户开发的是业务流程图中所有第一业务函数,则可以同时对上述所有第一业务函数进行测试,而用户仅需要开发业务流程图中一个第一业务函数时,则为了实现对用户开发的第一业务函数的测试,可以同时将一次测试所需业务流程图中的其他第一业务函数也下发到虚拟运行环境中。

本公开实施例中,其中的虚拟运行环境可以集成到函数开发工具包中,并且在函数开发工具包添加测试按钮,实现对开发的第一业务函数的实时测试。

在一些实施例中,其中的函数开发工具包可以支持多种编程语言,以由用户基于不同的编程语言开发第一业务函数。

与上述业务运行方法对应的,本公开实施例还提供了一种业务运行平台,其可以用于执行上述的业务运行方法,其中具体的技术方案可以参考上述图1-图7所示的实施例,本业务运行平台实施例中不再进行详细描述。图8为本公开实施例提供的一种业务运行平台的结构示意图,如图8所示,其包括:

流程图获取模块11,用于获取与待运行业务关联的业务流程图;

解析模块12,用于对所述业务流程图进行解析,以得到所述业务流程图中至少两个第一业务函数的运行顺序,以及所述至少两个第一业务函数的运行结果间的依赖关系;

存储空间创建模块13,创建第一共享存储空间,所述第一共享存储空间用于保存所述第一业务函数的运行结果;

业务运行模块14,用于基于所述运行顺序和所述运行结果间的依赖关系运行所述至少两个第一业务函数,并将所述至少两个第一业务函数的运行结果存储到所述第一共享存储空间中。

在一些实施例中,图9为本公开实施例提供的另一种业务运行平台的结构示意图,如图9所示,其除图8所示的结构外,还包括:

交互接口15,用于通过所述交互接口接收用户发送的与待运行业务关联的业务流程图。

在一些实施例中,所述交互接口还用于交互接口接收用户发送的业务运行指令;

所述存储空间创建模块13,具体用于基于所述业务运行指令,创建第一共享存储空间。

在一些实施例中,所述第一业务函数包括第一业务函数本体,以及与所述第一业务函数本体关联的子函数,所述子函数包括条件子函数、前置子函数、后置子函数、超时子函数和容错子函数中的至少一个。

在一些实施例中,还包括:

运行信息获取模块16,用于获取所述至少两个第一业务函数的函数运行信息,所述函数运行信息包括所述至少两个第一业务函数的函数代码;

所述业务运行模块14具体用于基于所述运行顺序、所述运行结果间的依赖关系和所述函数代码运行所述至少两个第一业务函数。

在一些实施例中,还包括:

配置信息获取模块17,用于获取所述至少两个第一业务函数的运行配置信息,所述运行配置信息包括所述至少两个第一业务函数运行所需的依赖数据接口信息和/或存储系统配置信息:基于所述依赖数据接口信息获取所述至少两个第一业务函数运行所需的依赖数据,和/或,基于所述存储系统配置信息获取所述至少两个第一业务函数运行所需的存储系统数据;将所述至少两个第一业务函数运行所需的依赖数据和/或存储系统数据注入所述函数代码中。

在一些实施例中,所述函数运行信息还包括所述至少两个第一业务函数的描述信息。

在一些实施例中,所述函数运行信息还包括初始化处理信息,所述方法还包括:

初始化模块,用于基于所述初始化处理信息为运行所述第一业务函数进行初始化处理。

在一些实施例中,图10为本公开实施例提供的再一种业务运行平台的结构示意图,上述业务运行平台还包括运行引擎10和函数库20:

上述的流程图获取模块11、解析模块12、存储空间创建模块13、运行信息获取模块16和业务运行模块14均设置在运行引擎中,所述同一个业务流程图中的至少两个业务函数的函数运行信息被加载到同一个所述运行引擎10中;所述至少两个第一业务函数的函数运行信息存储在函数库20中获取。

另外,对于上述的配置信息获取模块,其也可以设置在运行引擎10中,并完成上述所有公开,但在有些情况下,还可以设置专门的配置中心模块30,其中配置信息获取模块17在获取到所述至少两个第一业务函数的运行配置信息,所述运行配置信息包括所述至少两个第一业务函数运行所需的依赖数据接口信息和/或存储系统配置信息;然后将上述的运行配置信息发送给配置中心模块30,由配置中心模块30基于依赖数据接口信息获取所述至少两个第一业务函数运行所需的依赖数据,和/或,基于所述存储系统配置信息获取所述至少两个第一业务函数运行所需的存储系统数据,然后将其反馈给配置信息获取模块17;以由配置信息获取模块17将所述至少两个第一业务函数运行所需的依赖数据和/或存储系统数据注入所述函数代码中。

在一些实施例中,所述交互接口15还用于接收用户发送的任务卸载请求;所述运行引擎10还包括:

卸载模块18,用于卸载所述至少两个第一业务函数的函数运行信息。

在一些实施例中,所述交互接口15还用于接收流程图更新请求,所述流程图获取模块用于获取更新后的与所述待运行业务关联的业务流程图;

所述解析模块12,还用于对所述更新后的业务流程图进行解析,以得到更新后的所述业务流程图中至少两个第二业务函数的运行顺序,以及所述至少两个第二业务函数的运行结果间的依赖关系;

所述存储空间创建模块13,还用于创建第二共享存储空间,所述第二共享存储空间用于保存所述第二业务函数的运行结果;

所述业务运行模块14,还用于基于所述运行顺序和所述运行结果间的依赖关系运行所述至少两个第二业务函数,并将所述至少两个第二业务函数的运行结果存储到所述第二共享存储空间中;所述运行引擎10还包括:

卸载模块18,用于卸载在先加载到所述执行引擎中的所述与待运行业务关联的原业务流程图和/或至少两个第一业务函数的函数运行信息。

在一些实施例中,图11为本公开实施例提供的又一种业务运行平台的结构示意图,业务运行平台还包括:

工具包下发模块21,用于向用户下发函数开发工具包,以由用户基于所述函数开发工具包开发所述第一业务函数;

函数接收模块22,用于接收用户开发的第一业务函数,并存储到函数库20中。

在一些实施例中,还包括:

信息下发模块23,用于向用户下发开发所述第一业务函数所需的依赖数据接口信息和/或存储系统配置信息,以由用户将所述依赖数据接口信息和所述存储系统配置信息编辑到所述第一业务函数的函数代码中。

在一些实施例中,所述信息下发模块23设置于所述工具包下发模块21中。

在一些实施例中,还包括:

运行环境下发模块24,用于向用户下发运行业务流程图中至少两个第一业务函数的虚拟运行环境,以由用户基于所述虚拟运行环境测试开发的所述第一业务函数。

在一些实施例中,所述虚拟运行环境集成在所述函数开发工具包中。

在一些实施例中,所述交互接口包括界面交互接口、SDK接口或者API接口中的至少一种。

图12为本公开实施例提供的一种电子设备的结构示意图,对于本公开实施例中上述的AB测试算法的性能参数信息获取方案,其既可以在云服务器上实现,也可以在本地主机实现,因此该电子设备既可以是云服务器,也可以是本地主机,或者是上述实施例中的客户端设备。

下面具体参考,其示出了适于用来实现本公开实施例中的电子设备500的结构示意图。本公开实施例中的电子设备500可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和占用范围带来任何限制。

如图所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)510,其可以根据存储在只读存储器(ROM)520中的程序或者从存储装置580加载到随机访问存储器(RAM)5030中的程序而执行各种适当的动作和处理。在RAM 530中,还存储有电子设备500操作所需的各种程序和数据。处理装置510、ROM 520以及RAM530通过总线540彼此相连。输入/输出(I/O)接口550也连接至总线540。

通常,以下装置可以连接至I/O接口550:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置560;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置570;包括例如磁带、硬盘等的存储装置580;以及通信装置590。通信装置590可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置590从网络上被下载和安装,或者从存储装置580被安装,或者从ROM 520被安装。在该计算机程序被处理装置510执行时,执行本公开实施例的AB测试算法的性能信息获取方法中限定的上述功能。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

在一些实施方式中,客户端、服务端可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取与待运行业务关联的业务流程图;对所述业务流程图进行解析,以得到所述业务流程图中至少两个第一业务函数的运行顺序,以及所述至少两个第一业务函数的运行结果间的依赖关系;创建第一共享存储空间,所述第一共享存储空间用于保存所述第一业务函数的运行结果;基于所述运行顺序和所述运行结果间的依赖关系运行所述至少两个第一业务函数,并将所述至少两个第一业务函数的运行结果存储到所述第一共享存储空间中。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务端上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

根据本公开的一个或多个实施例,本公开提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开提供的任一所述的业务运行方法。

根据本公开的一个或多个实施例,本公开提供了一种计算机程序,所述计算机程序用于执行如本公开提供的任一所述的业务运行方法。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

相关技术
  • 业务运行方法、装置、电子设备和计算机存储介质
  • 可执行程序的运行方法、装置、电子设备及计算机存储介质
技术分类

06120112554363