CN117667362B - 一种流程引擎调度方法、系统、设备及可读介质 - Google Patents
一种流程引擎调度方法、系统、设备及可读介质 Download PDFInfo
- Publication number
- CN117667362B CN117667362B CN202410131599.6A CN202410131599A CN117667362B CN 117667362 B CN117667362 B CN 117667362B CN 202410131599 A CN202410131599 A CN 202410131599A CN 117667362 B CN117667362 B CN 117667362B
- Authority
- CN
- China
- Prior art keywords
- flow
- instance
- node instance
- node
- process node
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 210
- 230000008569 process Effects 0.000 title claims abstract description 164
- 238000007781 pre-processing Methods 0.000 claims abstract description 15
- 238000012805 post-processing Methods 0.000 claims abstract description 11
- 230000001960 triggered effect Effects 0.000 claims abstract description 9
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 11
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 238000004519 manufacturing process Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 235000012431 wafers Nutrition 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
Abstract
本申请提供了一种流程引擎调度方法、系统、设备及介质,方法包括当流程引擎触发控制器被触发时,通过触发参数获取对应的流程模板;根据所述流程模板生成相应的流程实例和流程节点实例,并同步更新到Redis缓存;将待调度的所述流程节点实例异步存入生产者消费者模型的内存队列中;通过流程引擎中的消费线程不断地从内存队列中拉取所述流程节点实例进行调度执行;所述流程节点实例被对应的节点执行器执行,执行流程包括前置处理、执行流程节点实例逻辑、后置处理。本申请通过对流程引擎执行流程实例的调度过程进行简化和标准化处理,以便将生产者消费者模型应用到流程引擎的任务调度中,提升了流程引擎的性能和稳定性。
Description
技术领域
本申请涉及流程引擎技术领域,尤其涉及一种流程引擎调度方法、系统、设备及可读介质。
背景技术
在半导体晶圆的制造过程中,由于生产精密度高、生产场景多而复杂,对流程引擎系统的性能和稳定性要求极高。此外,考虑到实际交付场景下,系统的研发人员与产线交付实施人员往往不属于同一个团队,系统的交付和部署复杂度也成为重要考虑因素。这些特殊需求迫使寻找一个既能满足半导体复杂生产场景的性能和稳定性要求,又能简化交付部署的流程引擎系统。目前市场上主流的流程引擎系统架构设计方案各有优缺点:
方案一,根据模块功能职责划分出MasterServer和WorkerServer两个角色,以高吞吐量和扩展性为优势,但部署架构复杂,需要引入Zookeeper作为注册中心,增加了系统的复杂度和对硬件资源的占用,单机部署场景下容易导致流程调度不稳定。
方案二,采用Client和Broker的设计,通过Raft协议实现高可用的集群,具有良好的错误处理机制,且节点无状态化设计支持高可用。然而,该方案的部署同样复杂,不支持人工任务,代码侵入性较大,并且流程调度严重依赖于网络资源。
方案三,是基于事务的流程引擎,以深度优先方式搜索流程图,提供简单的集成和对人工任务的良好支持,但吞吐量较低,且功能可能过于臃肿,不适合需要快速响应和高并发处理的场景。
虽然这些现有解决方案在某些应用场景中表现良好,但它们不足以满足半导体制造领域中对高性能、高稳定性及易于部署和维护的严苛要求。
发明内容
本申请的一个目的是提供一种流程引擎调度方法、系统、设备及可读介质,至少用以使得该方法可以实现高性能的流程引擎调度,不存在所述的性能不足和部署困难的技术问题。
为实现上述目的,本申请的一些实施例提供了一种流程引擎调度方法,所述方法包括当流程引擎触发控制器被触发时,通过触发参数获取对应的流程模板;根据所述流程模板生成相应的流程实例和流程节点实例,并同步更新到Redis缓存;将待调度的所述流程节点实例异步存入生产者消费者模型的内存队列中;通过流程引擎中的消费线程不断地从内存队列中拉取所述流程节点实例进行调度执行;所述流程节点实例被对应的节点执行器执行,执行流程包括前置处理、执行流程节点实例逻辑、后置处理。
进一步地,所述方法还包括:在对所述流程节点实例进行调度执行前,判断所述流程节点实例所属的流程实例状态是否为运行中,当所述流程实例为运行中时,将所述流程节点实例流转给对应的流程节点执行器执行。
进一步地,所述前置处理包括:待调度的所述流程节点实例在被执行前,将所述流程节点实例状态由待调度更新为处理中;在所述节点执行器执行该流程节点实例时,若当前流程节点实例状态为待调度,则此流程节点实例更新成功;在所述节点执行器执行该流程节点实例时,若当前流程节点实例状态为非待调度,则此流程节点实例更新失败。
进一步地,所述节点执行器在执行流程节点实例时,从所述流程节点实例中获取携带的流程节点配置信息和上下文信息,调度执行所述流程节点实例。
进一步地,所述后置处理包括:执行所述流程节点实例逻辑后,生成所述流程节点实例所属流程实例的后续流程节点实例,并将其存入所述生产者消费者模型的内存队列;按照所述节点执行器的执行流程,调度执行所述后续流程节点实例,直至所述流程模板的节点全部调度执行完毕。
进一步地,所述方法还包括:当流程引擎调度异常中断时,通过所述流程引擎内置的补偿任务获取调度超时的流程节点实例,并对其进行补偿调度;被补偿调度的所述流程节点实例在被补偿调度执行前,进行所述前置处理。
进一步地,所述方法还包括:将调度执行完成后产生的流程实例数据和流程节点实例数据进行日志数据存档记录。
本申请的一些实施例还提供了一种流程引擎调度系统,所述系统包括:触发器模块,配置为通过API触发、消息触发或定时触发来启动流程模板,进而生成流程实例和流程节点实例,并将状态同步更新到缓存模块;缓存模块,用于存储和同步所述流程模板、流程实例和流程节点实例的状态信息;调度模块,用于将待调度的所述流程节点实例异步存入生产者消费者模型的内存队列中;通过流程引擎中的消费线程不断地从内存队列中拉取所述流程节点实例进行调度;执行模块,所述执行模块包括多个节点执行器,用于执行所述流程节点实例。
本申请的一些实施例还提供了一种流程引擎调度设备,所述设备包括:一个或多个处理器;以及存储有计算机程序指令的存储器,所述计算机程序指令在被执行时使所述处理器执行如上所述的方法。
本申请的一些实施例还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机程序指令可被处理器执行以实现所述的流程引擎调度方法。
相较于现有技术,本申请实施例提供的方案中,对流程引擎执行流程实例的调度过程进行简化和标准化处理,以便将生产者消费者模型应用到流程引擎的任务调度中,每个流程实例的调度过程尽量都在一个主机内执行,充分利用现代计算机高性能多核CPU的算力优势和内存访问的纳秒级延迟特性,实现流程引擎调度的高性能和高吞吐。通过简单的流程实例状态和流程节点实例状态设计配合内置补偿任务来实现系统的高可用和集群拓展。以此来满足半导体晶圆制造精密度高、生产场景多而复杂,且产线对系统性能和稳定性有极高的要求。
附图说明
图1为本申请实施例提供的一种流程引擎调度方法的流程示意图;
图2为本申请实施例提供的又一种流程引擎调度方法的流程示意图;
图3为本申请实施例提供的一种流程节点实例执行方法的流程示意图;
图4为本申请实施例提供的一种流程引擎调度系统的结构示意图;
图5为本申请实施例提供的一种流程引擎调度设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
关键术语和技术缩略语的解释
工作流(workflow):是指一系列有序的活动、任务或步骤,通常按照预定的规则和顺序进行。这些活动可以涉及不同的参与者、系统或资源,并根据特定的业务需求和逻辑关系进行协调和执行。工作流程可以帮助自动化业务过程、提高效率和保证一致性。
流程模板(Process Template):流程模板是工作流的一个模型,定义了工作流中的步骤、参与者、条件和规则等元素。它是工作流程的通用描述,可以被实例化为具体的工作流程实例。流程模板定义了工作流程的结构和行为,提供了一个可重用的模板,使相似的工作流程可以在不同的场景中使用。
流程实例(Process Instance)是指根据流程模板创建的一个具体的、可执行的流程。它代表了流程模板在特定时间点的实例化,通过实例化将抽象的流程模板转化为可操作的实际流程。流程实例包含了执行特定流程的所有相关信息,包括当前流程的状态、参与者、活动状态、数据和执行路径等。每个流程实例都是独立的,有独立的执行上下文和数据,可以在流程执行过程中进行状态追踪和控制。
流程节点(Workflow Node):流程节点是工作流程中的一个具体步骤或活动。每个流程节点代表一个任务、决策点或事件,需要由参与者或系统执行。流程节点可以包括执行特定的操作、等待外部输入或触发其他相关的流程节点。它们共同构成了工作流程的执行路径和逻辑。
执行(Execution):按照预定的分支或者配置的任务要求处理一次数据的过程即执行,执行可以是多个节点形成的某条路径的概念,也可以是某个节点的概念。
节点实例(Node Instance):是指流程节点被执行后产生的具体任务实例。它代表了流程节点在特定流程实例中特定执行下的流程节点实例化。每个流程流程节点实例都是一个独立的任务实例,它拥有自己的执行信息和执行上下文数据。
半导体晶圆制造这一行业对于流程引擎的性能、稳定性以及易于部署和维护的要求极为严格。现有的技术解决方案虽然在某些方面表现出优越性,但仍未能全面满足这些高标准的需求。
针对上述技术问题,本申请实施例提供了一种流程引擎调度方法,如图1所示,本申请实施例的核心在于:S101,当流程引擎触发控制器被触发时,通过触发参数获取对应的流程模板;S102,根据所述流程模板生成相应的流程实例和流程节点实例,并同步更新到Redis缓存;S103,将待调度的所述流程节点实例异步存入生产者消费者模型的内存队列中;S104,通过流程引擎中的消费线程不断地从内存队列中拉取所述流程节点实例进行调度执行;所述流程节点实例被对应的节点执行器执行,执行流程包括前置处理、执行流程节点实例逻辑、后置处理。
对流程引擎执行流程实例的调度过程进行标准化处理,以便将生产者消费者模型应用到流程引擎的任务调度中。保证整个流程引擎的调度过程充分利用现代计算机高性能多核CPU的算力优势和内存访问的纳秒级延迟特性,实现流程引擎调度的高性能和高吞吐。每次流程模板触发都会产生新的流程实例,每个流程实例在调度执行过程中会将流程模板中的节点生成对应的流程节点实例,流程节点实例是流程引擎调度执行的最小单元和唯一单元。每个流程节点实例都是生产者消费者模型下的一个独立任务。每个产生的流程节点实例都会被放置到生产者消费者模型的内存队列中。后由流程引擎消费线程不断的从内存队列中拉取流程节点实例进行调度执行。同时将执行流程节点实例的逻辑进行简化和标准化处理,每个流程节点实例的执行都抽象为前置处理、执行流程节点实例逻辑、后置处理(包含寻找后续流程节点并生成对应流程节点实例逻辑)三个部分。每个流程节点实例的执行又会生成新的后续流程节点实例,并将其放入到生产者消费者模型的内存队列中,此时每个消费者线程又充当了流程节点实例生产者的角色。如此重复执行,进而实现了流程引擎基于生产者消费者模型的内存调度过程。整个调度过程都是在一个主机中处理,避免跨主机之间的性能损耗。
通过简单的流程实例状态和流程节点实例状态设计配合内置补偿任务来实现系统的集群环境下系统的高可用。实际生产环境中应用程序重启、服务器断电、网络中断等场景下都会导致流程引擎调度的异常中断。内置的补偿任务会将由于上述场景导致的调度超时的待调度流程节点实例重新调度。为了保证流程引擎的高可用,对流程实例状态和流程节点实例状态做了控制,每个流程节点实例的调度执行都要通过流程实例的状态和流程节点实例本身的状态变更来控制。保证了调度引擎的高可用,同时避免了集群环境下的重复调度问题。
在本申请一些实施例中,所述方法还包括:在对所述流程节点实例进行调度执行前,判断所述流程节点实例所属的流程实例状态是否为运行中,当所述流程实例为运行中时,将所述流程节点实例流转给对应的流程节点执行器执行。
在启动所述流程节点实例的调度执行之前,首先会评估该流程节点实例所属的流程实例的当前状态。这一评估是为了确认流程实例是否处于一个可以安全执行流程节点的“运行中”状态。仅当流程实例处于“运行中”状态时,才会继续流程,将该流程节点实例传递给相应的流程节点执行器进行后续的执行操作。这种状态检查的机制显著提高了流程引擎的执行效率,因为它可以预防在执行流程时可能发生的任何不一致性。例如,在一个高并发的环境中,可能会有多个消费线程尝试同时执行同一个流程节点实例,而这一状态检查步骤确保了每个节点实例只会在适当的时候被正确的执行器执行。
在本申请一些实施例中,所述前置处理包括:待调度的所述流程节点实例在被执行前,将所述流程节点实例状态由待调度更新为处理中;在所述节点执行器执行该流程节点实例时,若当前流程节点实例状态为待调度,则此流程节点实例更新成功;在所述节点执行器执行该流程节点实例时,若当前流程节点实例状态为非待调度,则此流程节点实例更新失败。
当一个待调度的流程节点实例准备被执行时,首先需要将该节点实例的状态从“待调度”更新为“处理中”。这一状态变更是为了标识该节点实例已经进入执行阶段,从而避免在高并发环境中的重复执行。如果在执行器开始执行流程节点实例时,该节点的状态仍为“待调度”,这意味着该节点尚未被其他执行线程处理,在这种情况下,状态更新为“处理中”将会成功,节点执行器随后可以安全地继续执行该节点实例的逻辑。相反,如果在尝试执行流程节点实例时发现其状态不是“待调度”,比如已经被其他执行线程更新为“处理中”,则状态更新将失败,这种情况下,节点执行器不会执行该流程节点实例,从而防止了可能的重复处理和潜在的数据不一致。这种前置处理机制的引入,显著提高了整个流程引擎的执行效率和系统的可靠性。通过精确控制每个流程节点实例的执行状态,本申请的实施例能够有效管理并发执行的场景,确保流程执行的正确性和一致性。这在需要处理大量并发任务的复杂系统中尤为重要,如半导体晶圆制造等高精密度工业领域。
在本申请一些实施例中,流程实例运行状态包括:运行中 (1):表示流程实例当前正在执行,它表明流程实例已被成功触发,并且其下属的节点实例可能处于不同的执行阶段;运行异常 (2):表示流程实例遇到了一些问题,无法正常执行,这可能是由于各种原因造成的,如资源不足、系统错误、或其他外部因素;已结束 (3):表示流程实例已经完成所有操作,包括成功执行和正常结束,或因错误而提前终止。
节点实例运行状态包括:待调度 (0):表示节点实例已被创建但尚未开始执行,它是节点实例的初始状态,等待被调度执行;处理中 (1):表示节点实例正在被执行,此时节点正在进行其预定的任务或操作;等待 (2):表示节点实例已经执行了一部分,但因为某些原因(如等待外部输入或依赖)暂停执行;完成 (3):表示节点实例已经成功完成其任务;失败 (-1):表示节点实例执行失败,可能是由于内部错误、不满足的依赖条件或其他问题导致。
这种详细的状态设计允许系统进行细致的流程控制和监控,能够及时响应各种运行状况,并采取相应的措施。例如,在发现流程实例或节点实例处于异常状态时,系统可以触发补偿机制或告警通知,从而确保整个流程的稳定性和可靠性。同时,这种状态设计也为流程的调试和优化提供了重要的信息。
在本申请一些实施例中,所述节点执行器在执行流程节点实例时,从所述流程节点实例中获取携带的流程节点配置信息和上下文信息,调度执行所述流程节点实例。
当节点执行器准备执行一个流程节点实例时,它首先从该实例中提取所有相关的配置信息。这些配置信息可能包括任务的具体参数、执行条件、预期的输出格式等,这一步确保了执行器能够准确理解和执行给定的任务。除了配置信息,执行器还会获取该流程节点实例的上下文信息,上下文信息是指与该节点实例相关的环境和状态数据,例如,之前节点的输出结果,或是整个流程实例的当前状态。这些信息对于确保节点实例正确执行至关重要,特别是在复杂的流程中,节点之间可能存在依赖关系。获取必要的配置和上下文信息后,节点执行器会根据这些信息调度并执行流程节点实例,这涉及运行特定的算法、处理数据、调用其他服务或系统等多种操作。通过这种方式,节点执行器能够更加灵活和有效地执行流程节点实例,这一机制使得流程执行不仅仅依赖于静态的预定义参数,而是能够适应动态变化的环境和状态。这在处理复杂、多变的流程时尤为重要,
在本申请一些实施例中,所述后置处理包括:执行所述流程节点实例逻辑后,生成所述流程节点实例所属流程实例的后续流程节点实例,并将其存入所述生产者消费者模型的内存队列;按照所述节点执行器的执行流程,调度执行所述后续流程节点实例,直至所述流程模板的节点全部调度执行完毕。
在当前流程节点实例执行其定义的逻辑之后,节点执行器负责生成该流程实例的下一个或多个后续流程节点实例,这些后续节点实例代表流程的下一阶段或分支,并根据当前节点的输出或结果来确定。生成的后续流程节点实例随后被存入生产者消费者模型的内存队列中,这个步骤是确保流程连贯性和有效管理的关键,因为它允许系统按照预定的流程逻辑和顺序来调度和执行任务。节点执行器或系统的其他组件将从内存队列中提取这些后续流程节点实例,并按照各自的逻辑和依赖关系进行调度执行,这一过程保持持续进行,直到流程模板中定义的所有节点都被执行完毕。通过这种方式,整个流程模板中的所有节点最终都会被逐一执行,从而完成整个流程实例的执行,这不仅确保了流程的完整性,还允许流程动态地根据每个节点的结果调整后续的执行路径。此后置处理机制的引入,使得流程引擎不仅能够高效地处理当前的任务节点,还能够灵活地根据实时情况动态规划和执行整个流程的后续步骤。
在本申请一些实施例中,所述方法还包括:当流程引擎调度异常中断时,通过所述流程引擎内置的补偿任务获取调度超时的流程节点实例,并对其进行补偿调度;被补偿调度的所述流程节点实例在被补偿调度执行前,进行所述前置处理。
当流程引擎的调度由于某些意外情况(如系统故障、网络问题、硬件故障等)异常中断时,系统内置的补偿任务被触发,这个补偿任务的作用是在发生意外中断后,迅速响应并开始恢复流程。补偿任务首先会识别出那些因为调度中断而未能完成的流程节点实例,这些节点实例可能处于“待调度”状态,且当前物理时间超过了预设的节点实例调度超时时间。补偿任务随后对这些未完成的流程节点实例进行补偿调度,补偿调度的目的是重新处理这些节点的执行,以确保整个流程的顺利完成。在进行补偿调度之前,对每个被补偿的流程节点实例执行前置处理,这包括更新节点实例的状态(例如,“待调度”从更新为“处理中”),以确保节点能够在补偿调度中正确地被处理。这一补偿机制的实施,显著提高了流程引擎在面对不可预测的中断时的韧性,通过及时识别和重新调度那些受影响的节点实例,本申请的方法确保即使在系统出现异常情况下,流程也能够被有效地恢复和完成。
在本申请一些实施例中,所述方法还包括:将调度执行完成后产生的流程实例数据和流程节点实例数据进行日志数据存档记录。
过记录每个流程实例和节点实例的执行数据,系统能够提供完整的执行历史和数据轨迹,这对于后续的审计、问题诊断和性能评估是非常重要的。存档的日志数据可以用来分析流程执行的性能,如各节点的响应时间、执行频率和成功率等,这些信息对于识别瓶颈、优化流程和提升系统整体性能是非常有用的。在发生错误或故障时,详细的日志记录能够帮助快速定位问题源头,从而加快故障恢复的过程。对于需要遵守特定行业标准或法规要求的应用场景,如半导体制造、医疗保健等,这种日志记录机制可以帮助确保流程的合规性。累积的日志数据可用于进行深入的数据分析,从而获得对流程效率、使用模式和潜在改进领域的洞察。在实现这一功能时,通常会考虑到数据的存储效率、查询速度和安全性。因此,选择合适的日志存储解决方案和数据格式对于优化这一功能的性能和可用性至关重要。此外,日志记录策略应该灵活配置,以便根据不同的需要调整记录的详细程度和频率。
下面结合一具体应用实例对本申请实施例的流程引擎调度方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
如图2所示,流程模板触发:流程引擎触发控制器(Trigger)被触发,所述触发控制器包括外部系统通过API调用触发流程(API Trigger)、 消息队列中的消息触发流程(Message Trigger)、定时器到达预设时间点触发流程(Timer Trigger)。通过触发参数获取对应的流程模板等元数据,触发生成相应的流程实例(运行中)和流程节点实例(待调度),并同步更新到Redis缓存中。Redis作为缓存系统,用于存储流程实例和节点实例的状态信息,以及提供快速的数据访问。
流程节点实例存入本机内存队列:流程引擎(Flow Engine)将触发生成的流程节点实例(待调度)异步存入生产者消费者模型的调度任务队列(Scheduling Task Queue)中。后续由流程引擎中的消费线程不断的从任务调度队列中拉取流程节点实例进行调度执行。
消费线程从内存队列中拉取流程节点实例进行调度执行:流程引擎中的消费线程不断的从生产者消费者模型的任务调度队列中拉取流程节点实例(待调度),在对流程节点实例进行执行之前会先判断流程节点实例所属的流程实例状态是否为运行中。只有流程实例状态为运行中时流程节点实例才会流转给对应的流程节点执行器执行,以此来避免不必要的流程引擎异常调度。
从生产者消费者模型的本机内存队列中拉取的流程节点实例会被对应的节点执行器执行。每个流程节点实例在被执行前都要通过流程节点实例的状态变更,将流程节点实例的状态由待调度更新为处理中。如果当前流程节点实例状态为待调度,则此次流程节点实例更新成功。如果当前流程节点实例状态为非待调度,则此次流程节点实例状态更新失败。如果流程节点实例状态更新成功则执行后续调度操作,如果流程节点实例状态更新失败则不执行后续调度操作。此举避免了集群环境下的重复调度问题,同时保证了系统的高可用。
节点执行器(Task Executor)包括API Task Executor执行需要通过API调用的流程节点、Event Task Executor处理事件驱动的任务、Gateway Task Executor 执行流程控制逻辑(如条件分支)、Script Task Executor执行脚本或代码片段等。在执行流程节点实例时会直接从流程节点实例中获取携带的流程节点配置信息和上下文信息,调度执行流程节点实例。避免再次访问数据库获取相应节点配置信息导致的硬件资源消耗和性能损耗。
流程实例调度执行:流程节点实例会被对应的节点执行器执行。如图3所示,每个流程节点实例的执行都抽象为前置处理、执行流程节点实例任务逻辑、后置处理(包含寻找后续流程节点并生成对应流程节点实例逻辑)三个部分。每个流程节点实例在被对应节点执行器执行时都会生成本流程节点的后续流程节点实例,并将其存入生产者消费者模型的本机内存队列中。存入内存队列中的后续流程节点实例会继续被执行,如此循环执行直至整个流程模板的节点全部调度执行完毕,则本流程实例执行完成。同一个流程实例的整个调度过程都是尽量在同一主机内完成。
内置补偿任务(Compensate Job):另外实际生产环境中应用程序重启、服务器断电、网络中断等场景下都会导致流程引擎调度的异常中断。为了防止上述情况的发生,流程引擎应用中内置的补偿任务会获取调度超时的流程节点实例,并对其进行补偿执行。每个被补偿调度的流程节点实例在被补偿调度执行前,都要进行同正常调度执行一样流程节点实例的状态控制。只有状态控制成功的流程流程实例才会被补偿调度,以此来防止流程节点实例被重复调度执行,同时保证了系统的高可用。
流程引擎会将调度执行完成后将产生的流程实例和节点实例数据进行日志数据存档记录,存储在外部存储设备以便后续对归档数据进行查询、数据分析、数据处理等工作。
图4示出了一种流程引擎调度系统,所述系统包括:
触发器模块,配置为通过API触发、消息触发或定时触发来启动流程模板,进而生成流程实例和流程节点实例,并将状态同步更新到缓存模块。
缓存模块,用于存储和同步所述流程实例和流程节点实例的状态信息。
调度模块,用于将待调度的所述流程节点实例异步存入生产者消费者模型的内存队列中;通过流程引擎中的消费线程不断地从内存队列中拉取所述流程节点实例进行调度。
执行模块,所述执行模块包括多个节点执行器,用于执行所述流程节点实例。
不难发现,本申请实施例是与方法实施例相对应的系统实施例,本申请实施例的实现细节已在方法实施例中阐述,为避免重复,此处不再赘述。
此外,本申请实施例还提供了一种流程引擎调度设备,该设备的结构如图5所示,所述设备包括用于存储计算机可读指令的存储器90和用于执行计算机可读指令的处理器100,其中,当该计算机可读指令被该处理器执行时,触发所述处理器执行所述的流程引擎调度方法。
本申请实施例中的方法和/或实施例可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在该计算机程序被处理单元执行时,执行本申请的方法中限定的上述功能。
需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图或框图示出了按照本申请各种实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的针对硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
作为另一方面,本申请实施例还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个计算机可读指令,所述计算机可读指令可被处理器执行以实现前述本申请的多个实施例的方法和/或技术方案的步骤。
在本申请一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器(ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
此外,本申请实施例还提供了一种计算机程序,所述计算机程序存储于计算机设备,使得计算机设备执行所述控制代码执行的方法。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (7)
1.一种流程引擎调度方法,其特征在于,所述方法包括:
当流程引擎触发控制器被触发时,通过触发参数获取对应的流程模板;根据所述流程模板生成相应的流程实例和流程节点实例,并同步更新到Redis缓存;
将待调度的所述流程节点实例异步存入生产者消费者模型的内存队列中;在对所述流程节点实例进行调度执行前,判断所述流程节点实例所属的流程实例状态是否为运行中,当所述流程实例为运行中时,将所述流程节点实例流转给对应的流程节点执行器执行;
通过流程引擎中的消费线程不断地从内存队列中拉取所述流程节点实例进行调度执行;所述流程节点实例被对应的节点执行器执行,执行流程包括前置处理、执行流程节点实例逻辑、后置处理;
所述前置处理包括,待调度的所述流程节点实例在被执行前,将所述流程节点实例状态由待调度更新为处理中;在所述节点执行器执行该流程节点实例时,若当前流程节点实例状态为待调度,则此流程节点实例更新成功;在所述节点执行器执行该流程节点实例时,若当前流程节点实例状态为非待调度,则此流程节点实例更新失败;
所述节点执行器在执行流程节点实例时,从所述流程节点实例中获取携带的流程节点配置信息和上下文信息,调度执行所述流程节点实例。
2.根据权利要求1所述方法,其特征在于,所述后置处理包括:
执行所述流程节点实例逻辑后,生成所述流程节点实例所属流程实例的后续流程节点实例,并将其存入所述生产者消费者模型的内存队列;
按照所述节点执行器的执行流程,调度执行所述后续流程节点实例,直至所述流程模板的节点全部调度执行完毕。
3.根据权利要求2所述方法,其特征在于,所述方法还包括:
当流程引擎调度异常中断时,通过所述流程引擎内置的补偿任务获取调度超时的流程节点实例,并对其进行补偿调度;
被补偿调度的所述流程节点实例在被补偿调度执行前,进行所述前置处理。
4.根据权利要求3所述方法,其特征在于,所述方法还包括:
将调度执行完成后产生的流程实例数据和流程节点实例数据进行日志数据存档记录。
5.一种流程引擎调度系统,其特征在于,所述系统包括:
触发器模块,配置为通过API触发、消息触发或定时触发来启动流程模板,进而生成流程实例和流程节点实例,并将状态同步更新到缓存模块;
缓存模块,用于存储和同步流程实例和流程节点实例的状态信息;
调度模块,用于将待调度的所述流程节点实例异步存入生产者消费者模型的内存队列中;通过流程引擎中的消费线程不断地从内存队列中拉取所述流程节点实例进行调度;在对所述流程节点实例进行调度执行前,判断所述流程节点实例所属的流程实例状态是否为运行中,当所述流程实例为运行中时,将所述流程节点实例流转给对应的流程节点执行器执行;
执行模块,所述执行模块包括多个节点执行器,用于执行所述流程节点实例;执行流程包括前置处理、执行流程节点实例逻辑、后置处理;所述前置处理包括,待调度的所述流程节点实例在被执行前,将所述流程节点实例状态由待调度更新为处理中;在所述节点执行器执行该流程节点实例时,若当前流程节点实例状态为待调度,则此流程节点实例更新成功;在所述节点执行器执行该流程节点实例时,若当前流程节点实例状态为非待调度,则此流程节点实例更新失败;所述节点执行器在执行流程节点实例时,从所述流程节点实例中获取携带的流程节点配置信息和上下文信息,调度执行所述流程节点实例。
6.一种流程引擎调度设备,其特征在于,所述设备包括:
一个或多个处理器;以及
存储有计算机程序指令的存储器,所述计算机程序指令在被执行时使所述处理器执行如权利要求1-4任意一项所述的方法。
7.一种计算机可读介质,其上存储有计算机程序指令,所述计算机程序指令可被处理器执行以实现如权利要求1-4任意一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410131599.6A CN117667362B (zh) | 2024-01-31 | 2024-01-31 | 一种流程引擎调度方法、系统、设备及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410131599.6A CN117667362B (zh) | 2024-01-31 | 2024-01-31 | 一种流程引擎调度方法、系统、设备及可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117667362A CN117667362A (zh) | 2024-03-08 |
CN117667362B true CN117667362B (zh) | 2024-04-30 |
Family
ID=90064497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410131599.6A Active CN117667362B (zh) | 2024-01-31 | 2024-01-31 | 一种流程引擎调度方法、系统、设备及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667362B (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10453010B2 (en) * | 2013-11-14 | 2019-10-22 | Huawei Technologies Co., Ltd. | Computer device, method, and apparatus for scheduling business flow |
CN111178815A (zh) * | 2018-11-12 | 2020-05-19 | 北大方正集团有限公司 | 流程实例模板的生成方法、装置及计算机可读存储介质 |
CN113190334A (zh) * | 2021-04-21 | 2021-07-30 | 北京字跳网络技术有限公司 | 流程引擎的控制方法、装置、终端和存储介质 |
CN113467919A (zh) * | 2021-07-19 | 2021-10-01 | 中国银行股份有限公司 | 基于区块链的流程管理方法、系统和存储介质 |
CN113900788A (zh) * | 2021-10-20 | 2022-01-07 | 咪咕文化科技有限公司 | 分布式工作调度方法及分布式工作流引擎系统 |
CN112200505B (zh) * | 2020-12-04 | 2022-02-08 | 望海康信(北京)科技股份公司 | 跨业务系统的流程监控装置、方法及相应设备和存储介质 |
CN114240382A (zh) * | 2021-12-21 | 2022-03-25 | 中国建设银行股份有限公司 | 基于结构化流程模板的流程实例生成方法及装置 |
CN114595075A (zh) * | 2020-12-04 | 2022-06-07 | 中盈优创资讯科技有限公司 | 一种基于分布式调度的网络编排中异步任务执行方法 |
CN114663063A (zh) * | 2022-03-30 | 2022-06-24 | 中信百信银行股份有限公司 | 工作流引擎的实现方法、装置和设备及存储介质 |
CN115629737A (zh) * | 2022-09-26 | 2023-01-20 | 浙江极氪智能科技有限公司 | 流程编排引擎的实现方法和流程编排引擎系统 |
CN116088972A (zh) * | 2023-03-27 | 2023-05-09 | 平安科技(深圳)有限公司 | 工作流引擎实现方法、系统、计算机设备及存储介质 |
CN116594752A (zh) * | 2023-05-26 | 2023-08-15 | 中国工商银行股份有限公司 | 流程调度方法、装置、设备、介质和程序产品 |
CN117076096A (zh) * | 2023-10-17 | 2023-11-17 | 腾讯科技(深圳)有限公司 | 任务流程的执行方法、装置、计算机可读介质及电子设备 |
CN117472423A (zh) * | 2023-10-18 | 2024-01-30 | 上海朋熙半导体有限公司 | 一种引用资源与流程设计解耦的可视化工作流编排系统及方法、设备及介质 |
CN117472988A (zh) * | 2023-11-03 | 2024-01-30 | 上海朋熙半导体有限公司 | 一种流程实例的日志查看方法、装置、设备及可读介质 |
-
2024
- 2024-01-31 CN CN202410131599.6A patent/CN117667362B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10453010B2 (en) * | 2013-11-14 | 2019-10-22 | Huawei Technologies Co., Ltd. | Computer device, method, and apparatus for scheduling business flow |
CN111178815A (zh) * | 2018-11-12 | 2020-05-19 | 北大方正集团有限公司 | 流程实例模板的生成方法、装置及计算机可读存储介质 |
CN114595075A (zh) * | 2020-12-04 | 2022-06-07 | 中盈优创资讯科技有限公司 | 一种基于分布式调度的网络编排中异步任务执行方法 |
CN112200505B (zh) * | 2020-12-04 | 2022-02-08 | 望海康信(北京)科技股份公司 | 跨业务系统的流程监控装置、方法及相应设备和存储介质 |
CN113190334A (zh) * | 2021-04-21 | 2021-07-30 | 北京字跳网络技术有限公司 | 流程引擎的控制方法、装置、终端和存储介质 |
CN113467919A (zh) * | 2021-07-19 | 2021-10-01 | 中国银行股份有限公司 | 基于区块链的流程管理方法、系统和存储介质 |
CN113900788A (zh) * | 2021-10-20 | 2022-01-07 | 咪咕文化科技有限公司 | 分布式工作调度方法及分布式工作流引擎系统 |
CN114240382A (zh) * | 2021-12-21 | 2022-03-25 | 中国建设银行股份有限公司 | 基于结构化流程模板的流程实例生成方法及装置 |
CN114663063A (zh) * | 2022-03-30 | 2022-06-24 | 中信百信银行股份有限公司 | 工作流引擎的实现方法、装置和设备及存储介质 |
CN115629737A (zh) * | 2022-09-26 | 2023-01-20 | 浙江极氪智能科技有限公司 | 流程编排引擎的实现方法和流程编排引擎系统 |
CN116088972A (zh) * | 2023-03-27 | 2023-05-09 | 平安科技(深圳)有限公司 | 工作流引擎实现方法、系统、计算机设备及存储介质 |
CN116594752A (zh) * | 2023-05-26 | 2023-08-15 | 中国工商银行股份有限公司 | 流程调度方法、装置、设备、介质和程序产品 |
CN117076096A (zh) * | 2023-10-17 | 2023-11-17 | 腾讯科技(深圳)有限公司 | 任务流程的执行方法、装置、计算机可读介质及电子设备 |
CN117472423A (zh) * | 2023-10-18 | 2024-01-30 | 上海朋熙半导体有限公司 | 一种引用资源与流程设计解耦的可视化工作流编排系统及方法、设备及介质 |
CN117472988A (zh) * | 2023-11-03 | 2024-01-30 | 上海朋熙半导体有限公司 | 一种流程实例的日志查看方法、装置、设备及可读介质 |
Non-Patent Citations (1)
Title |
---|
Activiti引擎的无状态云工作流调度算法;林国丹;黄钦开;余阳;潘茂林;;计算机集成制造系统;20200615(06);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117667362A (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7779298B2 (en) | Distributed job manager recovery | |
CN107016480B (zh) | 任务调度方法、装置及系统 | |
US8813035B2 (en) | Paradigm for concurrency testcase generation | |
US10073683B2 (en) | System and method for providing software build violation detection and self-healing | |
CN111400011B (zh) | 一种实时任务调度方法、系统、设备及可读存储介质 | |
CN110287052A (zh) | 一种异常任务的根因任务确定方法及装置 | |
CN108804215B (zh) | 一种任务处理方法、装置以及电子设备 | |
JP6369170B2 (ja) | 実行時間推定装置及び方法 | |
CN112000350B (zh) | 一种动态规则更新方法、装置及存储介质 | |
US11442837B2 (en) | Monitoring long running workflows for robotic process automation | |
CN109144701A (zh) | 一种任务流管理方法、装置、设备及系统 | |
CN112650676A (zh) | 软件测试方法、装置、设备及存储介质 | |
US9015533B1 (en) | Error handling for asynchronous applications | |
CN115964153A (zh) | 一种异步任务处理方法、装置、设备以及存储介质 | |
CN116016531A (zh) | 一种批量停复机处理方法及装置 | |
US11954123B2 (en) | Data processing method and device for data integration, computing device and medium | |
US9170915B1 (en) | Replay to reconstruct program state | |
CN117667362B (zh) | 一种流程引擎调度方法、系统、设备及可读介质 | |
US9152533B1 (en) | Asynchronous programming system | |
CN115437766A (zh) | 一种任务处理方法和装置 | |
JP5387083B2 (ja) | ジョブ管理システムおよび方法 | |
CN115056234A (zh) | 基于事件驱动和无限状态机的rpa控制器调度方法及系统 | |
CN110750371A (zh) | 流程执行方法、装置、设备及存储介质 | |
CN117290113B (zh) | 一种任务处理方法、装置、系统和存储介质 | |
CN116109112B (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 | ||
GR01 | Patent grant |