一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于有向无环图业务流程恢复的方法及装置与流程

2022-04-09 08:50:14 来源:中国专利 TAG:


1.本发明涉及金融科技(fintech)领域,尤其涉及一种基于有向无环图业务流程恢复的方法及装置。


背景技术:

2.随着计算机技术的发展,越来越多的技术(例如:区块链、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,大数据技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对大数据技术中异常业务流程的恢复提出了更高的要求。
3.现有技术中,一个业务流程中包括多个步骤;在业务流程执行时,按照步骤的顺序依次执行步骤,从而完成业务流程。
4.但是,在业务流程执行过程中,存在某一步骤执行异常导致的业务流程执行失败的异常情况;针对该异常情况,需要重新执行业务流程。
5.然而再重新执行业务流程时,无法直接在出现异常的步骤重新执行,导致已完成的步骤重复执行,降低了业务流程的执行效率。


技术实现要素:

6.本发明实施例提供一种基于有向无环图业务流程恢复的方法及装置,用于确定出步骤在业务流程中的顺序,以提升对步骤的管理能力,提升业务流程的执行效率。
7.第一方面,本发明实施例提供一种基于有向无环图业务流程恢复的方法,包括:
8.在业务流程异常时,确定异常步骤;
9.将所述业务流程中与所述异常步骤的深度信息相同的步骤确定为待重新执行步骤;其中,各步骤的深度信息是根据各步骤在依据所述业务流程构建的有向无环图中的位置确定的;所述有向无环图是以所述业务流程的各步骤为节点,所述各步骤之间的执行依赖关系为有向边建立的;
10.针对任一待重新执行步骤,根据所述待重新执行步骤的步骤记录生成所述待重新执行步骤的执行上下文实例;所述待重新执行步骤的步骤记录是在所述待重新执行步骤第一次执行时创建的,用于存储所述待重新执行步骤在执行时所需要的数据信息;
11.通过所述待重新执行步骤的执行上下文实例对所述业务流程进行恢复执行处理。
12.现有技术中,业务流程一般包括并列执行的步骤,无法确定出步骤在业务流程中的具体执行顺序;本发明通过各步骤的深度信息确定各步骤在业务流程中的执行顺序;从而提升对业务流程中各步骤的管理能力,进而实现了根据异常步骤的深度信息确定待重新执行步骤;也就是说,在业务流程出现异常时,无需重新执行业务流程中的全部步骤,只需跳转至的待重新执行步骤进行执行即可,以此提升了业务流程的执行效率。
13.可选的,所述各步骤的深度信息是根据各步骤在有向无环图中的位置确定的,包括:
14.针对所述有向无环图中的任一节点,确定所述节点的入边邻接节点;所述入边邻
接节点为有向边指向所述节点的节点;
15.按照预设的深度信息设置机制,确定各入边邻接节点的深度信息中的最值;
16.按照所述深度信息设置机制,根据所述最值确定所述节点的深度信息。
17.上述技术方案中,针对于存在多个入边邻接节点的节点,该节点的深度信息为多个,为了保证步骤顺序的正确性,以最值在多个深度信息中确定该节点的深度信息,以此提升确定业务流程中各步骤的执行顺序准确性。
18.可选的,所述各步骤的深度信息是根据各步骤在有向无环图中的位置确定的,包括:
19.按照所述有向无环图中有向边指向的方向,依次将第i节点、第i 1节点置于队列中;所述第i节点的有向边指向所述第i 1节点;
20.针对所述队列中位于队首的第m节点,确定所述第m节点的各入边邻接节点;若各入边邻接节点的深度信息已确认,则根据各入边邻接节点的深度信息中的最值,按照预设的深度信息设置机制,确定所述第m节点的深度信息;若存在至少一个入边邻接节点的深度信息未知,则将所述第m节点置于所述队列的队尾;直至所述队列中各节点的深度信息均确定完毕。
21.上述技术方案中,在确定至少一个第m节点的入边邻接节点的深度信息未知时,再次将第m节点置于所述队列的队尾,直至第m节点的所有入边邻接节点的深度信息确定,再根据最值确定第m节点的深度信息,以此保证第m节点对应的步骤的在业务流程的执行顺序上的正确性。
22.可选的,所述深度信息设置机制为第i节点的深度信息低于第i 1节点的深度信息;所述第i节点的有向边指向所述第i 1节点;所述最值为各入边邻接节点的深度信息中的最大值;或所述深度信息设置机制为第i节点的深度信息高于第i 1节点的深度信息;所述第i节点的有向边指向所述第i 1节点;所述最值为各入边邻接节点的深度信息中的最小值。
23.上述技术方案中,针对各节点的深度信息计算,可以通过逐渐增加或逐渐减小的方式进行计算,以增加对节点的深度信息计算的灵活性。
24.可选的,若各入边邻接节点的深度信息已确认,则根据各入边邻接节点的深度信息中的最值,按照预设的深度信息设置机制,确定所述第m节点的深度信息,包括:
25.针对所述第m节点的任一入边邻接节点,确定出所述入边邻接节点的各出边邻接节点;所述各出边邻接节点包括所述第m节点;
26.根据所述入边邻接节点的深度信息中的最值,按照预设的深度信息设置机制,确定出所述各出边邻接节点的深度信息。
27.上述技术方案中,根据多个第m节点的入边邻接节点的深度信息,确定出第m节点的多个深度信息,从而在多个深度信息确定出第m节点的深度信息的最值,以最值来保证第m节点在业务流程的执行顺序上的正确性。
28.可选的,所述有向无环图通过如下方式生成,包括:
29.针对实例列表中任一业务流程对应的实例,根据所述实例的业务流程分类和业务流程名称,确定是否具有所述实例的有向无环图;若没有,则根据所述实例中的各步骤及各步骤的依赖关系,建立所述实例的有向无环图。
30.上述技术方案中,通过业务流程分类和业务流程名称保证各步骤所属同一个业务流程,确保业务流程的准确性;通过有向无环图增加对各步骤的依赖关系的直观性。
31.可选的,根据所述待重新执行步骤的步骤记录生成所述待重新执行步骤的执行上下文实例,包括:
32.根据所述待重新执行步骤的唯一标识获取所述待重新执行步骤的步骤记录和所述待重新执行步骤的异常处理类型;所述步骤记录用于记录步骤的唯一标识、步骤执行状态、步骤元信息和步骤执行结果;所述步骤元信息包括所述步骤在执行时所需要的数据信息;
33.根据所述待重新执行步骤的步骤元信息和异常处理类型生成所述待重新执行步骤的执行上下文实例。
34.上述技术方案中,通过待重新执行步骤的执行上下文实例实现对异常步骤的恢复,从而恢复业务流程的执行,提升业务流程的执行效率。
35.可选的,通过所述待重新执行步骤的执行上下文实例对所述业务流程进行恢复执行处理,包括:
36.在所述待重新执行步骤的异常处理类型为跳过时,确定所述待重新执行步骤是否为异常步骤;若是,则将所述异常步骤跳过,恢复业务流程执行;
37.否则重新执行所述待重新执行步骤。
38.上述技术方案中,通过确定待重新执行步骤为异常步骤后,跳过异常步骤,从而恢复业务流程执行,提升业务流程的执行效率;通过确定待重新执行步骤为非异常步骤后,重新执行待重新执行步骤,保证业务流程出现异常时重新执行业务流程的准确性。
39.第二方面,本发明实施例提供一种基于有向无环图业务流程恢复的装置,包括:
40.确定模块,用于在业务流程异常时,确定异常步骤;
41.处理模块,用于将所述业务流程中与所述异常步骤的深度信息相同的步骤确定为待重新执行步骤;其中,各步骤的深度信息是根据各步骤在依据所述业务流程构建的有向无环图中的位置确定的;所述有向无环图是以所述业务流程的各步骤为节点,所述各步骤之间的执行依赖关系为有向边建立的;
42.针对任一待重新执行步骤,根据所述待重新执行步骤的步骤记录生成所述待重新执行步骤的执行上下文实例;所述待重新执行步骤的步骤记录是在所述待重新执行步骤第一次执行时创建的,用于存储所述待重新执行步骤在执行时所需要的数据信息;
43.通过所述待重新执行步骤的执行上下文实例对所述业务流程进行恢复执行处理。
44.可选的,所述处理模块具体用于:
45.针对所述有向无环图中的任一节点,确定所述节点的入边邻接节点;所述入边邻接节点为有向边指向所述节点的节点;
46.按照预设的深度信息设置机制,确定各入边邻接节点的深度信息中的最值;
47.按照所述深度信息设置机制,根据所述最值确定所述节点的深度信息。
48.可选的,所述处理模块具体用于:
49.按照所述有向无环图中有向边指向的方向,依次将第i节点、第i 1节点置于队列中;所述第i节点的有向边指向所述第i 1节点;
50.针对所述队列中位于队首的第m节点,确定所述第m节点的各入边邻接节点;若各
入边邻接节点的深度信息已确认,则根据各入边邻接节点的深度信息中的最值,按照预设的深度信息设置机制,确定所述第m节点的深度信息;若存在至少一个入边邻接节点的深度信息未知,则将所述第m节点置于所述队列的队尾;直至所述队列中各节点的深度信息均确定完毕。
51.可选的,所述深度信息设置机制为第i节点的深度信息低于第i 1节点的深度信息;所述第i节点的有向边指向所述第i 1节点;所述最值为各入边邻接节点的深度信息中的最大值;或所述深度信息设置机制为第i节点的深度信息高于第i 1节点的深度信息;所述第i节点的有向边指向所述第i 1节点;所述最值为各入边邻接节点的深度信息中的最小值。
52.可选的,所述处理模块具体用于:
53.针对所述第m节点的任一入边邻接节点,确定出所述入边邻接节点的各出边邻接节点;所述各出边邻接节点包括所述第m节点;
54.根据所述入边邻接节点的深度信息中的最值,按照预设的深度信息设置机制,确定出所述各出边邻接节点的深度信息。
55.可选的,所述处理模块具体用于:
56.针对实例列表中任一业务流程对应的实例,根据所述实例的业务流程分类和业务流程名称,确定是否具有所述实例的有向无环图;若没有,则根据所述实例中的各步骤及各步骤的依赖关系,建立所述实例的有向无环图。
57.可选的,所述处理模块具体用于:
58.根据所述待重新执行步骤的唯一标识获取所述待重新执行步骤的步骤记录和所述待重新执行步骤的异常处理类型;所述步骤记录用于记录步骤的唯一标识、步骤执行状态、步骤元信息和步骤执行结果;所述步骤元信息包括所述步骤在执行时所需要的数据信息;
59.根据所述待重新执行步骤的步骤元信息和异常处理类型生成所述待重新执行步骤的执行上下文实例。
60.可选的,所述处理模块具体用于:
61.在所述待重新执行步骤的异常处理类型为跳过时,确定所述待重新执行步骤是否为异常步骤;若是,则将所述异常步骤跳过,恢复业务流程执行;
62.否则重新执行所述待重新执行步骤。
63.第三方面,本发明实施例还提供一种计算机设备,包括:
64.存储器,用于存储程序指令;
65.处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述基于有向无环图业务流程恢复的方法。
66.第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述基于有向无环图业务流程恢复的方法。
附图说明
67.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使
用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
68.图1为本发明实施例提供的一种基于有向无环图业务流程恢复的方法的流程示意图;
69.图2为本发明实施例提供的一种的流程示意图;
70.图3为本发明实施例提供的一种有向无环图的示意图;
71.图4为本发明实施例提供的一种更新后的有向无环图的示意图;
72.图5为本发明实施例提供的一种基于有向无环图业务流程恢复的装置的结构示意图。
具体实施方式
73.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
74.现有业务流程中,业务流程大多存在并行的技术方案;具体的,通过有向无环图表征各流程步骤;其中,有向无环图中的各节点表征每个各流程步骤,有向无环图中的任一有向边表征该有向边对应的两节点之间的依赖关系,例如节点b和节点d均依赖于节点a,则确定b和d两个流程步骤是并行执行的流程步骤,以此减少业务流程的执行耗时。通过有向无环图避免通过同步工具类确定需要同步执行的流程步骤,减少代码的输入。但无法确定b步骤和d步骤的执行顺序,因此无法通过在业务流程异常时,直接对各步骤实现异常步骤恢复。
75.因此,现需要一种针对存在并行执行步骤的业务流程,确定各步骤的执行顺序,以此提升对步骤的管理能力,提升业务流程的执行效率。
76.图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构包括服务器100,该服务器100可以包括处理器110、通信接口120和存储器130。
77.其中,通信接口120用于根据对应的接口从存储容器中获取业务流程的步骤列表。
78.处理器110是服务器100的控制中心,利用各种接口和路线连接整个服务器100的各个部分,通过运行或执行存储在存储器130内的软件程序/或模块,以及调用存储在存储器130内的数据,执行服务器100的各种功能和处理数据。可选地,处理器110可以包括一个或多个处理单元。
79.存储器130可用于存储软件程序以及模块,处理器110通过运行存储在存储器130的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据业务处理所创建的数据等。此外,存储器130可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
80.需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
81.基于上述描述,图2示例性的示出了本发明实施例提供的一种基于有向无环图业务流程恢复的方法的流程示意图,该流程可由基于有向无环图业务流程恢复的装置执行。
82.如图2所示,该流程具体包括:
83.步骤210,在业务流程异常时,确定异常步骤。
84.本发明实施例中,各步骤包括步骤的唯一标识,因此可以通过步骤的唯一标识确定异常步骤。
85.步骤220,将所述业务流程中与所述异常步骤的深度信息相同的步骤确定为待重新执行步骤。
86.本发明实施例中,各步骤的深度信息是根据各步骤在依据所述业务流程构建的有向无环图中的位置确定的;所述有向无环图是以所述业务流程的各步骤为节点,所述各步骤之间的执行依赖关系为有向边建立的。
87.步骤230,针对任一待重新执行步骤,根据所述待重新执行步骤的步骤记录生成所述待重新执行步骤的执行上下文实例。
88.本发明实施例中,所述待重新执行步骤的步骤记录是在所述待重新执行步骤第一次执行时创建的,用于存储所述待重新执行步骤在执行时所需要的数据信息。
89.步骤240,通过所述待重新执行步骤的执行上下文实例对所述业务流程进行恢复执行处理。
90.本发明实施例中,待重新执行步骤的执行上下文实例是通过待重新执行步骤在执行时所需要的数据信息和预设的异常处理类型生成的,通过异常处理类型实现对异常步骤的恢复或跳过,从而实现业务流程的执行恢复。
91.在步骤220中,通过在存储容器中获取业务流程的步骤列表,确定有向无环图,从而实现通过有向无环图确定各步骤的深度信息。
92.具体的,针对实例列表中任一业务流程对应的实例,根据实例的业务流程分类和业务流程名称,确定是否具有实例的有向无环图;若没有,则根据实例中的各步骤及各步骤的依赖关系,建立实例的有向无环图。
93.举例来说,在存储容器中存储有业务流程对应的二元键值map数据结构,根据对应接口可以在存储容器中获取以二元键值map数据结构存储的业务流程步骤列表。
94.具体的,存储容器中的各步骤包括注解(如@chaincommand),注解表征步骤所属的业务流程,且步骤之间的执行依赖关系,如步骤b所述业务流程q,步骤b依赖于步骤a,即在步骤a执行完成后,才可以执行步骤b。
95.遍历存储容器中的注解列表(如chaincommandannotations),确定出对应注解的步骤,并判断存在执行依赖关系的步骤的注解是否一致,以保证步骤属于同一业务流程,保证数据的准确性。例如,确定步骤b和步骤a的注解是否一致;如下述表1所示。
96.表1
97.步骤被依赖步骤业务流程分类业务流程标识a无defaultdemobadefaultdemocadefaultdemodcdefaultdemo
ebdefaultdemofb、ddefaultdemogcdefaultdemohe、f、gdefaultdemo
98.基于上述表1进行阐述,通过各步骤中注解表征的业务流程分类和业务流程标识,确定出所述该业务流程对应的各步骤,且确定出各步骤之间的依赖关系。
99.图3为本发明实施例示例性示出的一种有向无环图的示意图,如图3所示,节点a对应步骤a,节点b对应步骤b,
……
,节点h对应步骤h,有向边用于表征各节点之间的依赖关系;其中,节点a为首节点,即无所依赖的节点;节点b和节点c依赖于节点a,即节点a为节点b和节点c的入边邻接节点;以此类推,图3示例性的示出了各节点之间的依赖关系和各节点的入边邻接节点,在此不做赘述。
100.在确定出有向无环图之后,根据各节点的入边邻接节点的深度信息,确定各节点的深度信息。
101.具体的,针对有向无环图中的任一节点,确定节点的入边邻接节点;入边邻接节点为有向边指向节点的节点;按照预设的深度信息设置机制,确定各入边邻接节点的深度信息中的最值;按照深度信息设置机制,根据最值确定节点的深度信息。
102.进一步地,按照有向无环图中有向边指向的方向,依次将第i节点、第i 1节点置于队列中;第i节点的有向边指向第i 1节点;针对队列中位于队首的第m节点,确定第m节点的各入边邻接节点;若各入边邻接节点的深度信息已确认,则根据各入边邻接节点的深度信息中的最值,按照预设的深度信息设置机制,确定第m节点的深度信息;若存在至少一个入边邻接节点的深度信息未知,则将第m节点置于队列的队尾;直至队列中各节点的深度信息均确定完毕。
103.其中,深度信息设置机制为第i节点的深度信息低于第i 1节点的深度信息;第i节点的有向边指向第i 1节点;最值为各入边邻接节点的深度信息中的最大值;或深度信息设置机制为第i节点的深度信息高于第i 1节点的深度信息;第i节点的有向边指向第i 1节点;最值为各入边邻接节点的深度信息中的最小值。
104.在本发明实施例中,第m节点入边邻接节点可以为多个,同理,针对第m节点的任一入边邻接节点的出边邻接节点也可以为多个,其中包括第m节点。
105.进一步地,针对第m节点的任一入边邻接节点,确定出入边邻接节点的各出边邻接节点;各出边邻接节点包括所述第m节点;根据入边邻接节点的深度信息中的最值,按照预设的深度信息设置机制,确定出各出边邻接节点的深度信息。
106.将不具有入边邻接节点的节点作为第一节点,将第m节点的入边邻接节点作为第二节点进行举例。具体的,基于有向无环图,确定第一节点,将第一节点的深度信息设置为0,并将第一节点加入至第一队列的队尾;其中,第一节点不具有入边邻接节点;按照第一队列中各第二节点的顺序,将第一队列中处于队首的第二节点出队列;确定第二节点的出边邻接节点(相当于第m节点),根据第二节点的深度信息确定第二节点的出边邻接节点的深度信息;第二节点为第一有向无环图中任一节点;将第二节点的出边邻接节点的深度信息加入深度信息列表,并将第二节点的出边邻接节点加入至第一队列的队尾;将第二节点的出边邻接节点加入至第一队列的队尾之后,将第一队列中处于队首的节点作为第二节点。
107.确定在深度信息列表中第二节点的深度信息数量是否等于第二节点的入度数量;若是,则基于第二节点的深度信息数量中的最值确定第二节点的出边邻接节点的深度信息;若否,则不确定第二节点的出边邻接节点的深度信息,并将第二节点加入至所述第一队列的队尾。
108.在确定第二节点不存在出边邻接节点时,将第一队列中处于队首的节点作为第二节点,直至第一队列中不存在任一第二节点;根据各节点的深度信息对有向无环图进行更新;根据更新后的有向无环图中各节点的是深度信息确定各节点对应的各步骤的深度信息。
109.基于上述表1和图3,按照第i节点的深度信息低于第i 1节点的深度信息设置机制进行举例,流程如下:
110.s1、将不具有入边邻接节点的节点(即节点a)深度信息设置为(from=null,depth=0),其中,“from”表征节点的入边邻接节点,“depth”表征深度预设值,也可以是1等,在此不做具体限定,然后将节点a的深度信息(from=null,depth=0)存储至深度信息列表,并将节点a加入至第一队列的队尾。
111.s2、基于节点a的深度信息,确定节点a的出边邻接节点(即节点b和节点c,也就是说节点b和节点c为第m 1节点)的深度信息;节点b的深度信息为(from=a,depth=1),并将节点b的深度信息(from=a,depth=1)存储至深度信息列表,然后将节点b加入第一队列的队尾;节点c的深度信息为(from=a,depth=1),并将节点c的深度信息(from=a,depth=1)存储至深度信息列表,然后将节点c加入第一队列的队尾。
112.s3、节点a在第一队列出队后,节点b作为第一队列中的队首,基于节点b的深度信息,确定节点b的出边邻接节点(即节点e和节点f)的深度信息;节点e的深度信息为(from=b,depth=2),并将节点e的深度信息(from=b,depth=2)存储至深度信息列表,然后将节点e加入第一队列的队尾;节点f的深度信息为(from=b,depth=2),并将节点f的深度信息(from=b,depth=2)存储至深度信息列表,然后将节点f加入第一队列的队尾。
113.s4、此时,第一队列中的节点依次为节点c、节点e和节点f;节点c作为第一队列中的队首,基于节点c的深度信息,确定节点c的出边邻接节点(即节点d和节点g)的深度信息;节点d的深度信息为(from=c,depth=2),并将节点d的深度信息(from=c,depth=2)存储至深度信息列表,然后将节点d加入第一队列的队尾;节点g的深度信息为(from=c,depth=2),并将节点g的深度信息(from=c,depth=2)存储至深度信息列表,然后将节点g加入第一队列的队尾。
114.s5、此时,第一队列中的节点依次为节点e、节点f、节点d和节点g;节点e作为第一队列中的队首,基于节点e的深度信息,确定节点e的出边邻接节点(即节点h)的深度信息;节点h的深度信息为(from=e,depth=3),并将节点h的深度信息(from=e,depth=3)存储至深度信息列表,然后将节点h加入第一队列的队尾;在一种可实施的方式中,因为节点h不存在出边邻接节点,因此可以不将节点h加入第一队列的队尾。
115.s6、此时,第一队列中的节点依次为节点f、节点d、节点g和节点h;节点f作为第一队列中的队首,基于节点f的深度信息,确定节点f的出边邻接节点(即节点h)的深度信息;但是,节点f的另一深度信息还未确定(即节点f基于节点d的深度信息),因此,无法确定出节点h基于节点f的深度信息,然后将节点f再次加入第一队列的队尾。
116.s7、此时,第一队列中的节点依次为节点d、节点g、节点h和节点f;节点d作为第一队列中的队首,基于节点d的深度信息,确定节点d的出边邻接节点(即节点f)的深度信息;节点f的深度信息为(from=d,depth=3),并将节点f的深度信息(from=d,depth=3)存储至深度信息列表,因为步骤s6中已经重新将节点f再次加入第一队列的队尾,因此不需要重复将节点f再次加入第一队列的队尾。
117.s7、此时,第一队列中的节点依次为节点g、节点h和节点f;节点g作为第一队列中的队首,基于节点g的深度信息,确定节点g的出边邻接节点(即节点h)的深度信息;节点h的深度信息为(from=g,depth=3),并将节点h的深度信息(from=g,depth=3)存储至深度信息列表;因为节点h不存在出边邻接节点,因此可以不将节点h加入第一队列的队尾。
118.s8、此时,第一队列中的节点依次为节点h和节点f;节点h作为第一队列中的队首,确定节点h的不具有出边邻接节点,放弃该节点,确定下一节点的深度信息。
119.s9、此时,第一队列中的节点仅包括为节点f;节点f作为第一队列中的队首,基于节点f的深度信息,确定节点f的出边邻接节点(即节点h)的深度信息;因为上述深度信息设置机制,确定节点f的深度信息为(from=d,depth=3),因此节点h的深度信息为(from=f,depth=4),并将节点h的深度信息(from=f,depth=4)存储至深度信息列表。
120.基于上述流程,确定出如下述表2所示的深度信息列表。
121.表2
122.序号节点入边邻接节点深度1anull(无)02ba13ca14eb25fb26dc27gc28he39fd310hg311hf4
123.基于上述表2,对图3所示的有向无环图进行更新;图4示例性的示出了一种更新后的有向无环图的示意图,如图4所示,各节点包括至少一个深度信息;基于图4所示的更新后的有向无环图,对深度信息列表进行更新,基于各节点的深度信息,按照预设顺序进行排序,得到更新后的深度信息列表;如下述表3所示。
124.表3
[0125][0126][0127]
表3示出了各节点表征的各步骤在业务流程中的执行顺序,如步骤a的执行顺序为0,步骤b和步骤c的执行顺序为1,以此类推,在此不做赘述。
[0128]
在业务流程发生异常时,可以通过以下两种方式确定待重新执行步骤:
[0129]
1、按照深度信息,依次确定各步骤的深度信息与异常步骤的深度信息的大小,如步骤a的深度信息小于异常步骤(如步骤d)的深度信息,则跳过步骤a,判断下一步骤,直至确定出与异常步骤的深度信息相同的步骤(即步骤e和步骤g),并将步骤确定为待重新执行步骤。
[0130]
2、直接基于异常步骤(步骤d)的深度信息,确定与异常步骤的深度信息相同的步骤(即步骤e和步骤g),并将步骤确定为待重新执行步骤。
[0131]
在步骤230中,各步骤的执行上下文实例用于包括各步骤执行时所需要的数据信息,以此实现各步骤的恢复。
[0132]
具体的,根据待重新执行步骤的唯一标识获取待重新执行步骤的步骤记录和待重新执行步骤的异常处理类型;步骤记录用于记录步骤的唯一标识、步骤执行状态、步骤元信息和步骤执行结果;步骤元信息包括步骤在执行时所需要的数据信息;根据待重新执行步骤的步骤元信息和异常处理类型生成待重新执行步骤的执行上下文实例。
[0133]
本发明实施例中,各步骤的步骤记录是在步骤首次执行时创建的,举例来说,步骤a执行时,创建步骤a的步骤记录,其中包括步骤a的唯一标识、步骤执行状态(已完成、执行中、执行失败等)、步骤元信息(如步骤名称等)和执行结果描述(如在未执行完成时,设有初始值且初始值为空,在执行完成时,记录步骤a执行完成后的执行结果)。
[0134]
进一步举例,步骤a执行时,将步骤a在执行时所需要的基础数据信息持久化至步骤a的步骤元信息;将步骤a步骤执行状态持久化为执行中;执行步骤a的业务逻辑。
[0135]
在步骤a执行完成后,确定步骤a的执行结果,并将步骤a的执行结果持久化至执行结果描述;将步骤a步骤执行状态持久化为已完成。
[0136]
基于上述描述,各步骤的步骤记录存储在步骤记录列表中,根据待重新执行步骤的唯一标识,在步骤记录列表确定对应的步骤记录,得到待重新执行步骤的步骤元信息,进
而通过待重新执行步骤的步骤元信息和异常处理类型生成待重新执行步骤的执行上下文实例。
[0137]
其中,待重新执行步骤的异常处理类型可以是用户实时设置的,也可以是预先设置于待重新执行步骤的步骤记录中,在此不做具体限定。
[0138]
在步骤240中,执行上下文实例用于对待重新执行步骤进行处理,以实现恢复业务流程执行。
[0139]
具体的,在所述待重新执行步骤的异常处理类型为跳过时,确定所述待重新执行步骤是否为异常步骤;若是,则将所述异常步骤跳过,恢复业务流程执行;否则重新执行所述待重新执行步骤。
[0140]
在本发明实施例中,异常处理类型包括“重新执行”和“跳过”,用于针对不同的应用场景。
[0141]
举例来说,在一种可实施的方式中,基于待重新执行步骤的执行上下文实例,无法确定出待重新执行步骤的步骤记录(如该步骤在业务流程中删除),从而对业务流程中的下一步骤进行处理,如创建下一步骤的步骤记录。
[0142]
在另一种可实施的方式中,基于待重新执行步骤的执行上下文实例,确定出待重新执行步骤的步骤记录,并确定待重新执行步骤的步骤记录中的步骤执行状态是否为已完成,若是,则处理下一待重新执行步骤;否则判断该待重新执行步骤是否为异常步骤。
[0143]
若该待重新执行步骤为非异常步骤,则基于该待重新执行步骤的执行上下文实例重新执行该待重新执行步骤;
[0144]
若该待重新执行步骤为异常步骤,则基于该待重新执行步骤的执行上下文实例,确定该待重新执行步骤的异常处理类型为跳过时,跳过该步骤,处理下一步骤,以此实现业务流程的继续执行,不会再因为步骤异常导致业务流程停止,提升了业务流程的执行效率。
[0145]
基于相同的技术构思,图5示例性的示出了本发明实施例提供的一种基于有向无环图业务流程恢复的装置的结构示意图,该装置可以执行基于有向无环图业务流程恢复的方法。
[0146]
如图5所示,该装置具体包括:
[0147]
确定模块510,用于在业务流程异常时,确定异常步骤;
[0148]
处理模块520,用于将所述业务流程中与所述异常步骤的深度信息相同的步骤确定为待重新执行步骤;其中,各步骤的深度信息是根据各步骤在依据所述业务流程构建的有向无环图中的位置确定的;所述有向无环图是以所述业务流程的各步骤为节点,所述各步骤之间的执行依赖关系为有向边建立的;
[0149]
针对任一待重新执行步骤,根据所述待重新执行步骤的步骤记录生成所述待重新执行步骤的执行上下文实例;所述待重新执行步骤的步骤记录是在所述待重新执行步骤第一次执行时创建的,用于存储所述待重新执行步骤在执行时所需要的数据信息;
[0150]
通过所述待重新执行步骤的执行上下文实例对所述业务流程进行恢复执行处理。
[0151]
可选的,所述处理模块520具体用于:
[0152]
针对所述有向无环图中的任一节点,确定所述节点的入边邻接节点;所述入边邻接节点为有向边指向所述节点的节点;
[0153]
按照预设的深度信息设置机制,确定各入边邻接节点的深度信息中的最值;
[0154]
按照所述深度信息设置机制,根据所述最值确定所述节点的深度信息。
[0155]
可选的,所述处理模块520具体用于:
[0156]
按照所述有向无环图中有向边指向的方向,依次将第i节点、第i 1节点置于队列中;所述第i节点的有向边指向所述第i 1节点;
[0157]
针对所述队列中位于队首的第m节点,确定所述第m节点的各入边邻接节点;若各入边邻接节点的深度信息已确认,则根据各入边邻接节点的深度信息中的最值,按照预设的深度信息设置机制,确定所述第m节点的深度信息;若存在至少一个入边邻接节点的深度信息未知,则将所述第m节点置于所述队列的队尾;直至所述队列中各节点的深度信息均确定完毕。
[0158]
可选的,所述深度信息设置机制为第i节点的深度信息低于第i 1节点的深度信息;所述第i节点的有向边指向所述第i 1节点;所述最值为各入边邻接节点的深度信息中的最大值;或所述深度信息设置机制为第i节点的深度信息高于第i 1节点的深度信息;所述第i节点的有向边指向所述第i 1节点;所述最值为各入边邻接节点的深度信息中的最小值。
[0159]
可选的,所述处理模块520具体用于:
[0160]
针对所述第m节点的任一入边邻接节点,确定出所述入边邻接节点的各出边邻接节点;所述各出边邻接节点包括所述第m节点;
[0161]
根据所述入边邻接节点的深度信息中的最值,按照预设的深度信息设置机制,确定出所述各出边邻接节点的深度信息。
[0162]
可选的,所述处理模块520具体用于:
[0163]
针对实例列表中任一业务流程对应的实例,根据所述实例的业务流程分类和业务流程名称,确定是否具有所述实例的有向无环图;若没有,则根据所述实例中的各步骤及各步骤的依赖关系,建立所述实例的有向无环图。
[0164]
可选的,所述处理模块520具体用于:
[0165]
根据所述待重新执行步骤的唯一标识获取所述待重新执行步骤的步骤记录和所述待重新执行步骤的异常处理类型;所述步骤记录用于记录步骤的唯一标识、步骤执行状态、步骤元信息和步骤执行结果;所述步骤元信息包括所述步骤在执行时所需要的数据信息;
[0166]
根据所述待重新执行步骤的步骤元信息和异常处理类型生成所述待重新执行步骤的执行上下文实例。
[0167]
可选的,所述处理模块520具体用于:
[0168]
在所述待重新执行步骤的异常处理类型为跳过时,确定所述待重新执行步骤是否为异常步骤;若是,则将所述异常步骤跳过,恢复业务流程执行;
[0169]
否则重新执行所述待重新执行步骤。
[0170]
基于相同的技术构思,本发明实施例还提供一种计算机设备,包括:
[0171]
存储器,用于存储程序指令;
[0172]
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述基于有向无环图业务流程恢复的方法。
[0173]
基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,所述计算
机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述基于有向无环图业务流程恢复的方法。
[0174]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0175]
本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0176]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0177]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0178]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献