一种在中台系统中实现工作流的方法与设备与流程

文档序号:25481139发布日期:2021-06-15 21:40阅读:158来源:国知局
一种在中台系统中实现工作流的方法与设备与流程

本申请涉及信息技术领域,尤其涉及一种在中台系统中实现工作流的技术。



背景技术:

现代中台系统承载着企业商业运营的复杂业务逻辑,中台系统的工作流需要实现复杂操作编排。这些复杂的业务逻辑由一系列的异步调用构成,这些异步调用之间还存在着复杂的约束和条件分支。如果按照传统的异步调用,中台系统的工作流并不能实现以下需求:(1)并行任务异常容忍;(2)并行任务处理多次异常;(3)任务回滚,即任务出错后,可以对前序任务进行回滚;(4)任务重做,即断电后任务可以继续完成。

目前开源软件库中有一些基于javascript的工作流的简单实现。不过这些工作流并不完善,不具备多次异常处理、任务回滚、任务重做等较为完备的功能。



技术实现要素:

本申请的一个目的是提供一种在中台系统中实现工作流的方法与设备。

根据本申请的一个方面,提供了一种在中台系统中实现工作流的方法,其中,所述方法包括:

从数据库中读取工作流,执行所述工作流的任务,其中,所述工作流包括若干个任务;

当所述工作流中每个任务完成时,将关于该任务的任务记录写入所述数据库中;

在任务执行过程中,利用异常处理机制在任务执行的地方进行异常捕获。

根据本申请的另一个方面,还提供了一种在中台系统中实现工作流的设备,其中,所述设备包括:

执行模块,用于从数据库中读取工作流,执行所述工作流的任务,其中,所述工作流包括若干个任务;

记录模块,用于当所述工作流中每个任务完成时,将关于该任务的任务记录写入所述数据库中;

异常处理模块,用于在任务执行过程中,利用异常处理机制在任务执行的地方进行异常捕获。

根据本申请的又一个方面,还提供了一种计算设备,其中,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行所述的在中台系统中实现工作流的方法。

根据本申请的又一个方面,还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机可读指令可被处理器执行以实现所述的在中台系统中实现工作流的方法。

本申请提供的方案从数据库中读取包含若干个任务的工作流,并执行所述工作流的任务,当所述工作流中每个任务完成时,将关于该任务的任务记录写入所述数据库中,并且在任务执行过程中,利用异常处理机制在任务执行的地方进行异常捕获。与现有技术相比,本申请提供的方案可以使中台系统的工作流满足并行任务异常容忍,并行任务处理多次异常的需求,提高中台系统的稳定性。进一步地,本申请提供的方案还可以使中台系统的工作流满足任务回滚、任务重做等需求,从而提升用户体验。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其他特征、目的和优点将会变得更明显:

图1是根据本申请实施例的一种在中台系统中实现工作流的方法流程图;

图2是根据本申请实施例的一种在中台系统中实现工作流的设备示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的装置或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

本申请实施例提供了在中台系统中实现工作流的方法,可以使中台系统的工作流满足并行任务异常容忍,并行任务处理多次异常的需求,提高中台系统的稳定性。进一步地,该方法还可以使中台系统的工作流满足任务回滚、任务重做等需求,从而提升用户体验。

