流程调度执行方法、装置、计算机设备和存储介质与流程

文档序号:33562253发布日期:2023-03-22 15:53阅读:52来源:国知局
流程调度执行方法、装置、计算机设备和存储介质与流程

1.本技术涉及互联网技术领域,特别是涉及一种流程调度执行方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。


背景技术:

2.随着互联网科学技术的发展,多端之间的交互也越来越繁杂,人们在办理业务时,需要在根据业务流程中针对各个业务节点对对应的业务状态进行判断或信息获取,于是逐渐发展出了通过流程实例表对各个申请业务进行处理的互联网技术。
3.通常的,流程实例表一般具有多个申请任务,即流程实例。流程实例中通过标记各个流程节点的状态位来表征流程实例完成情况,通过固定的代码执行固定的程序,不同的状态表示不同的流程处理步骤。然而,仅依据状态位标记来进行流程处理,容易出现执行冲突问题。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够对多流程实例同时调度,对多流程节点有序处理的流程调度执行方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
5.第一方面,本技术提供了一种流程调度执行方法,所述方法包括:
6.获取流程实例表中的各流程实例,从所述流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例;
7.针对当前调度的每一个所述目标流程实例,顺序执行所述目标流程实例中的各个流程节点;
8.当不同所述目标流程实例中当前执行的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序;
9.在当前调度的所述目标流程实例中各流程节点执行结束时,从所述流程实例表中重新调度新的流程实例执行流程节点,直至所述流程实例表中各流程实例调度结束。
10.在其中一个实施例中,所述当不同所述目标流程实例各自的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序,包括:
11.当执行不同所述目标流程实例各自的流程节点所需的资源相同时,触发并发冲突算法;
12.基于所述并发冲突算法,对未占用到所述资源的流程节点进行调度执行时间调节;
13.根据调节后的调度执行时间,执行所述未占用到所述资源的流程节点。
14.在其中一个实施例中,所述基于所述并发冲突算法,对未占用到所述资源的流程节点进行调度执行时间调节,包括:
15.获取退避延时队列,所述退避延时队列中的最大值与所述流程节点的最大允许执
行次数正相关;
16.根据从所述退避延时队列中随机选取的数值,确定退避延时时间;
17.基于所述退避延时时间,调节所述对未占用到所述资源的流程节点的调度执行时间。
18.在其中一个实施例中,所述获取流程实例表中的各流程实例,从所述流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例,包括:
19.获取所述流程实例表中各流程实例,确定每一所述流程实例各自的调度执行时间和状态指标;
20.在当前时间大于或等于所述流程实例的调度执行时间、且所述流程实例的状态指标符合状态指标条件时,将所述流程实例确定为当前可调度的流程实例;
21.按照所述当前可调度的流程实例的调度优先级,对所述当前可调度的流程实例中的至少两个目标流程实例进行调度。
22.在其中一个实施例中,所述针对当前调度的每一个所述目标流程实例,顺序执行所述目标流程实例中的各个流程节点,包括:
23.对当前调度的所述目标流程实例进行流程节点遍历,确定当前待执行的目标流程节点;
24.在当前时间处于所述目标流程节点的服务时间段内,且所述目标流程节点符合准入执行条件时,执行所述目标流程节点;
25.在当前时间不处于所述目标流程节点的服务时间段时,更新所述目标流程节点所在的目标流程实例的调度执行时间,并将所述目标流程实例挂起;
26.在所述目标流程节点不符合准入执行条件时,将所述目标流程节点的下一流程节点确定为当前待执行流程节点,直至遍历结束。
27.在其中一个实施例中,所述在当前时间处于所述目标流程节点的服务时间段,且所述目标流程节点符合准入执行条件时,执行所述目标流程节点之后,还包括:
28.获取所述目标流程节点的执行结果;
29.当所述执行结果为执行失败时,确定所述目标流程节点的累计执行失败次数;
30.当所述累计执行失败次数大于最大允许执行次数、且所述目标流程节点为关键节点时,发送针对所述目标流程节点的处理提醒消息。
31.第二方面,本技术还提供了一种流程调度执行装置,所述装置包括:
32.流程实例调度模块,用于获取流程实例表中的各流程实例,从所述流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例;
33.节点执行模块,用于针对当前调度的每一个所述目标流程实例,顺序执行所述目标流程实例中的各个流程节点;
34.并发冲突处理模块,用于当不同所述目标流程实例中当前执行的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序;
35.遍历执行模块,用于在当前调度的所述目标流程实例中各流程节点执行结束时,从所述流程实例表中重新调度新的流程实例执行流程节点,直至所述流程实例表中各流程实例调度结束。
36.第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理
器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
37.获取流程实例表中的各流程实例,从所述流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例;
38.针对当前调度的每一个所述目标流程实例,顺序执行所述目标流程实例中的各个流程节点;
39.当不同所述目标流程实例中当前执行的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序;
40.在当前调度的所述目标流程实例中各流程节点执行结束时,从所述流程实例表中重新调度新的流程实例执行流程节点,直至所述流程实例表中各流程实例调度结束。
41.第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
42.获取流程实例表中的各流程实例,从所述流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例;
43.针对当前调度的每一个所述目标流程实例,顺序执行所述目标流程实例中的各个流程节点;
44.当不同所述目标流程实例中当前执行的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序;
45.在当前调度的所述目标流程实例中各流程节点执行结束时,从所述流程实例表中重新调度新的流程实例执行流程节点,直至所述流程实例表中各流程实例调度结束。
46.第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
47.获取流程实例表中的各流程实例,从所述流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例;
48.针对当前调度的每一个所述目标流程实例,顺序执行所述目标流程实例中的各个流程节点;
49.当不同所述目标流程实例中当前执行的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序;
50.在当前调度的所述目标流程实例中各流程节点执行结束时,从所述流程实例表中重新调度新的流程实例执行流程节点,直至所述流程实例表中各流程实例调度结束。
51.上述流程调度执行方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,通过对流程实例表中的流程实例进行调度,再执行流程实例中的流程节点,并在流程实例间的流程节点发生并发冲突时调节流程节点的执行顺序,能够实现对多流程实例同时调度,对多流程节点有序处理。解决了执行流程节点冲突的问题。
附图说明
52.图1为一个实施例中流程调度执行方法的应用环境图;
53.图2为一个实施例中流程调度执行方法的流程示意图;
54.图3为一个实施例中当不同目标流程实例各自的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序步骤的流程示意图;
55.图4为一个实施例中基于并发冲突算法,对未占用到资源的流程节点进行调度执行时间调节步骤的流程示意图;
56.图5为一个实施例中获取流程实例表中的各流程实例,从流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例步骤的流程示意图;
57.图6为一个实施例中针对当前调度的每一个目标流程实例,顺序执行目标流程实例中的各个流程节点步骤的流程示意图;
58.图7为一个实施例中在当前时间处于目标流程节点的服务时间段,且目标流程节点符合准入执行条件时,执行目标流程节点之后步骤的流程示意图;
59.图8为一个实施例中流程实例配置界面的示意图;
60.图9为一个实施例中流程节点执行的流程图;
61.图10为一个实施例中流程调度执行装置的结构框图;
62.图11为一个实施例中计算机设备的内部结构图。
具体实施方式
63.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术。
64.在此使用时,单数形式的“一”、“一个”和“所述/该”也可以包括复数形式,除非上下文清楚指出另外的方式。还应当理解的是,术语“包括/包含”或“具有”等指定所陈述的特征、整体、步骤、操作、组件、部分或它们的组合的存在,但是不排除存在或添加一个或更多个其他特征、整体、步骤、操作、组件、部分或它们的组合的可能性。
65.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术。
66.本技术实施例提供的流程调度执行方法,可以应用于如图1所示的应用环境中。其中,服务器102有多个,通过网络与调度执行系统104进行通信。数据存储系统可以存储调度执行系统104需要处理的数据,包括且不限于流程实例表。数据存储系统可以集成在调度执行系统104上,可以集成在服务器102的其中一个上,也可以放在云上或其他网络服务器上。其中,流程实例表是具有多个流程实例的流程实例列表,每一个流程实例中具有多个依次排列的流程节点,执行完流程节点即表示该流程实例执行完成,调度完所有流程实例即表示该流程实例表调度结束。调度执行系统104获取数据存储系统中的流程实例表,并从流程实例表中的各个流程实例中选取出可调度的流程实例,执行可调度的流程实例中的流程节点。在执行过程中,调度执行系统104可以根据流程节点的内容对服务器102发出请求数据,用于执行该流程节点,并且接收服务器102返回的反馈数据,用于触发并发冲突的判断或者是标记该流程节点的执行结果。服务器102可以但不限于是各种能够交互的服务器或是终端,用独立的服务器或者是多个服务器组成的服务器集群来实现。
67.在一个实施例中,如图2所示,提供了一种流程调度执行方法,以该方法应用于图1
中的调度执行系统102为例进行说明,包括以下步骤:
68.步骤202,获取流程实例表中的各流程实例,从流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例。
69.其中,流程实例表是具有多个流程实例的流程实例列表,流程实例是通过流程定义启动的一个流程,表示一个流程从开始到结束的最大的流程分支,在一个流程任务中,只存在一个流程实例,其中的每一个流程实例又具有两个及以上的流程节点,是流程中的一系列环节步骤,通过不同类型流程节点的组合实现流程逻辑。执行完一个流程实例内的流程节点即表示该流程实例执行完成,调度完所有流程实例即表示该流程实例表调度结束。
70.具体的,调度执行系统获取流程实例表中的各个流程实例,根据各个流程实例的调度执行条件,从流程实例表中选取当前可调度的流程实例,基于可调度的流程实例的调度优先级,调度至少两个目标流程实例。
71.可选的,调度流程实例的数目并不唯一,两个以上均可,在一个实施例中,可以选取为6个,即可以根据可调度的流程实例的调度优先级,调度6个目标流程实例。
72.步骤204,针对当前调度的每一个目标流程实例,顺序执行目标流程实例中的各个流程节点。
73.具体的,每一个目标流程实例中具有多个可依次执行的流程节点,当目标流程实例开始执行时,根据各个流程实例的调度执行条件,从该流程实例中选取当前待执行的目标流程节点,执行目标流程节点,即顺序执行目标流程实例中的各个流程节点。
74.步骤206,当不同目标流程实例中当前执行的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序。
75.其中,当不同目标流程实例当前执行的流程节点,两个或两个以上的流程节点同时执行一个操作,此时称流程节点存在并发冲突,存在并发冲突的流程节点可以为一个或多个,正在执行中占用资源的流程节点不触发并发冲突判断。
76.具体的,调度执行系统调度至少两个目标流程实例,各个目标流程实例中均具有当前执行的流程节点,流程节点可能会因为资源受限无法在同一时段内执行相同的操作,当一个或多个流程实例中当前执行的流程节点从服务器102获取到的反馈数据触发并发冲突的判断时,采用并发冲突算法对存在并发冲突的各流程节点调整执行顺序,使得流程实例能够顺利执行。
77.可选的,并发冲突的产生原因通常是因为资源受限或是流程节点所需的目标点位占用等问题导致无法执行,可以是当前执行的流程节点对应所需发送请求数据的目标服务器被占用,也可以是流程节点需要获取的数据资源正在被其他流程节点使用达到使用上限。
78.步骤208,在当前调度的目标流程实例中各流程节点执行结束时,从流程实例表中重新调度新的流程实例执行流程节点,直至流程实例表中各流程实例调度结束。
79.具体的,流程实例表中具有多个流程实例,当前调度的目标流程实例中各流程节点执行结束,意味着当前目标流程实例调度结束,调度执行系统从流程实例表中重新依据各个流程实例的调度执行条件,从流程实例表中选取当前可调度的流程实例,基于可调度的流程实例的调度优先级,调度至少两个新的目标流程实例,执行新的目标流程实例中的流程节点。直到流程实例表中各流程实例均调度结束,则该流程实例表调度完成。
80.上述流程调度执行方法中,通过对流程实例表中的流程实例进行调度,再执行流程实例中的流程节点,并在流程实例间的流程节点发生并发冲突时调节流程节点的执行顺序,能够实现对多流程实例同时调度,对多流程节点有序处理。解决了流程节点执行冲突的问题。
81.在一个实施例中,如图3所示,当不同目标流程实例各自的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序,包括步骤302、步骤304和步骤306。
82.步骤302,当执行不同目标流程实例各自的流程节点所需的资源相同时,触发并发冲突算法。
83.流程节点执行对应的任务时需要使用一定的资源。例如,有一流程节点需要与对应的服务器交互并使服务器响应,这个执行期间就会占用该服务器的接口资源和数据资源。具体的,调度执行系统调度至少两个目标流程实例,执行不同目标流程实例中当前执行的流程节点,若当前执行的流程节点中所需的资源相同或者所需的资源被占用,即存在并发冲突时,触发并发冲突算法对存在并发冲突的流程节点进行调度调整。
84.步骤304,基于并发冲突算法,对未占用到资源的流程节点进行调度执行时间调节。
85.具体的,并发冲突算法用于处理并发冲突,基于并发冲突算法,对触发并发冲突的流程节点,即未占用到资源的流程节点进行调节,更新该流程节点对应的流程实例的调度执行时间,以使流程节点能够执行时获取到所需的资源。
86.进一步的,并发冲突算法并不唯一,能够实现未占用到资源的流程节点退避避免执行时资源受到限制即可。例如,并发冲突算法可以是二进制指数退避算法。当流程节点对应的流程实例的调度执行时间更新后,此时的流程实例可以是当前可调度的流程实例,依然作为调度的目标流程实例执行其中的流程节点;也可以是当前不可调度的流程实例,放置于流程实例表中等待,直至成为当前可调度的流程实例。
87.步骤306,根据调节后的调度执行时间,执行未占用到资源的流程节点。
88.具体的,根据并发冲突算法对未占用的资源的流程节点对应的流程实例进行调度执行时间调节,调节后的流程节点具有新的调度执行时间,当新的调度执行时间依然满足可调度的流程实例条件时,执行该流程实例中未占用到资源的流程节点。
89.在本实施例中,通过对资源受限制的流程节点采用并发冲突算法,对发生并发冲突的流程节点对应的流程实例的调度执行时间进行调节,获取新的调度执行时间,并根据新的调度执行时间去执行流程节点,解决了各个流程实例中流程节点执行时出现执行冲突的问题。
90.在一个实施例中,如图4所示,基于并发冲突算法,对未占用到资源的流程节点进行调度执行时间调节,包括步骤402、步骤404和步骤406。
91.步骤402,获取退避延时队列,退避延时队列中的最大值与流程节点的最大允许执行次数正相关。
92.其中,退避延时队列是基于并发冲突算法得到的队列。流程节点的最大允许执行次数为调度执行系统的设定值,用于在流程节点执行失败时限制流程节点的重复尝试次数。正相关是指两个变量变动方向相同,一个变量由大到小或由小到大变化时,另一个变量亦由大到小或由小到大变化,在本方案中是指退避延时队列中的最大值与流程节点的最大
允许执行次数大小变化趋势相同。
93.具体的,根据并发冲突算法生成一个退避延时队列,该退避延时队列的特征为退避延时队列中的最大值与流程节点的最大允许执行次数正相关,退避延时队列用于确定流程节点的退避延时时间。示例性的,当并发冲突算法为二进制指数退避算法时,退避延时队列为包括0到重试次数阈值的二次方减一的正整数队列。
94.步骤404,根据从退避延时队列中随机选取的数值,确定退避延时时间。
95.其中,退避延时时间为该流程节点延迟执行的时间。具体的,从退避延时队列中随机选取一个数值,该数值通过并发冲突算法中的设定换算公式,确定退避延时时间。
96.示例性的,当并发冲突算法为二进制指数退避算法时,对应的并发冲突算法中的设定换算公式为:基于退避延时队列中随机选取的数值,与设定重试时间间隔相乘,得到退避延时时间。
97.步骤406,基于退避延时时间,调节对未占用到资源的流程节点的调度执行时间。
98.具体的,结合退避延时时间和调度执行系统的当前时间,更新未占用到资源的流程节点对应的流程实例的调度执行时间。可选的,将退避延时时间与调度执行系统的当前时间相加,得到并发冲突算法处理后的调度执行时间,并将该调度执行时间更新至未占用到资源的流程节点对应的流程实例的调度执行时间中,该调度实例将根据并发冲突算法处理后的调度执行时间执行流程实例中的流程节点。
99.在本实施例中,通过采用具体的并发冲突算法,生成退避延时队列并获取对应的退避延时时间,根据退避延时时间对发生并发冲突的流程节点对应的流程实例的调度执行时间进行调节,获取新的调度执行时间,并根据新的调度执行时间去执行流程节点,解决了各个流程实例中流程节点执行时出现执行冲突的问题。
100.在一个实施例中,如图5所示,获取流程实例表中的各流程实例,从流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例,包括步骤502、步骤504和步骤506。
101.步骤502,获取流程实例表中各流程实例,确定每一流程实例各自的调度执行时间和状态指标。
102.其中,调度执行时间和状态指标为每个流程实例都具有的属性,调度执行时间是一个时间点属性,用于判断流程实例在调度执行系统的当前时间是否可以调度;状态指标是一个标记属性,用于判断流程实例是否可以调度。
103.具体的,调度执行系统获取流程实例表中各流程实例的调度执行时间和状态指标,每一个流程实例都具有各自的调度执行时间和状态指标。
104.示例性的,调度执行时间可以为全天的各个时间点,状态指标包括且不限于初始化状态、等待状态、执行次数小于或等于最大允许执行次数状态、执行次数大于最大允许执行次数状态和人工处理状态。
105.步骤504,在当前时间大于或等于流程实例的调度执行时间、且流程实例的状态指标符合状态指标条件时,将流程实例确定为当前可调度的流程实例。
106.具体的,在流程实例表中查询所有流程实例的调度执行时间和状态指标,在调度执行系统的当前时间大于或等于流程实例的调度执行时间、且流程实例的状态指标符合状态指标条件时,将流程实例确定为当前可调度的流程实例。
107.可选的,在查询完所有流程实例并确定完所有当前可调度的流程实例之后,可以
生成一个当前可调度的流程实例表。
108.示例性的,若流程实例的状态指标包括初始化状态、等待状态、执行结束状态、执行次数小于或等于最大允许执行次数状态、执行次数大于最大允许执行次数状态和人工处理状态,其中,初始化状态、等待状态和执行次数小于或等于最大允许执行次数状态符合状态指标条件,可以将流程实例确定为当前可调度的流程实例;执行结束状态、执行次数大于最大允许执行次数状态和人工处理状态不符合状态指标条件,不能将流程实例确定为当前可调度的流程实例。
109.进一步的,人工处理状态下的流程实例会在调度执行系统上显示提示信息,便于工作人员对该流程实例进行查看和人工处理。
110.步骤506,按照当前可调度的流程实例的调度优先级,对当前可调度的流程实例中的至少两个目标流程实例进行调度。
111.其中,调度优先级为每个流程实例都具有的属性,调度优先级分为几个等级,例如低、中和高三个等级。具体的,调度优先级用于对当前可调度的流程实例中的流程实例进行调度顺序排序,并根据调度执行平台的设定调度执行数量进行调度,该设定调度执行数量并不唯一,可以为两个及两个以上任意数。
112.可选的,若生成有当前可调度的流程实例表,在对当前可调度的流程实例中的流程实例进行调度顺序排序时,就是对当前可调度的流程实例表中的流程实例进行排序调整,得到新的可调度的流程实例表,并依据该流程实例表内的流程实例顺序进行调度。若出现调度优先级相同的当前可调度的流程实例,可以通过流程实例名称字符顺序,对调度优先级相同的当前可调度的流程实例进行排序,例如,以流程实例名称字符的第一个字符,根据英文字母序列从a至z进行排列。
113.在本实施例中,通过对流程实例表中的流程实例进行调度执行时间和状态指标筛选,得到各个当前可调度的流程实例,再根据当前可调度的流程实例的调度优先级对流程实例进行调度,准确调度当前可执行的流程实例,保证调度执行系统对流程实例的执行选取准确性,可以提高流程实例的执行效率。
114.在一个实施例中,如图6所示,针对当前调度的每一个目标流程实例,顺序执行目标流程实例中的各个流程节点,包括步骤602、步骤604、步骤606和步骤608。
115.步骤602,对当前调度的目标流程实例进行流程节点遍历,确定当前待执行的目标流程节点。
116.其中,遍历为一种访问方式,广泛意义上指沿着某条搜索路线依次对每个节点均做一次且仅做一次访问,在本方案中是指将目标流程实例中的所有流程节点从上往下顺序访问一遍。
117.具体的,对当前调度的目标流程实例进行流程节点的依次访问,根据每个流程节点的属性特征确定当前待执行的目标流程节点。示例性的,每个流程节点的属性特征并不唯一,可以包括且不限于流程节点的服务时间段、流程节点的准入执行条件和执行结果。访问时,根据每个流程节点的属性特征确定当前待执行的目标流程节点。其中,执行结果为执行成功的流程节点将在遍历时自动跳过。
118.步骤604,在当前时间处于目标流程节点的服务时间段内,且目标流程节点符合准入执行条件时,执行目标流程节点。
119.其中,服务时间段和准入执行条件为流程节点的属性特征,服务时间段由流程节点需要访问的服务器开放时间或是资源库开放时间决定,准入执行条件由流程实例配置时设定。
120.具体的,调度执行系统根据流程节点的属性特征确定当前待执行的目标流程节点,当流程节点满足当前时间处于流程节点的服务时间段内,且流程节点符合准入执行条件时,将该流程节点作为目标流程节点,并执行该目标流程节点。
121.步骤606,在当前时间不处于目标流程节点的服务时间段时,更新目标流程节点所在的目标流程实例的调度执行时间,并将目标流程实例挂起。
122.其中,挂起为流程执行中的用语,意思是放置回归至流程实例表,不再占用调度执行系统的执行流程实例位置,等待重新被调度时才继续执行其中的流程节点。
123.具体的,调度执行系统根据流程节点的属性特征确定当前待执行的目标流程节点,流程执行系统的当前时间不处于目标流程节点的服务时间段时,即流程节点的服务时间段与流程执行系统的当前时间不匹配,根据该流程节点的服务时间段更新该流程节点所在的目标流程实例的调度执行时间,更新调度执行时间后,将目标流程实例挂起,调度执行平台再根据实时的当前可调度的流程实例的调度优先级,调度下一个之前未被调度的流程实例。
124.步骤608,在目标流程节点不符合准入执行条件时,将目标流程节点的下一流程节点确定为当前待执行流程节点,直至遍历结束。
125.具体的,调度执行系统根据流程节点的属性特征确定当前待执行的目标流程节点,流程节点不符合准入执行条件时,跳过该流程节点,并将目标流程节点的下一流程节点确定为当前待执行流程节点,再根据当前待执行流程节点的属性特征判断当前待执行流程节点是否为当前待执行的目标流程节点。若当前待执行流程节点为当前待执行的目标流程节点,则执行该目标流程节点;若当前待执行流程节点不是当前待执行的目标流程节点,则继续将下一流程节点确认为新的当前待执行流程节点。持续遍历行为用于确定当前待执行的目标流程节点,直至遍历结束。
126.在本实施例中,通过对目标流程实例中的流程节点进行遍历,根据各个流程节点的服务时间段和准入执行条件确定当前待执行的目标流程节点,执行目标流程节点,可以准确捕捉到当前待执行的目标流程节点,保证调度执行系统对流程节点的执行准确性,可以提高流程节点的执行效率。
127.在一个实施例中,如图7所示,在当前时间处于目标流程节点的服务时间段,且目标流程节点符合准入执行条件时,执行目标流程节点之后,还包括步骤702、步骤704和步骤706。
128.步骤702,获取目标流程节点的执行结果。
129.具体的,目标流程节点执行动作结束后,会更新目标流程节点的执行结果,该执行结果表征目标流程节点的执行情况。可选的,目标流程节点的执行结果可以为执行成功、执行失败和未执行。
130.步骤704,当执行结果为执行失败时,确定目标流程节点的累计执行失败次数。
131.具体的,当流程节点执行失败时,更新该流程节点的执行结果为执行失败,并获取该流程节点的执行失败次数,确定目标流程节点的累计执行失败次数。示例性的,执行失败
的原因可以是因为网络异常或者是其他异常,执行失败次数可以是记录在流程节点的执行结果内,也可以是由计数器记录。
132.步骤706,当累计执行失败次数大于最大允许执行次数、且目标流程节点为关键节点时,发送针对目标流程节点的处理提醒消息。
133.具体的,目标流程节点还具有一个属性特征,用于标记该目标流程节点是关键节点或非关键节点。当目标流程节点的累计执行失败次数大于最大允许执行次数、且目标流程节点为关键节点时,发送针对目标流程节点的处理提醒消息,该处理提醒消息可以是提示该流程节点执行异常,也可以提醒异常并转换为人工处理。
134.进一步的,当目标流程节点的累计执行失败次数大于最大允许执行次数、且目标流程节点为非关键节点时,跳过该非关键节点并将本流程实例中的下一个流程节点作为目标流程节点执行。
135.再进一步的,当执行结果为失败,但是累计执行失败次数小于最大允许执行次数时,无论目标流程节点为关键节点或非关键节点,调整更新目标流程节点对应的流程实例的下一次调度执行时间。可选的,调整方式可以为根据调度执行系统的当前时间、调度执行系统的设定重试时间间隔和累计执行失败次数计算得出下一次调度执行时间。示例性的,计算过程可以为累计执行失败次数与设定重试时间间隔相乘,再加上当前时间,得到下一次调度执行时间。
136.本实施例中,通过对出现异常情况流程节点执行失败时,通过对流程节点失败重试的优化,对关键节点的处理提醒,能够做到流程节点执行重试时不过于繁琐,也不错过关键节点的处理。
137.以下以图8和图9为例,结合本技术的具体实现方式进行举例说明。
138.本技术的流程调度执行之前,还可以根据各个流程实例所需完成的任务的不同配置流程实例。如图8所示,图8为一个流程实例配置页面。流程实例配置时,先建立流程实例模板,在模板内设置流程实例模板名称和流程实例是否使用。然后对流程实例模板内的流程节点进行配置,主要包括流程节点名称、流程节点是否启用的开关,流程节点的属性特征配置。其中,流程节点之间可以调换顺序,更改流程节点的执行顺序;还可以通过开关对流程节点的是否启用进行控制,被关闭的流程节点在流程实例调度时不会被执行。
139.其中,流程节点的属性特征配置包括流程节点的逻辑处理的实现方式,例如java bean(实现统一接口的java类统一管理)、流程节点的服务时间段、流程节点的准入执行条件(即满足规则条件时节点才被调度执行,规则支持mvel或者spel表达式)、是否关键节点等。示例性的,节点准入条件配置举例如下:第一个例子,当前有一个###查询流程节点必须满足年龄大于30岁且小于55岁时才执行,则准入执行条件可配置为:age》30&&age《55(age为调度执行系统计算的年龄因子变量),当任务信息中的年龄满足该条件时,才执行###查询流程节点,否则跳过该流程节点。第二个例子,当前有一个需要配置户籍为a省且学历为本科的才执行***数据查询流程节点,则可配置如下表达式(使用mvel表达式):household==“a省”&&edulevel==“本科”。其中household为户籍因子变量,edulevel为学历因子变量,当任务信息的户籍和学历满足该条件时,才执行***查询流程节点,否则跳过该流程节点。
140.在本实施例中,简化了流程实例和流程节点的配置过程,提供了可视化界面用于
配置,并且属性特征多种可选,流程节点之间可以由工作人员手动调节执行顺序,并且支持各种调度方式,可以满足不同应用场合的需求。模板配置可以便捷重复使用,开发维护成本较低,提高了业务流程开发维护效率。
141.在一个实施例中,流程节点执行的流程如图9所示。
142.配置好流程实例模板后,在使用时在流程实例模板中填入流程实例所需完成的任务信息,多个流程实例生成流程实例表。获取流程实例表中的各流程实例,从流程实例表的当前可调度的流程实例中,确定每一流程实例各自的调度执行时间和状态指标。在当前时间大于或等于流程实例的调度执行时间、且流程实例的状态指标符合状态指标条件时,将流程实例确定为当前可调度的流程实例。按照当前可调度的流程实例的调度优先级,对当前可调度的流程实例中的至少两个目标流程实例进行调度。
143.针对调度中的目标流程实例,对当前调度的目标流程实例进行流程节点遍历,确定当前待执行的目标流程节点。
144.首先判断该目标流程节点是否满足准入执行条件,在目标流程节点不符合准入执行条件时,将目标流程节点的下一流程节点确定为当前待执行流程节点。
145.然后判断该目标流程节点是否在服务时间段,在当前时间不处于目标流程节点的服务时间段时,更新目标流程节点所在的目标流程实例的调度执行时间,并将目标流程实例挂起等待,本次调度结束。只有在当前时间处于目标流程节点的服务时间段内,且目标流程节点符合准入执行条件时,执行目标流程节点。
146.在流程节点执行过程中,判断不同目标流程实例中当前执行的流程节点之间是否触发并发冲突。如果没有触发并发冲突,那么正常执行该流程节点;如果不同目标流程实例中当前执行的流程节点之间所需的资源相同时,触发二进制指数退避算法,根据二进制指数退避算法生成一个退避延时队列,退避延时队列为包括0到重试次数阈值的二次方减一的正整数队列,从退避延时队列中随机选取一个数值,基于退避延时队列中随机选取的数值,与设定重试时间间隔相乘,得到退避延时时间,将退避延时时间与调度执行系统的当前时间相加,得到并发冲突算法处理后的调度执行时间。根据调节后的调度执行时间,执行未占用到资源的流程节点。
147.如果流程节点执行成功,则执行下一个流程节点,如果执行失败,则确定目标流程节点的累计执行失败次数,判断累计执行失败次数是否超过最大允许执行次数。若累计执行失败次数小于最大允许执行次数时,无论目标流程节点为关键节点或非关键节点,将累计执行失败次数与设定重试时间间隔相乘,再加上当前时间,得到下一次调度执行时间。
148.若目标流程节点的累计执行失败次数大于最大允许执行次数,判断是否为关键节点。若目标流程节点为非关键节点时,跳过该非关键节点并将本流程实例中的下一个流程节点作为目标流程节点执行。目标流程节点为关键节点时,发送针对目标流程节点的处理提醒消息,提醒人工处理。
149.此时本次目标流程节点的执行结束。在当前调度的目标流程实例中各流程节点执行结束时,从流程实例表中重新调度新的流程实例执行流程节点,直至流程实例表中各流程实例调度结束。
150.本实施例中,通过对流程实例表中的流程实例进行调度执行时间和状态指标筛选,得到各个当前可调度的流程实例,再根据当前可调度的流程实例的调度优先级对流程
实例进行调度,准确调度当前可执行的流程实例,根据各个流程节点的服务时间段和准入执行条件确定当前待执行的目标流程节点,再执行流程实例中的流程节点,对出现异常情况流程节点执行失败重试优化,对关键节点的处理提醒转入人工处理,并在流程实例间的流程节点发生并发冲突时,采用二进制指数退避算法计算下一次调度执行时间,缓解节点调度资源受限并发冲突问题,调节流程节点的执行顺序,能够实现对多流程实例同时调度,对多流程节点有序处理。
151.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
152.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的流程调度执行方法的流程调度执行装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个流程调度执行装置实施例中的具体限定可以参见上文中对于流程调度执行方法的限定,在此不再赘述。
153.在一个实施例中,如图10所示,提供了一种流程调度执行装置,包括:流程实例调度模块1002、节点执行模块1004、并发冲突处理模块1006和遍历执行模块1008,其中:
154.流程实例调度模块1002,用于获取流程实例表中的各流程实例,从流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例。
155.节点执行模块1004,用于针对当前调度的每一个目标流程实例,顺序执行目标流程实例中的各个流程节点。
156.并发冲突处理模块1006,用于当不同目标流程实例中当前执行的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序。
157.遍历执行模块1008,用于在当前调度的目标流程实例中各流程节点执行结束时,从流程实例表中重新调度新的流程实例执行流程节点,直至流程实例表中各流程实例调度结束。
158.在一个实施例中,并发冲突处理模块1006用于当执行不同目标流程实例各自的流程节点所需的资源相同时,触发并发冲突算法;基于并发冲突算法,对未占用到资源的流程节点进行调度执行时间调节;根据调节后的调度执行时间,执行未占用到资源的流程节点。
159.在一个实施例中,并发冲突处理模块1006用于获取退避延时队列,退避延时队列中的最大值与流程节点的最大允许执行次数正相关;根据从退避延时队列中随机选取的数值,确定退避延时时间;基于退避延时时间,调节对未占用到资源的流程节点的调度执行时间。
160.在一个实施例中,流程实例调度模块1002用于获取流程实例表中各流程实例,确定每一流程实例各自的调度执行时间和状态指标;在当前时间大于或等于流程实例的调度执行时间、且流程实例的状态指标符合状态指标条件时,将流程实例确定为当前可调度的流程实例;按照当前可调度的流程实例的调度优先级,对当前可调度的流程实例中的至少
两个目标流程实例进行调度。
161.在一个实施例中,节点执行模块1004用于对当前调度的目标流程实例进行流程节点遍历,确定当前待执行的目标流程节点;在当前时间处于目标流程节点的服务时间段内,且目标流程节点符合准入执行条件时,执行目标流程节点;在当前时间不处于目标流程节点的服务时间段时,更新目标流程节点所在的目标流程实例的调度执行时间,并将目标流程实例挂起;在目标流程节点不符合准入执行条件时,将目标流程节点的下一流程节点确定为当前待执行流程节点,直至遍历结束。
162.在一个实施例中,节点执行模块1004用于获取目标流程节点的执行结果;当执行结果为执行失败时,确定目标流程节点的累计执行失败次数;当累计执行失败次数大于最大允许执行次数、且目标流程节点为关键节点时,发送针对目标流程节点的处理提醒消息。
163.上述流程调度执行装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
164.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图11所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、移动蜂窝网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种流程调度执行方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
165.本领域技术人员可以理解,图11中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
166.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
167.获取流程实例表中的各流程实例,从流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例;针对当前调度的每一个目标流程实例,顺序执行目标流程实例中的各个流程节点;当不同目标流程实例中当前执行的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序;在当前调度的目标流程实例中各流程节点执行结束时,从流程实例表中重新调度新的流程实例执行流程节点,直至流程实例表中各流程实例调度结束。
168.在一个实施例中,处理器执行计算机程序时还实现以下步骤:当执行不同目标流程实例各自的流程节点所需的资源相同时,触发并发冲突算法;基于并发冲突算法,对未占
用到资源的流程节点进行调度执行时间调节;根据调节后的调度执行时间,执行未占用到资源的流程节点。
169.在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取退避延时队列,退避延时队列中的最大值与流程节点的最大允许执行次数正相关;根据从退避延时队列中随机选取的数值,确定退避延时时间;基于退避延时时间,调节对未占用到资源的流程节点的调度执行时间。
170.在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取流程实例表中各流程实例,确定每一流程实例各自的调度执行时间和状态指标;在当前时间大于或等于流程实例的调度执行时间、且流程实例的状态指标符合状态指标条件时,将流程实例确定为当前可调度的流程实例;按照当前可调度的流程实例的调度优先级,对当前可调度的流程实例中的至少两个目标流程实例进行调度。
171.在一个实施例中,处理器执行计算机程序时还实现以下步骤:对当前调度的目标流程实例进行流程节点遍历,确定当前待执行的目标流程节点;在当前时间处于目标流程节点的服务时间段内,且目标流程节点符合准入执行条件时,执行目标流程节点;在当前时间不处于目标流程节点的服务时间段时,更新目标流程节点所在的目标流程实例的调度执行时间,并将目标流程实例挂起;在目标流程节点不符合准入执行条件时,将目标流程节点的下一流程节点确定为当前待执行流程节点,直至遍历结束。
172.在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取目标流程节点的执行结果;当执行结果为执行失败时,确定目标流程节点的累计执行失败次数;当累计执行失败次数大于最大允许执行次数、且目标流程节点为关键节点时,发送针对目标流程节点的处理提醒消息。
173.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
174.获取流程实例表中的各流程实例,从流程实例表的当前可调度的流程实例中,调度至少两个目标流程实例;针对当前调度的每一个目标流程实例,顺序执行目标流程实例中的各个流程节点;当不同目标流程实例中当前执行的流程节点之间存在并发冲突时,调节存在并发冲突的各流程节点的执行顺序;在当前调度的目标流程实例中各流程节点执行结束时,从流程实例表中重新调度新的流程实例执行流程节点,直至流程实例表中各流程实例调度结束。
175.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当执行不同目标流程实例各自的流程节点所需的资源相同时,触发并发冲突算法;基于并发冲突算法,对未占用到资源的流程节点进行调度执行时间调节;根据调节后的调度执行时间,执行未占用到资源的流程节点。
176.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取退避延时队列,退避延时队列中的最大值与流程节点的最大允许执行次数正相关;根据从退避延时队列中随机选取的数值,确定退避延时时间;基于退避延时时间,调节对未占用到资源的流程节点的调度执行时间。
177.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取流程实例表中各流程实例,确定每一流程实例各自的调度执行时间和状态指标;在当前时间大于或等
于流程实例的调度执行时间、且流程实例的状态指标符合状态指标条件时,将流程实例确定为当前可调度的流程实例;按照当前可调度的流程实例的调度优先级,对当前可调度的流程实例中的至少两个目标流程实例进行调度。
178.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对当前调度的目标流程实例进行流程节点遍历,确定当前待执行的目标流程节点;在当前时间处于目标流程节点的服务时间段内,且目标流程节点符合准入执行条件时,执行目标流程节点;在当前时间不处于目标流程节点的服务时间段时,更新目标流程节点所在的目标流程实例的调度执行时间,并将目标流程实例挂起;在目标流程节点不符合准入执行条件时,将目标流程节点的下一流程节点确定为当前待执行流程节点,直至遍历结束。
179.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取目标流程节点的执行结果;当执行结果为执行失败时,确定目标流程节点的累计执行失败次数;当累计执行失败次数大于最大允许执行次数、且目标流程节点为关键节点时,发送针对目标流程节点的处理提醒消息。
180.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
181.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
182.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
183.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1