CN117076096A - 任务流程的执行方法、装置、计算机可读介质及电子设备 - Google Patents

任务流程的执行方法、装置、计算机可读介质及电子设备 Download PDF

Info

Publication number
CN117076096A
CN117076096A CN202311341790.5A CN202311341790A CN117076096A CN 117076096 A CN117076096 A CN 117076096A CN 202311341790 A CN202311341790 A CN 202311341790A CN 117076096 A CN117076096 A CN 117076096A
Authority
CN
China
Prior art keywords
task
flow
target
task flow
retry
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
Application number
CN202311341790.5A
Other languages
English (en)
Inventor
牛少达
苏兴旺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311341790.5A priority Critical patent/CN117076096A/zh
Publication of CN117076096A publication Critical patent/CN117076096A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请的实施例提供了一种任务流程的执行方法、装置、计算机可读介质及电子设备,该方法包括:接收任务流程创建请求,并基于任务流程创建请求携带的任务流程定义信息在预定业务流程引擎中启动目标任务流程;通过预定业务流程引擎对所述目标任务流程进行流转,以执行与目标任务流程的各个节点对应的操作;接收来自预定分布式任务调度平台的任务调度指令,任务调度指令包括配置的任务调度参数;若根据任务调度参数确定需要对目标任务流程的目标节点进行重试操作,则根据任务调度参数重新执行与目标任务流程的目标节点对应的操作,并从目标节点开始,继续对所述目标任务流程进行流转。本申请实施例可以使得任务流程能够正常、高效地流转。

Description