在实际场景中,执行该方法的设备可以是用户设备、网络设备或者用户设备与网络设备通过网络相集成所构成的设备。其中,所述用户设备包括但不限于智能手机、平板电脑、个人计算机(pc)等终端设备,所述网络设备包括但不限于网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(cloudcomputing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。

图1是根据本申请实施例的一种在中台系统中实现工作流的方法流程图,该方法包括步骤s101、步骤s102和步骤s103。

步骤s101,从数据库中读取工作流,执行所述工作流的任务,其中,所述工作流包括若干个任务。

例如,所述数据库可以采用mysql数据库。每一条工作流是所述数据库中的一行记录。每次要执行任务的时候从所述数据库中读取出工作流,并且开始执行。

在一些实施例中,所述工作流的任务采用结构化的语言描述,这样能够更加清晰地描述整个任务的结构。

一个用结构化的语言描述任务的例子如下:

在一些实施例中,所述工作流的任务的类型包括以下至少任一项:并行任务,其中,所述并行任务的若干个子任务同时执行;串行任务,其中,所述串行任务的若干个子任务依次执行;单个任务。

例如,所述并行任务的若干个子任务同时执行,并且这些子任务被看作一个整体(所述并行任务),这些子任务作为一个整体有任务执行成功或失败的标志。具体地,所述并行任务还可以分为两种,错误敏感的并行任务和错误不敏感的并行任务。错误敏感的并行任务,如果在执行时其中一个子任务出现错误,那么整个并行任务就会失败。错误不敏感的并行任务,如果有一个子任务执行失败,整个并行任务依然可以执行成功。

所述串行任务的若干个子任务依次执行,并且这些子任务被看作一个整体(所述串行任务),这些子任务作为一个整体有任务执行成功或失败的标志。所述串行任务均为错误敏感。所述串行任务在执行时,只要有一个子任务出现错误,那么整个串行任务就会失败。

所述单个任务比较简单,就是简单的执行,也有执行成功或失败的结果。所述单个任务是工作流中最基本的执行单元。

步骤s102,当所述工作流中每个任务完成时,将关于该任务的任务记录写入所述数据库中。

例如,所述工作流中每一步完成的时候都要写入所述数据库,通过所述数据库来记录所述工作流中每个任务的执行情况。

在一些实施例中,所述步骤s102包括:当所述工作流中的所述并行任务完成时,将关于该并行任务的任务记录写入所述数据库中,利用所述数据库的行锁锁住该并行任务的任务记录。

例如,因为所述并行任务的若干个子任务同时执行,所以会出现多个子任务同时完成需要写入所述数据库的情况。在这种情况下,可以利用mysql数据库中的行锁,来锁住这条记录。从而保证所述并行任务的正确执行顺序,防止其他任务出现幻读。

步骤s103,在任务执行过程中,利用异常处理机制在任务执行的地方进行异常捕获。

例如,可以利用所述异常处理机制保证所述并行任务在连续多次异常时得到正确处理。因为任务都是异步执行的,所以在任务执行的地方进行异常捕获,而不是使用全局异常捕获,这样不会遗漏异常。

在一些实施例中,所述异常处理机制采用javascript的try-catch机制。其中,javascript是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。javascript有使用面广,易于学习等特点,非常便于前端开发人员编写后端代码。因此可以使用基于node.js的javascript开发所述中台系统。在此,可以利用javascript的try-catch机制对异常进行捕获。

在一些实施例中,也可以利用typescript的异常处理机制对异常进行捕获。其中,typescript是javascript的加强版,该语言在javascript的基础上增强了类型系统,减少错误的发生率。

在一些实施例中,所述方法还包括:当任务重做时,把对应的任务重新读入内存,检查每个子任务的完成情况;如果该子任务处于完成状态,则跳过该子任务;如果该子任务处于失败状态,则停止或跳过该子任务;如果该子任务处于执行状态,则重新执行该子任务。

例如,任务重做指的是断电后任务可以继续完成。当任务重做时,将所述数据库中保存的对应任务重新读入内存,并且可以根据任务编号确定该任务是否已经执行完毕。然后重新执行整个工作流。

在一些实施例中,当任务重做时,把对应的任务重新读入内存,检查每个子任务的完成情况;如果该子任务处于失败状态,则停止或跳过该子任务。具体地,如果所述并行任务的子任务处于失败状态,可以根据所述并行任务是错误敏感或者错误不敏感,选择停止或者跳过该子任务。

在一些实施例中,所述方法还包括:当工作流回滚时,把对应的任务重新读入内存,检查每个子任务的完成情况;如果该子任务处于完成或执行状态,则该子任务执行回滚;如果该子任务处于失败状态,则该子任务不执行回滚。

例如,任务回滚指的是任务出错后可以对前序任务进行回滚,工作流回滚指的是工作流中的任务出错后可以对前序任务进行回滚。当工作流回滚时,将所述数据库中保存的对应任务重新读入内存,检查每个子任务的完成情况,然后根据每个子任务的完成情况确定该子任务执行回滚或者不执行回滚。

图2是根据本申请实施例的一种在中台系统中实现工作流的设备示意图,该设备包括执行模块201、记录模块202和异常处理模块203。

所述执行模块201从数据库中读取工作流,执行所述工作流的任务,其中,所述工作流包括若干个任务。

例如,所述数据库可以采用mysql数据库。每一条工作流是所述数据库中的一行记录。每次要执行任务的时候从所述数据库中读取出工作流,并且开始执行。

在一些实施例中,所述工作流的任务采用结构化的语言描述,这样能够更加清晰地描述整个任务的结构。

一个用结构化的语言描述任务的例子如下:

在一些实施例中,所述工作流的任务的类型包括以下至少任一项:并行任务,其中,所述并行任务的若干个子任务同时执行;串行任务,其中,所述串行任务的若干个子任务依次执行;单个任务。

例如,所述并行任务的若干个子任务同时执行,并且这些子任务被看作一个整体(所述并行任务),这些子任务作为一个整体有任务执行成功或失败的标志。具体地,所述并行任务还可以分为两种,错误敏感的并行任务和错误不敏感的并行任务。错误敏感的并行任务,如果在执行时其中一个子任务出现错误,那么整个并行任务就会失败。错误不敏感的并行任务,如果有一个子任务执行失败,整个并行任务依然可以执行成功。

所述串行任务的若干个子任务依次执行,并且这些子任务被看作一个整体(所述串行任务),这些子任务作为一个整体有任务执行成功或失败的标志。所述串行任务均为错误敏感。所述串行任务在执行时,只要有一个子任务出现错误,那么整个串行任务就会失败。

所述单个任务比较简单,就是简单的执行,也有执行成功或失败的结果。所述单个任务是工作流中最基本的执行单元。

所述记录模块202当所述工作流中每个任务完成时,将关于该任务的任务记录写入所述数据库中。

例如,所述工作流中每一步完成的时候都要写入所述数据库,通过所述数据库来记录所述工作流中每个任务的执行情况。

在一些实施例中,所述记录模块202当所述工作流中的所述并行任务完成时,将关于该并行任务的任务记录写入所述数据库中,利用所述数据库的行锁锁住该并行任务的任务记录。

例如,因为所述并行任务的若干个子任务同时执行,所以会出现多个子任务同时完成需要写入所述数据库的情况。在这种情况下,可以利用mysql数据库中的行锁,来锁住这条记录。从而保证所述并行任务的正确执行顺序,防止其他任务出现幻读。

所述异常处理模块203在任务执行过程中,利用异常处理机制在任务执行的地方进行异常捕获。

例如,可以利用所述异常处理机制保证所述并行任务在连续多次异常时得到正确处理。因为任务都是异步执行的,所以在任务执行的地方进行异常捕获,而不是使用全局异常捕获,这样不会遗漏异常。

在一些实施例中,所述异常处理机制采用javascript的try-catch机制。其中,javascript是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。javascript有使用面广,易于学习等特点,非常便于前端开发人员编写后端代码。因此可以使用基于node.js的javascript开发所述中台系统。在此,可以利用javascript的try-catch机制对异常进行捕获。

在一些实施例中,也可以利用typescript的异常处理机制对异常进行捕获。其中,typescript是javascript的加强版,该语言在javascript的基础上增强了类型系统,减少错误的发生率。

在一些实施例中,所述设备还包括任务重做模块204;所述任务重做模块204当任务重做时,把对应的任务重新读入内存,检查每个子任务的完成情况;如果该子任务处于完成状态,则跳过该子任务;如果该子任务处于失败状态,则停止或跳过该子任务;如果该子任务处于执行状态,则重新执行该子任务。

例如,任务重做指的是断电后任务可以继续完成。当任务重做时,将所述数据库中保存的对应任务重新读入内存,并且可以根据任务编号确定该任务是否已经执行完毕。然后重新执行整个工作流。

在一些实施例中,当任务重做时,把对应的任务重新读入内存,检查每个子任务的完成情况;如果该子任务处于失败状态,则停止或跳过该子任务。具体地,如果所述并行任务的子任务处于失败状态,可以根据所述并行任务是错误敏感或者错误不敏感,选择停止或者跳过该子任务。

在一些实施例中,所述设备还包括工作流回滚模块205;所述工作流回滚模块205当工作流回滚时,把对应的任务重新读入内存,检查每个子任务的完成情况;如果该子任务处于完成或执行状态,则该子任务执行回滚;如果该子任务处于失败状态,则该子任务不执行回滚。

例如,任务回滚指的是任务出错后可以对前序任务进行回滚,工作流回滚指的是工作流中的任务出错后可以对前序任务进行回滚。当工作流回滚时,将所述数据库中保存的对应任务重新读入内存,检查每个子任务的完成情况,然后根据每个子任务的完成情况确定该子任务执行回滚或者不执行回滚。

综上所述,本申请实施例可以使中台系统的工作流满足并行任务异常容忍,并行任务处理多次异常的需求,提高中台系统的稳定性。进一步地,本申请实施例还可以使中台系统的工作流满足任务回滚、任务重做等需求,从而提升用户体验。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据程序指令运行的计算机设备的工作存储器中。在此,本申请的一些实施例提供了一种计算设备,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行前述本申请的多个实施例的方法和/或技术方案。

此外,本申请的一些实施例还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机可读指令可被处理器执行以实现前述本申请的多个实施例的方法和/或技术方案。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1