任务流程的执行方法、装置、计算机可读介质及电子设备
技术领域
本申请涉及任务流转技术领域,具体而言,涉及一种任务流程的执行方法、装置、计算机可读介质及电子设备。
背景技术
目前,实现任务流转的方案主要是基于工作流引擎或者流程引擎搭建一个系统,然后通过该系统进行任务流程的流转。
然而,这种方式下,只能希望任务流程能够正常快速进行流转,一旦任务流程流转异常或者任务流程流转缓慢,会使任务流程的流转效率大大降低,往往最终会导致任务流程流转失败。
发明内容
本申请的实施例提供了一种任务流程的执行方法、装置、计算机可读介质及电子设备,进而至少在一定程度上可以使得任务流程能够正常、高效地流转。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种任务流程的执行方法,所述方法包括:接收任务流程创建请求,并基于所述任务流程创建请求中携带的任务流程定义信息在预定业务流程引擎中启动目标任务流程;通过所述预定业务流程引擎对所述目标任务流程进行流转,以执行与所述目标任务流程的各个节点对应的操作;接收来自预定分布式任务调度平台的任务调度指令,所述任务调度指令包括对所述预定分布式任务调度平台配置的任务调度参数,所述任务调度参数包括以下中的至少一项:任务重试对象、任务重试方式;若根据所述任务调度指令中的任务调度参数确定需要对所述目标任务流程的目标节点进行重试操作,则在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作,并从所述目标节点开始,继续对所述目标任务流程进行流转。
根据本申请实施例的一个方面,提供了一种任务流程的执行装置,所述装置包括:流程启动单元,用于接收任务流程创建请求,并基于所述任务流程创建请求中携带的任务流程定义信息在预定业务流程引擎中启动目标任务流程;流转单元,用于通过所述预定业务流程引擎对所述目标任务流程进行流转,以执行与所述目标任务流程的各个节点对应的操作;接收单元,用于接收来自预定分布式任务调度平台的任务调度指令,所述任务调度指令包括对所述预定分布式任务调度平台配置的任务调度参数,所述任务调度参数包括以下中的至少一项:任务重试对象、任务重试方式;任务重试单元,用于若根据所述任务调度指令中的任务调度参数确定需要对所述目标任务流程的目标节点进行重试操作,则在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作,并从所述目标节点开始,继续对所述目标任务流程进行流转。
在本申请的一些实施例中,基于前述方案,所述任务重试单元配置为:从预先创建的线程池中的多个线程中确定目标线程,所述多个线程用于对多个任务流程并发进行重试操作;通过所述目标线程在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作。
在本申请的一些实施例中,基于前述方案,所述装置还包括获取和更新单元;在通过所述目标线程在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作之后,所述获取和更新单元用于:每次获取首个执行完重试操作的任务流程对应的执行结果,并根据所述执行结果对与所述任务流程对应的数据表进行更新。
在本申请的一些实施例中,基于前述方案,所述装置还包括监测单元;在接收来自预定分布式任务调度平台的任务调度指令之前,所述监测单元用于:对通过所述预定业务流程引擎进行流转的各任务流程进行监测,并展示监测结果,其中,所述监测结果包括当前流转至各节点的任务流程的数量,所述任务调度参数是由用户根据所述监测结果进行对所述预定分布式任务调度平台进行配置的。
在本申请的一些实施例中,基于前述方案,所述任务重试对象包括以下中的至少一项:指定的任务流程、处于指定状态的任务流程、在指定时间范围内流转的任务流程、与指定数据表关联的任务流程、任务流程的节点;所述任务重试方式包括以下中的至少一项:进行重试的时间间隔、在重试时进行数据表查询所使用的索引、每次进行重试的任务流程的数量、对任务流程进行重试的最大次数。
在本申请的一些实施例中,基于前述方案,所述任务重试方式包括对任务流程进行重试的最大次数,所述装置还包括告警单元;在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作之后,所述告警单元用于:若对所述目标任务流程的重试次数达到对所述目标任务流程进行重试的最大次数,则向下列至少一种人员发送告警信息:所述目标任务流程的相关人员、所述目标节点的相关人员。
在本申请的一些实施例中,基于前述方案,所述装置还包括数据迁移单元;所述流转单元配置为:通过所述预定业务流程引擎对所述目标任务流程进行流转,并在流转过程中将与所述目标任务流程相关的数据记录在与所述目标任务流程对应的活跃数据表中;在从所述目标节点开始,继续对所述目标任务流程进行流转之后,所述数据迁移单元用于:当所述目标任务流程流转完成,将在所述活跃数据表中记录的与所述目标任务流程相关的数据迁移至历史数据表中。
在本申请的一些实施例中,基于前述方案,所述任务重试单元配置为:若根据所述任务调度指令中的任务调度参数确定需要对包括所述目标任务流程在内的多个任务流程的节点进行重试操作,则将各任务流程的节点加入重试队列中;循环执行重试步骤,所述重试步骤包括:每次从所述重试队列的头部依次取出若干任务流程的节点对应的任务,并在所述预定业务流程引擎中根据所述若干任务流程的节点对应的任务对所述若干任务流程的节点进行重试操作;在所述若干任务流程的节点中的至少一个任务流程的节点未完成重试操作的情况下,重新将所述至少一个任务流程的节点对应的任务加入所述重试队列的尾部。
在本申请的一些实施例中,基于前述方案,所述任务流程定义信息是由流程图绘制平台根据用户在所述流程图绘制平台中绘制的流程图而生成的。
根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的任务流程的执行方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的任务流程的执行方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行如上述实施例中所述的任务流程的执行方法。
在本申请的一些实施例所提供的技术方案中,通过在接收到任务流程创建请求,基于该请求中携带的任务流程定义信息在预定业务流程引擎中启动目标任务流程,从而在该预定业务流程引擎中自动对该目标任务流程进行流转,当接收到由预定分布式任务调度平台发送的携带有任务调度参数的任务调度指令后,可以根据任务调度参数确定需要进行重试操作的任务流程及其节点,进而可以重新执行与目标任务流程的目标节点对应的操作,实现对目标任务流程及其目标节点的重试,即使目标任务流程在流转至目标节点出现流转异常或者流转缓慢的情况,通过进行重试也可以大大降低任务流程流转失败的可能性,使得任务流程能够正常、高效地流转。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。
图2示出了根据本申请的一个实施例的数据生产流程图的示意图。
图3示出了根据本申请的一个实施例的任务流程的执行方法的流程图。
图4示出了根据本申请的一个实施例的系统架构的框图。
图5示出了根据本申请的一个实施例的整体流程示意图。
图6示出了根据本申请的一个实施例的Flowable流程图的示意图。
图7示出了根据本申请的一个实施例的图3实施例中步骤340之前步骤的流程图。
图8示出了根据本申请的一个实施例的图3实施例中步骤350的细节的流程图。
图9示出了根据本申请的一个实施例的图8实施例中步骤352之后步骤的流程图。
图10示出了根据本申请的一个实施例的图3实施例中步骤320的细节以及步骤350之后步骤的流程图。
图11示出了根据本申请的一个实施例的时序调用图。
图12示出了根据本申请的一个实施例的任务流程的执行装置的框图。
图13示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在相关技术中,主要基于Activiti等流程引擎开发一个系统,并在该系统中进行任务流程的流转。
然而,这种方式无法保证任务流程流转的可靠性,会降低任务流程的流转效率,而且没有实现任务流程的流转和任务调度的统一化,导致适用场景比较少,难以推广并应用到不同的任务流程的流转调度场景。
为此,本申请首先提供了一种任务流程的执行方法。基于本申请实施例提供的任务流程的执行方法可以克服上述缺陷,不仅可以实现任务流程的高效、可靠流转,而且可以实现对任务流程的流转和任务流程的调度的整合,从而大大拓展了适用场景,可以便于推广并应用到不同的任务流程的流转调度场景。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。如图1所示,该系统架构100可以包括用户终端110和云端120,云端120具体包括任务服务后台服务器121、数据库服务器122以及XXL-JOB后台服务集群123,XXL-JOB后台服务集群123具体包括调度中心服务器1231和执行器服务器1232,用户终端110通过通信链路与云端120进行通信,调度中心服务器1231和执行器服务器1232之间、XXL-JOB后台服务集群123和任务服务后台服务器121之间以及任务服务后台服务器121和数据库服务器122之间均可以进行通信。任务服务后台服务器121上部署有基于Flowable这一业务流程引擎搭建的任务服务后台,数据库服务器122上部署有数据库,调度中心服务器1231包括XXL-JOB这一分布式任务调度平台中的调度中心,而执行器服务器1232包括XXL-JOB这一分布式任务调度平台中的执行器。任务服务后台服务器121为本申请实施例的执行主体,当本申请实施例提供的一种任务流程的执行方法应用于图1所示的系统架构中时,一个过程可以是这样的:首先,用户根据业务需求,通过用于绘制Flowable流程图的平台绘制出Flowable流程图,并将Flowable流程图导出为XML格式的任务流程定义信息;然后,用户使用用户终端110访问云端120,进入由调度中心服务器1231上的调度中心提供的前端页面,创建与目标任务流程对应的任务,并对该任务的参数进行配置,例如将该任务与执行器服务器1232上的执行器绑定,还进行任务调度参数的配置,例如将目标任务流程作为需要重试的任务流程;接着,用户使用用户终端110向云端120的任务服务后台服务器121的任务服务后台发送任务流程创建请求,并通过任务流程创建请求将XML格式的任务流程定义信息发送至任务服务后台服务器121,任务服务后台服务器121将任务流程定义信息发送至数据库服务器122上的数据库进行存储,从而使任务服务后台创建并启动相应的目标任务流程,目标任务流程开始进行流转;接着,调度中心服务器1231的调度中心按照任务的参数向执行器服务器1232上的执行器发出携带有任务调度参数的调度请求;接下来,执行器接收到调度请求后,执行器服务器1232将任务调度参数发送到任务服务后台服务器121上,由任务服务后台服务器121上的相应的JobHandler根据任务调度参数对目标任务流程的目标节点执行重试操作,其中,该JobHandler是对XXL-JOB提供的IJobHandler类进行继承,并通过重写该类的execute方法实现的。
在本申请的一些实施例中,在任务服务后台服务器121上创建有包括多个线程的线程池,任务服务后台服务器121是从该线程池中选出一个线程来运行JobHandler以执行重试操作的。
在本申请的一些实施例中,任务服务后台服务器121是根据任务调度参数对数据库服务器122上的数据库进行查询确定出需要对目标任务流程的目标节点执行重试操作的。
在本申请的一些实施例中,在目标任务流程的流转过程中,任务服务后台服务器121会动态更新数据库服务器122的数据库中与目标任务流程对应的数据表。
应该理解,图1中用户终端、云端包括的任务服务后台服务器和数据库服务器以及XXL-JOB后台服务集群包括调度中心服务器和执行器服务器的数目仅仅是示意性的。根据实现需要,可以设置任意数目的用户终端,云端可以包括任意数目的任务服务后台服务器和数据库服务器,XXL-JOB后台服务集群可以包括任意数目的调度中心服务器和执行器服务器的数目,例如,任务服务后台服务器和数据库服务器可以是由多个服务器组成的服务器集群,调度中心和执行器也可以以集群的方式部署。
需要说明的是,图1示出的仅为本申请的一个实施例。虽然在图1实施例的方案中,用户终端为台式计算机,但在本申请的其他实施例中,用户终端还可以为智能手机、平板电脑、车载终端、便携式可穿戴设备、工作站、云服务器等各种类型的设备;虽然在图1实施例的方案中,采用了Flowable这一业务流程引擎,并采用了XXL-JOB这一分布式任务调度平台,但在本申请的其他实施例中,还可以采用其他各种类型的业务流程引擎和分布式任务调度平台;虽然图1实施例的方案是先绘制Flowable流程图再将其导出为任务流程定义信息,但在本申请的其他实施例中,还可以直接由用户进行任务流程定义信息的创建,甚至可以由大语言模型根据用户的指令生成任务流程定义信息。本申请实施例对此不作任何限定,本申请的保护范围也不应因此而受到任何限制。
易于理解,本申请实施例所提供的任务流程的执行方法一般由服务器执行,相应地,任务流程的执行装置一般设置于服务器中。但是,在本申请的其它实施例中,终端设备也可以与服务器具有相似的功能,从而执行本申请实施例所提供的任务流程的执行方案。
因此,本申请实施例可以应用于终端或服务器中。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请实施例的方案可以应用于云计算领域。云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务))平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
按照逻辑功能划分,在IaaS(Infrastructure as a Service,基础设施即服务)层上可以部署PaaS(Platform as a Service,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等。SaaS为各式各样的业务软件,如web门户网站、短信群发器等。一般来说,SaaS和PaaS相对于IaaS是上层。
本申请实施例所提供的任务流程的执行方法可以应用到涉及任务流转的各个行业领域,比如数据生产,流程审批,项目管理,行政服务等,尤其适合于高并发,需要快速流转和重试的任务流程。
图2示出了根据本申请的一个实施例的数据生产流程图的示意图。请参见图2所示,数据生产流程图包括多个数据采集、数据作业、质量检查等多节点,其需要进行任务流程的快速流转,因此,其特别适合使用本申请实施例所提供的任务流程的执行方法。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图3示出了根据本申请的一个实施例的任务流程的执行方法的流程图,该任务流程的执行方法可以由各种能够计算和处理的设备来执行,比如可以是用户终端或云服务器,用户终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器、智能手表等。请参照图3所示,该任务流程的执行方法至少可以包括以下步骤:
在步骤310中,接收任务流程创建请求,并基于任务流程创建请求中携带的任务流程定义信息在预定业务流程引擎中启动目标任务流程。
预定业务流程引擎可以是Flowable等各种业务流程引擎。Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN(业务流程建模标注,Business Process Modeling Notation)2.0流程定义(用于定义流程的行业XML标准),创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据。
本申请实施例中,首先需要进行应用程序的项目搭建,即构建整个系统。
图4示出了根据本申请的一个实施例的系统架构的框图。如图4所示,其示出的系统架构即为本申请实施例需要构建的系统的系统架构,整个系统为一个服务。
图5示出了根据本申请的一个实施例的整体流程示意图。请参见图5所示,包括以下流程:
步骤510,通过整合SpringBoot、XXL-JOB、Flowable,搭建系统前端、系统后端和Flowable数据库。
Spring Boot是一个基于Java的开源框架,用于快速创建独立且可运行的Spring应用程序。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还进一步简化了Spring应用的整个搭建和开发过程,提供了许多开箱即用的功能和特性。
XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
请参见图4所示,系统前端包括任务管理前端和XXL-JOB前端,系统后台包括任务服务后台和XXL-JOB后台。任务管理前端可以用于与任务服务后台交互,而XXL-JOB前端可以用于与XXL-JOB后台交互。本申请实施例提供的方法的步骤可以由任务服务后台执行,该任务服务后台可以是基于Flowable这一预定业务流程引擎开发的。具体来说,任务服务后台包括数据访问、公共依赖、配置中心、请求组件、服务调度、任务管理、定时任务、日志服务等模块。其中,数据访问模块是用于访问数据库的组件;公共依赖模块是系统的各模块的一些公共依赖的lib库和中间件;配置中心模块用于对系统进行各项配置,比如配置请求的URL地址、程序运行过程中的配置信息等;请求组件模块用于对请求方法进行封装,可以支持HTTP协议和Kafka协议;服务调度模块包括基于线程池实现的多线程、高并发的调度策略;任务管理模块用于进行任务查询、领取、编辑、提交等操作;定时任务模块用于按需求定时发起任务或者重试任务的某些环节;日志服务模块用于收集应用程序产生的日志,部分日志信息可以用于告警治理。XXL-JOB后台包括注册中心、调度中心、路由策略和执行器等多个模块,其中,注册中心模块用于对执行器进行注册,并由执行器进行任务注册;调度中心模块采用中心式设计,支持集群部署,保证高可用,其用于向执行器发送调度请求,进行任务调度;路由策略模块是执行器以集群方式部署时提供的多种路由策略,比如可以是第一个、轮询、随机、LRU、LFU等,其中,“第一个”指的是固定选择集群中的第一个机器,“轮询”指的是轮流选择集群中的机器,“随机”指的是随机选择集群中在线的机器,LRU(LEAST_RECENTLY_USED,最近最久未使用)指的是优先选择集群中最近最久未使用的机器,LFU(LEAST_FREQUENTLY_USED,最不经常使用)指的是优先选择集群中使用频率最低的机器;执行器模块即用来执行任务的执行器,可以对任务分布执行,一个执行器可以设置多个任务,一个执行器可以以集群方式部署。
在实际应用时,可以将XXL-JOB和Flowable完全解耦,将XXL-JOB作为一个服务中心,统一对多个基于Flowable构建的任务服务后台提供服务。
图4所示系统中使用到的组件包括Redis、Mysql、Kafka和Zookeeper。Redis用于缓存用户数据,用户数据可以用于权限验证;Mysql用于存储任务数据、调度数据、配置数据等,前述的Flowable数据库便可以是Mysql;Kafka用于和其他服务交互,比如发送请求和接收返回数据等;Zookeeper用于实现应用程序的协调同步。图4所示系统还包括基础设施,具体包括镜像仓库、部署流水线、容器和服务发现,其中,镜像仓库用于进行服务镜像的存储、管理和分发;部署流水线用于实现代码提交、构建、部署自动化,一键发布程序;容器是基于原生Kubernetes的容器平台,包括发布管理,日志监测等功能;服务发现用于实现系统服务的注册。
下面,详细介绍如何启动目标任务流程。
在本申请的一个实施例中,任务流程定义信息是由流程图绘制平台根据用户在流程图绘制平台中绘制的流程图而生成的。
请继续参见图5所示,在步骤510之后可以包括以下流程:
步骤520,根据业务流程,绘制Flowable流程图,配置流程节点参数、流程变量、任务监测器等。
流程图绘制平台可以是一个用户绘制Flowable流程图的平台,可以预先搭建这样一个平台,用户可以根据业务需求或者业务流程在该平台上绘制出Flowable流程图,该Flowable流程图即一种BPMN流程图,然后可以从该平台对应导出基于BPMN标准的XML文件,该XML文件即为任务流程定义信息。
图6示出了根据本申请的一个实施例的Flowable流程图的示意图。请参见图6所示,Flowable流程图中每个圆角矩形元素即为任务流程的一个节点,也就是任务流程的一个环节;最上方的圆圈为空启动事件,其为任务流程的入口点,最下方的圆圈为空结束事件,其为任务流程的结束点。操作1这一节点右上角包含用户图标,代表该节点是一个用户任务,该节点可能需要相关的服务或者相关任务来处理,用户任务(user task)用于对需要人工执行的任务进行建模。当流程执行到达用户任务时,会为指派至该任务的用户或组的任务列表创建一个新任务。操作2等其他节点的右上角包含V形图标,这代表这些节点是HTTP任务,表示这些环节可以自动调用某个HTTP接口,来实现相关的逻辑处理。这种节点也兼容Kafka协议,可以在相应环节发送Kafka消息给服务方,使得本方案更加灵活。
流程节点参数可以包括节点任务的标识、名称、描述信息等,其中,节点任务的标识即为节点设置的唯一ID。流程变量是流程实例中的数据,可以在流程的许多地方使用(例如排他网关经常使用流程变量判断流程下一步要走的路径)。此外,还需要在Flowable流程图中进行顺序流(Sequence Flow)等信息的配置。
还需要为每个节点设置任务监测器(Task Listener)。任务监测器用于在特定的任务相关事件发生时,执行自定义的Java逻辑或表达式。任务监测器可以包括触发任务监测器的任务事件类型、需要调用的委托类等属性,需要调用的委托类中必须实现Flowable框架的TaskListener接口,即对TaskListener接口的Notify方法进行重写,在其中实现自身所需的业务逻辑,当任务流程流转至某个节点时,任务监测器会监测到与任务监测器的任务事件类型对应的事件,并自动调用Flowable框架的TaskListener接口的Notify方法,从而实现相应的业务逻辑。
步骤530,进行服务相关配置,包括XXL-JOB调度参数、任务环节、重试参数等配置。
任务环节即任务流程的一个节点。
具体来说,需要对Flowable框架进行如下配置:实现并重写Flowable提供的TaskListener接口的Notify方法,通过该方法获取节点任务的标识、当前任务流程流转至的节点、任务流程的当前状态、任务流程的创建时间和更新时间等;对任务流程的各节点均使用一个枚举,并在枚举中配置一个对应的Service,当任务流程流转到这个环节的时候,在Notify方法中调用这个Service对应的Process方法,执行相应的代码逻辑,实现任务流程的流转和调度。
通过图4所示的XXL-JOB前端可以对任务的参数和任务调度参数进行配置,从而实现定时发起任务流程或者对任务流程进行重试。具体来说,在完成XXL-JOB搭建之后,首先通过XXL-JOB前端提供的执行器管理页面新增执行器,再通过XXL-JOB前端提供的新建任务页面对任务的参数和任务调度参数进行配置,其中,任务的参数可以包括配置执行器、配置任务、路由策略、运行模式、阻塞处理策略、任务超时时间、JobHandler等,JobHandler是指在XXL-JOB分布式任务调度平台中用于执行任务的组件,阻塞处理策略是由于调度过于密集导致执行器来不及处理时的处理策略,具体可以包括:单机串行、丢弃后续调度、覆盖之前调度等;任务调度参数可以通过根据业务需求对XXL-JOB进行扩展实现定制化,关于任务调度参数将在下文中进行详述。
下面结合图5中步骤540介绍步骤310。
步骤540,上传流程图到服务的数据库,按业务特点或者一定规则发起任务流程,任务开始自动流转。
服务的数据库即前述的Flowable数据库。
可以通过调用Flowable的RuntimeService类的StartProcessInstanceByKey方法发起流程,该重载方法可以按需要传入不同的参数,例如流程图唯一的ID(String)、任务ID(String)、需要带入流程的流程变量(Map)等。
此处的流程图即为XML格式的任务流程定义信息,将该任务流程定义信息记录到Flowable数据库中,便会启动目标任务流程,目标任务流程即为任务流程定义信息对应的一个流程实例。
请继续参见图3,在步骤320中,通过预定业务流程引擎对目标任务流程进行流转,以执行与目标任务流程的各个节点对应的操作。
在发起目标任务流程后,每当流转至目标任务流程的一个节点,会按照任务流程定义信息中的配置信息自动执行相关操作。比如,当流转至HTTP任务节点,会按照为该节点配置的URL进行服务的调用,在被调用方返回调用结果后,进行相关的逻辑处理。
请继续参见图5所示,在步骤540之后,还可以包括以下步骤:
步骤550,自动进行任务环节重试,进行任务全流程监测,调整任务调度参数,处理任务异常告警。
下面结合图3所示实施例进行详细介绍。
在步骤340中,接收来自预定分布式任务调度平台的任务调度指令,任务调度指令包括对预定分布式任务调度平台配置的任务调度参数,任务调度参数包括以下中的至少一项:任务重试对象、任务重试方式。
预定分布式任务调度平台可以是XXL-JOB分布式任务调度平台。
图7示出了根据本申请的一个实施例的图3实施例中步骤340之前步骤的流程图。在介绍步骤340之前,先介绍步骤330。如图7所示,在接收来自预定分布式任务调度平台的任务调度指令之前,该方法可以包括以下步骤:
在步骤330中,对通过预定业务流程引擎进行流转的各任务流程进行监测,并展示监测结果,其中,监测结果包括当前流转至各节点的任务流程的数量。
具体来说,可以通过预定业务流程引擎对基于同一任务流程定义信息启动的多个任务流程进行流转,不同的任务流程可以在同一时刻流转至相同的节点,从而可以对其进行监测。具体而言,假设通过预定业务流程引擎对编号分别为1、2、3的三个任务流程进行流转,这三个任务流程均包括A、B、C这三个节点,那么,如果在某一时刻,编号为1和2的任务流程流转至节点A,而编号为3的任务流程流转至节点B,那么,监测结果可以是当前流转至节点A的任务流程的数量为2,当前流转至节点B的任务流程的数量为1。通过这种方式可以实现对任务流程的全流程监测。
在本申请的一个实施例中,任务调度参数是由用户根据监测结果进行对预定分布式任务调度平台进行配置的。
具体来说,由于预先已经对预定分布式任务调度平台配置了任务调度参数,因此,本申请实施例配置的任务调度参数可以是用户通过对已配置的任务调度参数进行调整和更新得到的。
在本申请实施例中,用户可以根据监测结果实时对任务调度参数进行调整,使得任务流程能够高效流转。
在步骤350中,若根据任务调度指令中的任务调度参数确定需要对目标任务流程的目标节点进行重试操作,则在预定业务流程引擎中根据任务调度参数重新执行与目标任务流程的目标节点对应的操作,并从目标节点开始,继续对目标任务流程进行流转。
在本申请的一个实施例中,目标节点为目标任务流程在流转过程中调用的服务出现异常的节点。
具体而言,当目标任务流程中的某个环节出现异常,例如调用的服务出现异常,导致流程卡住的时候,会按照任务调度参数的配置进行重试。
在本申请的一个实施例中,任务重试对象包括以下中的至少一项:指定的任务流程、处于指定状态的任务流程、在指定时间范围内流转的任务流程、与指定数据表关联的任务流程、任务流程的节点。任务重试方式包括以下中的至少一项:进行重试的时间间隔、在重试时进行数据表查询所使用的索引、每次进行重试的任务流程的数量、对任务流程进行重试的最大次数。
如果任务调度参数中包括任务流程的节点,那么目标节点就是该任务流程的节点;如果任务调度参数中不包括任务流程的节点,那么目标节点就是目标任务流程的首个节点,即重新启动目标任务流程。
对于每个任务流程,Flowable数据库中都可以存在一个与之对应的数据表,任务流程在流转过程中当前流转至的节点、任务流程的状态等信息的变化会被记录在相应的数据表中;不同任务流程对应的数据表可以不同;多个任务流程对应的数据表也可以相同,比如,同一类别的任务流程对应的数据表可以相同。与指定数据表关联的任务流程即与指定数据表对应的一个或多个任务流程。通过对在重试时进行数据表查询所使用的索引进行配置,可以加快查询速度。
通过设置进行重试的时间间隔可以实现定期重试。本申请实施例还可以对任务流程的状态进行自定义,指定状态可以是某些处于自定义状态的任务流程,比如可以是未领取状态,即未被用户接收的任务流程。
此外,任务重试对象还可以包括不参与重试的任务流程,比如可以是处于异常状态的任务流程。
当对目标节点重试成功,会继续对目标任务流程进行流转。
在本申请的一个实施例中,若根据任务调度指令中的任务调度参数确定需要对目标任务流程的目标节点进行重试操作,则在预定业务流程引擎中根据任务调度参数重新执行与目标任务流程的目标节点对应的操作,包括:若根据任务调度指令中的任务调度参数确定需要对包括目标任务流程在内的多个任务流程的节点进行重试操作,则将各任务流程的节点加入重试队列中;
循环执行重试步骤,重试步骤包括:每次从重试队列的头部依次取出若干任务流程的节点对应的任务,并在预定业务流程引擎中根据若干任务流程的节点对应的任务对所述若干任务流程的节点进行重试操作;在若干任务流程的节点中的至少一个任务流程的节点未完成重试操作的情况下,重新将至少一个任务流程的节点对应的任务加入重试队列的尾部。
当对某个任务流程的节点执行重试步骤的次数达到对任务流程进行重试的最大次数时,可以不再将其对应的任务加入重试队列的尾部,不再执行重试步骤。
为了防止单线程调度缓慢卡住重试流程,本申请实施例还提出了多线程并发的调度策略。
图8示出了根据本申请的一个实施例的图3实施例中步骤350的细节的流程图。请参见图8所示,在预定业务流程引擎中根据任务调度参数重新执行与目标任务流程的目标节点对应的操作,具体可以包括以下步骤:
在步骤351中,从预先创建的线程池中的多个线程中确定目标线程,多个线程用于对多个任务流程并发进行重试操作。
具体来说,可以使用实现了ExecutorService接口的ThreadPoolExecutor类创建线程池。设置核心线程数为20,最大线程数为100,阻塞队列长度为3000,拒绝策略使用CallerRunsPolicy。核心线程数是线程池中一直存在的线程数,不会被回收;最大线程数是线程池中最多能够存在的线程数。CallerRunsPolicy是一种Java中的线程池执行策略,它表示在调用者线程中执行任务,可以避免任务被抛弃或抛出异常,提高程序的可靠性和性能。
在步骤352中,通过目标线程在预定业务流程引擎中根据任务调度参数重新执行与目标任务流程的目标节点对应的操作。
通过多线程可以以并发方式对不同任务流程进行重试操作。
图9示出了根据本申请的一个实施例的图8实施例中步骤352之后步骤的流程图。请参见图9所示,在通过目标线程在预定业务流程引擎中根据任务调度参数重新执行与目标任务流程的目标节点对应的操作之后,该方法还可以包括以下步骤:
在步骤360中,每次获取首个执行完重试操作的任务流程对应的执行结果,并根据执行结果对与任务流程对应的数据表进行更新。
具体而言,在线程池开始工作后,会自动进行业务逻辑处理,在耗时比较长或者高并发的场景下,使用CompletionService解决多线程的阻塞问题。可以把一批任务流程对应的任务提交到CompletionService,然后,可以一边生成任务,一边通过take方法获取任务的返回值,让两件事分开执行,任务之间不会互相阻塞,可以实现先执行完的先取结果,不再依赖任务顺序,从而解决了一个任务被另一个任务阻塞的问题。
在本申请的一个实施例中,任务重试方式包括对任务流程进行重试的最大次数,在预定业务流程引擎中根据任务调度参数重新执行与目标任务流程的目标节点对应的操作之后,该方法还可以包括以下步骤:
若对目标任务流程的重试次数达到对目标任务流程进行重试的最大次数,则向下列至少一种人员发送告警信息:目标任务流程的相关人员、目标节点的相关人员。
可以通过群聊、邮件、短信等方式向相关人员发送告警信息。相关人员可以是目标任务流程或目标节点的负责人,也可以是系统的运营人员。
在本申请实施例中,通过向相关人员发送告警信息,可以确保相关人员能够及时接到告警信息,及时处理问题,保证服务能够正常平稳运行。
图10示出了根据本申请的一个实施例的图3实施例中步骤320的细节以及步骤350之后步骤的流程图。请参见图10所示,通过预定业务流程引擎对目标任务流程进行流转,具体可以包括:
在步骤320'中,通过预定业务流程引擎对目标任务流程进行流转,并在流转过程中将与目标任务流程相关的数据记录在与目标任务流程对应的活跃数据表中。
在从目标节点开始,继续对目标任务流程进行流转之后,该方法还包括:
在步骤370中,当目标任务流程流转完成,将在活跃数据表中记录的与目标任务流程相关的数据迁移至历史数据表中。
活跃数据表可以存储在读写速率较高的存储介质中。
一个历史数据表可以对应一个或多个活跃数据表。需要将活跃数据表中的数据迁移至对应的历史数据表中。
历史数据表可以存储在读写速率较高的存储介质中。
通过将任务流程在流转过程中产生的数据存储在读写速率较高的存储介质中,可以提高数据的检索效率。
请参见图5所示,还包括:
步骤560,任务结束后自动进行归档。
在任务流程流转完成后,自动将相关数据归档至历史数据表中。
图11示出了根据本申请的一个实施例的时序调用图。请参见图11所示,该时序调用图包括用户、服务前端、服务后台、数据库、XXL-JOB、服务A、服务B等对象,服务前端即图4所示的系统前端,服务后端即图4所示的任务服务后台,数据库即图4所示的Mysql,XXL-JOB为XXL-JOB后台,服务A和服务B为两个外部服务。该时序调用图的时序流程如下:首先,用户通过与服务前端交互发起创建任务的请求,当然,还可以以定时任务的方式发起创建任务的请求,请求由服务前端传到服务后台,服务后台根据对请求的参数进行相关校验,例如参数合法性校验,幂等性校验等,如果校验通过,创建任务,将任务数据记录到数据库,服务后台根据数据库的返回结果向服务前端返回任务创建的结果,服务前端向用户返回任务创建的结果;然后,任务创建成功后,依靠Flowable框架,任务会进行自动的调度和流转,这个过程中会发生任务环节和状态等信息的变更,这些变更都会记录到数据库中,数据库会向服务后台返回操作结果;当任务流程流转到某个节点后,服务后台会调用其他的服务,其他服务对任务数据进行处理,处理结束后回调服务后台,比如,服务后台会调用服务A,服务A在处理结束后向服务后台返回处理结果;接着,服务后台通过与XXL-JOB的交互进行重试,具体来说,会通过循环执行以下步骤来重试任务流程中的环节,直至任务处于完成状态:XXL-JOB向服务后台发送任务配置参数以请求调度任务,服务后台按照任务配置参数指定的条件查询数据库,得到数据库返回的查询结果,即查询得到需要重试的任务流程及节点,服务后台根据查询结果进行任务调度逻辑处理,即通过JobHandler来执行重试,任务流程继续流转,服务后台会调用服务B,服务B在处理结束后向服务后台返回处理结果,服务后台会根据接收到的处理结果请求数据库修改任务状态,得到数据库的返回结果;最后,服务后台与数据库交互,进行任务结束归档。
综上所述,根据本申请实施例提供的任务流程的执行方法,提供了一种高可用的、快速高效的任务调度流转方案,至少能够取得下列有益效果:
1、本方案可以实现流程定制化,任务自动流转,任务全流程监测,任务结束后归档,数据冷热分离。
2、本方案通过对任务调度参数的实时调整,可以实现对多种规格、不同种类任务的调度和流转。当流程中的任务环节卡住时,可以实现环节自动重试,重试达到最大次数的时候,可以进行异常告警,保证任务正常流转。
3、本方案采用定时轮询的方法触发任务调度,使用Java多线程技术进行任务环节的异步重试,不会长时间占用线程池的线程。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的任务流程的执行方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的任务流程的执行方法的实施例。
图12示出了根据本申请的一个实施例的任务流程的执行装置的框图。
参照图12所示,根据本申请的一个实施例的任务流程的执行装置1200,包括:流程启动单元1210、流转单元1220、接收单元1230和任务重试单元1240。其中,流程启动单元1210用于接收任务流程创建请求,并基于所述任务流程创建请求中携带的任务流程定义信息在预定业务流程引擎中启动目标任务流程;流转单元1220用于通过所述预定业务流程引擎对所述目标任务流程进行流转,以执行与所述目标任务流程的各个节点对应的操作;接收单元1230用于接收来自预定分布式任务调度平台的任务调度指令,所述任务调度指令包括对所述预定分布式任务调度平台配置的任务调度参数,所述任务调度参数包括以下中的至少一项:任务重试对象、任务重试方式;任务重试单元1240用于若根据所述任务调度指令中的任务调度参数确定需要对所述目标任务流程的目标节点进行重试操作,则在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作,并从所述目标节点开始,继续对所述目标任务流程进行流转。
在本申请的一些实施例中,基于前述方案,任务重试单元1240配置为:从预先创建的线程池中的多个线程中确定目标线程,所述多个线程用于对多个任务流程并发进行重试操作;通过所述目标线程在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作。
在本申请的一些实施例中,基于前述方案,所述装置还包括获取和更新单元;在通过所述目标线程在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作之后,所述获取和更新单元用于:每次获取首个执行完重试操作的任务流程对应的执行结果,并根据所述执行结果对与所述任务流程对应的数据表进行更新。
在本申请的一些实施例中,基于前述方案,所述装置还包括监测单元;在接收来自预定分布式任务调度平台的任务调度指令之前,所述监测单元用于:对通过所述预定业务流程引擎进行流转的各任务流程进行监测,并展示监测结果,其中,所述监测结果包括当前流转至各节点的任务流程的数量,所述任务调度参数是由用户根据所述监测结果进行对所述预定分布式任务调度平台进行配置的。
在本申请的一些实施例中,基于前述方案,所述任务重试对象包括以下中的至少一项:指定的任务流程、处于指定状态的任务流程、在指定时间范围内流转的任务流程、与指定数据表关联的任务流程、任务流程的节点;所述任务重试方式包括以下中的至少一项:进行重试的时间间隔、在重试时进行数据表查询所使用的索引、每次进行重试的任务流程的数量、对任务流程进行重试的最大次数。
在本申请的一些实施例中,基于前述方案,所述任务重试方式包括对任务流程进行重试的最大次数,所述装置还包括告警单元;在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作之后,所述告警单元用于:若对所述目标任务流程的重试次数达到对所述目标任务流程进行重试的最大次数,则向下列至少一种人员发送告警信息:所述目标任务流程的相关人员、所述目标节点的相关人员。
在本申请的一些实施例中,基于前述方案,所述装置还包括数据迁移单元;流转单元1220配置为:通过所述预定业务流程引擎对所述目标任务流程进行流转,并在流转过程中将与所述目标任务流程相关的数据记录在与所述目标任务流程对应的活跃数据表中;在从所述目标节点开始,继续对所述目标任务流程进行流转之后,所述数据迁移单元用于:当所述目标任务流程流转完成,将在所述活跃数据表中记录的与所述目标任务流程相关的数据迁移至历史数据表中。
在本申请的一些实施例中,基于前述方案,任务重试单元1240配置为:若根据所述任务调度指令中的任务调度参数确定需要对包括所述目标任务流程在内的多个任务流程的节点进行重试操作,则将各任务流程的节点加入重试队列中;循环执行重试步骤,所述重试步骤包括:每次从所述重试队列的头部依次取出若干任务流程的节点对应的任务,并在所述预定业务流程引擎中根据所述若干任务流程的节点对应的任务对所述若干任务流程的节点进行重试操作;在所述若干任务流程的节点中的至少一个任务流程的节点未完成重试操作的情况下,重新将所述至少一个任务流程的节点对应的任务加入所述重试队列的尾部。
在本申请的一些实施例中,基于前述方案,所述任务流程定义信息是由流程图绘制平台根据用户在所述流程图绘制平台中绘制的流程图而生成的。
图13示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图13示出的电子设备的计算机系统1300仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图13所示,计算机系统1300包括中央处理单元(Central Processing Unit,CPU)1301,其可以根据存储在只读存储器(Read-Only Memory,ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(Random Access Memory,RAM)1303中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1303中,还存储有系统操作所需的各种程序和数据。CPU 1301、ROM 1302以及RAM 1303通过总线1304彼此相连。输入/输出(Input /Output,I/O)接口1305也连接至总线1304。
以下部件连接至I/O接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(CPU)1301执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
可以理解的是,在本申请的具体实施方式中,涉及到与任务流程相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (13)

1.一种任务流程的执行方法,其特征在于,所述方法包括:
接收任务流程创建请求,并基于所述任务流程创建请求中携带的任务流程定义信息在预定业务流程引擎中启动目标任务流程;
通过所述预定业务流程引擎对所述目标任务流程进行流转,以执行与所述目标任务流程的各个节点对应的操作;
接收来自预定分布式任务调度平台的任务调度指令,所述任务调度指令包括对所述预定分布式任务调度平台配置的任务调度参数,所述任务调度参数包括以下中的至少一项:任务重试对象、任务重试方式;
若根据所述任务调度指令中的任务调度参数确定需要对所述目标任务流程的目标节点进行重试操作,则在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作,并从所述目标节点开始,继续对所述目标任务流程进行流转。
2.根据权利要求1所述的任务流程的执行方法,其特征在于,所述在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作,包括:
从预先创建的线程池中的多个线程中确定目标线程,所述多个线程用于对多个任务流程并发进行重试操作;
通过所述目标线程在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作。
3.根据权利要求2所述的任务流程的执行方法,其特征在于,在通过所述目标线程在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作之后,所述方法还包括:
每次获取首个执行完重试操作的任务流程对应的执行结果,并根据所述执行结果对与所述任务流程对应的数据表进行更新。
4.根据权利要求1所述的任务流程的执行方法,其特征在于,在接收来自预定分布式任务调度平台的任务调度指令之前,所述方法还包括:
对通过所述预定业务流程引擎进行流转的各任务流程进行监测,并展示监测结果,其中,所述监测结果包括当前流转至各节点的任务流程的数量,所述任务调度参数是由用户根据所述监测结果进行对所述预定分布式任务调度平台进行配置的。
5.根据权利要求1所述的任务流程的执行方法,其特征在于,所述任务重试对象包括以下中的至少一项:指定的任务流程、处于指定状态的任务流程、在指定时间范围内流转的任务流程、与指定数据表关联的任务流程、任务流程的节点;
所述任务重试方式包括以下中的至少一项:进行重试的时间间隔、在重试时进行数据表查询所使用的索引、每次进行重试的任务流程的数量、对任务流程进行重试的最大次数。
6.根据权利要求5所述的任务流程的执行方法,其特征在于,所述任务重试方式包括对任务流程进行重试的最大次数,在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作之后,所述方法还包括:
若对所述目标任务流程的重试次数达到对所述目标任务流程进行重试的最大次数,则向下列至少一种人员发送告警信息:所述目标任务流程的相关人员、所述目标节点的相关人员。
7.根据权利要求1所述的任务流程的执行方法,其特征在于,所述通过所述预定业务流程引擎对所述目标任务流程进行流转,包括:
通过所述预定业务流程引擎对所述目标任务流程进行流转,并在流转过程中将与所述目标任务流程相关的数据记录在与所述目标任务流程对应的活跃数据表中;
在从所述目标节点开始,继续对所述目标任务流程进行流转之后,所述方法还包括:
当所述目标任务流程流转完成,将在所述活跃数据表中记录的与所述目标任务流程相关的数据迁移至历史数据表中。
8.根据权利要求1所述的任务流程的执行方法,其特征在于,所述若根据所述任务调度指令中的任务调度参数确定需要对所述目标任务流程的目标节点进行重试操作,则在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作,包括:
若根据所述任务调度指令中的任务调度参数确定需要对包括所述目标任务流程在内的多个任务流程的节点进行重试操作,则将各任务流程的节点加入重试队列中;
循环执行重试步骤,所述重试步骤包括:
每次从所述重试队列的头部依次取出若干任务流程的节点对应的任务,并在所述预定业务流程引擎中根据所述若干任务流程的节点对应的任务对所述若干任务流程的节点进行重试操作;
在所述若干任务流程的节点中的至少一个任务流程的节点未完成重试操作的情况下,重新将所述至少一个任务流程的节点对应的任务加入所述重试队列的尾部。
9.根据权利要求1-8任意一项所述的任务流程的执行方法,其特征在于,所述任务流程定义信息是由流程图绘制平台根据用户在所述流程图绘制平台中绘制的流程图而生成的。
10.一种任务流程的执行装置,其特征在于,所述装置包括:
流程启动单元,用于接收任务流程创建请求,并基于所述任务流程创建请求中携带的任务流程定义信息在预定业务流程引擎中启动目标任务流程;
流转单元,用于通过所述预定业务流程引擎对所述目标任务流程进行流转,以执行与所述目标任务流程的各个节点对应的操作;
接收单元,用于接收来自预定分布式任务调度平台的任务调度指令,所述任务调度指令包括对所述预定分布式任务调度平台配置的任务调度参数,所述任务调度参数包括以下中的至少一项:任务重试对象、任务重试方式;
任务重试单元,用于若根据所述任务调度指令中的任务调度参数确定需要对所述目标任务流程的目标节点进行重试操作,则在所述预定业务流程引擎中根据所述任务调度参数重新执行与所述目标任务流程的目标节点对应的操作,并从所述目标节点开始,继续对所述目标任务流程进行流转。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的任务流程的执行方法。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至9中任一项所述的任务流程的执行方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行如权利要求1至9中任一项所述的任务流程的执行方法。
CN202311341790.5A 2023-10-17 2023-10-17 任务流程的执行方法、装置、计算机可读介质及电子设备 Pending CN117076096A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311341790.5A CN117076096A (zh) 2023-10-17 2023-10-17 任务流程的执行方法、装置、计算机可读介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311341790.5A CN117076096A (zh) 2023-10-17 2023-10-17 任务流程的执行方法、装置、计算机可读介质及电子设备

Publications (1)

Publication Number Publication Date
CN117076096A true CN117076096A (zh) 2023-11-17

Family

ID=88713891

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311341790.5A Pending CN117076096A (zh) 2023-10-17 2023-10-17 任务流程的执行方法、装置、计算机可读介质及电子设备

Country Status (1)

Country Link
CN (1) CN117076096A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117667362A (zh) * 2024-01-31 2024-03-08 上海朋熙半导体有限公司 一种流程引擎调度方法、系统、设备及可读介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107544853A (zh) * 2017-08-23 2018-01-05 万惠投资管理有限公司 一种与银行进行交互重试的方法和系统
CN111090532A (zh) * 2019-12-13 2020-05-01 深圳前海环融联易信息科技服务有限公司 应用服务的调用方法、其装置、电子设备及计算机存储介质
CN111897633A (zh) * 2020-07-01 2020-11-06 北京沃东天骏信息技术有限公司 一种任务处理的方法和装置
CN112101803A (zh) * 2020-09-21 2020-12-18 腾讯科技(深圳)有限公司 业务流程监控方法、装置、系统、设备和介质
CN113645260A (zh) * 2020-04-27 2021-11-12 北京三快在线科技有限公司 业务重试方法、装置、存储介质及电子设备
CN113961332A (zh) * 2021-11-11 2022-01-21 中国建设银行股份有限公司 一种工作流引擎实现的方法、装置、电子设备及存储介质
CN115543565A (zh) * 2022-09-22 2022-12-30 中国平安财产保险股份有限公司 任务处理方法、装置、计算机设备及存储介质
CN115934290A (zh) * 2022-12-28 2023-04-07 北京天融信网络安全技术有限公司 一种失败任务重试方法、装置、电子设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107544853A (zh) * 2017-08-23 2018-01-05 万惠投资管理有限公司 一种与银行进行交互重试的方法和系统
CN111090532A (zh) * 2019-12-13 2020-05-01 深圳前海环融联易信息科技服务有限公司 应用服务的调用方法、其装置、电子设备及计算机存储介质
CN113645260A (zh) * 2020-04-27 2021-11-12 北京三快在线科技有限公司 业务重试方法、装置、存储介质及电子设备
CN111897633A (zh) * 2020-07-01 2020-11-06 北京沃东天骏信息技术有限公司 一种任务处理的方法和装置
CN112101803A (zh) * 2020-09-21 2020-12-18 腾讯科技(深圳)有限公司 业务流程监控方法、装置、系统、设备和介质
CN113961332A (zh) * 2021-11-11 2022-01-21 中国建设银行股份有限公司 一种工作流引擎实现的方法、装置、电子设备及存储介质
CN115543565A (zh) * 2022-09-22 2022-12-30 中国平安财产保险股份有限公司 任务处理方法、装置、计算机设备及存储介质
CN115934290A (zh) * 2022-12-28 2023-04-07 北京天融信网络安全技术有限公司 一种失败任务重试方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117667362A (zh) * 2024-01-31 2024-03-08 上海朋熙半导体有限公司 一种流程引擎调度方法、系统、设备及可读介质
CN117667362B (zh) * 2024-01-31 2024-04-30 上海朋熙半导体有限公司 一种流程引擎调度方法、系统、设备及可读介质

Similar Documents

Publication Publication Date Title
US20200356403A1 (en) Methods and systems that verify endpoints and external tasks in release-pipeline prior to execution
CN108733476B (zh) 一种执行多任务的方法和装置
CA3000422C (en) Workflow service using state transfer
US8370802B2 (en) Specifying an order for changing an operational state of software application components
CN112104723B (zh) 一种多集群的数据处理系统及方法
CN110825535B (zh) 一种作业调度的方法和系统
CN109120678A (zh) 用于分布式存储系统的服务托管的方法和装置
TW201229795A (en) Web service patterns for globally distributed service fabric
CN109032796B (zh) 一种数据处理方法和装置
CN110971700B (zh) 分布式锁的实现方法及装置
US11354150B1 (en) Utilizing maintenance event windows to determine placement of instances
CN109408286A (zh) 数据处理方法、装置、系统、计算机可读存储介质
US20180136970A1 (en) Methods and systems for configuration-file inheritance
CN113157411B (zh) 一种基于Celery的可靠可配置任务系统及装置
US20210064573A1 (en) Database deployment objects and deterministic locking models
CN117076096A (zh) 任务流程的执行方法、装置、计算机可读介质及电子设备
CN111258726A (zh) 任务调度方法和装置
CN110737510A (zh) 块设备管理系统
US11817091B1 (en) Fault-tolerance techniques for dialog-driven applications
CN114787836A (zh) 用于远程执行一个或更多个任意定义的工作流的系统和方法
US11093527B2 (en) Framework for continuous processing of a set of documents by multiple software applications
CN114880386B (zh) 一种任务调度平台及任务调度方法
CN110019059B (zh) 一种定时同步的方法和装置
CN114756362A (zh) 资源配额管理方法及系统、智能终端、存储介质
CN115129438A (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