业务链路交叉的执行方法及装置和电子设备与流程

文档序号:20020011发布日期:2020-02-25 11:27阅读:177来源:国知局
业务链路交叉的执行方法及装置和电子设备与流程

本说明书实施例涉及互联网技术领域,尤其涉及一种业务链路交叉的执行方法及装置和电子设备。



背景技术:

不同业务产生的业务链路可能涉及相同的用户,此时这些业务链路之间就会存在交叉节点。

在相关技术中,在执行多条业务链路时,并不会考虑交叉节点;一般都是并行执行各条业务链路。然而,并行执行方式下,容易出现业务中止的情况。为此针对业务链路交叉,提供了重试机制,即当某个业务链路异常中断时,通过再次执行的方式保证中断的业务链路继续执行。



技术实现要素:

本说明书实施例提供的一种业务链路交叉的执行方法及装置和电子设备。

根据本说明书实施例的第一方面,提供一种业务链路交叉的执行方法,所述方法包括:

获取待执行的多条业务链路以及所述多条业务链路之间交叉节点的映射关系;其中,所述业务链路由若干串联的节点构成,所述交叉节点为不同业务链路中同一发起方对应的节点;

创建用于记录节点执行顺序的链表,根据设定的排序规则遍历所述多条业务链路的节点,得出所述多条业务链路中节点之间的全局执行顺序;

按照所述链表的全局执行顺序依次执行各个节点以完成所述多条业务链路。

可选的,所述排序规则,具体包括:

针对每条业务链路设定p为1,i为1;其中,所述p表示链表中第p个链块;所述i表示业务链路中第i个节点;

判断第i个节点是否为交叉节点;

如果第i个节点不是交叉节点,进一步判断链表是否为空;

如果链表为空,则在链表中创建一个v链块,并将第i个节点加入该创建的v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果链表不为空,进一步判断p是否为1;

如果第p为1,进一步判断第p个链块是否为v链块;

如果第p个链块为v链块,则将第i个节点加入该v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果第p个链路不为v链块,则在第p个链块之后创建一个v链块,将第i个节点加入该创建的v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果p不为1,进一步判断第p-1个链块是否为v链块;

如果第p-1个链块是v链块,则将第i个节点加入该v链块;以及令i+1。

可选的,所述排序规则还包括:

如果第p-1个链块不是v链块,进一步判断第p个链块是否存在;

如果第p个链块不存在,则在创建第p个链块为v链块,将第i个节点加入该创建的v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果第p个链块存在,进一步判断第p个链块是否为v链块;

如果第p个链块为v链块,则将第i个节点加入该创建的v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果第p个链块不为v链块,则在第p个链块之前创建1个v链块,将第i个节点加入该创建的v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果第i个节点为交叉节点,进一步判断链表是否为空;

如果链表为空,则在链表中创建1个t链块(即产生第1个链块),将第i个节点加入该t链块;建立第i个节点与该t链块的对应关系;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果链表不为空,进一步判断与第i个节点存在映射关系的节点是否加入某个t链块;

如果与第i个节点存在映射关系的节点都没有加入t链块,则在第p个链块之前创建t链块,将第i个节点加入该t链块;建立第i个节点与该t链块的对应关系;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果与第i个节点存在映射关系的节点加入t链块,则确定与第i个节点存在映射关系的节点加入的目标t链块,将第i个节点加入该目标t链块;建立第i个节点与该目标t链块的对应关系;以及令p=目标t链块p+1,i+1。

可选的,所述按照所述链表的全局执行顺序依次执行各个节点以完成所述多条业务链路,具体包括:

按照所述链表中各链块的先后顺序依次执行所述链块;其中,在所述链块内记录的节点存在多个时,采用并行方式执行同一链块内的多个节点。

根据本说明书实施例的第二方面,提供一种业务链路交叉的执行装置,所述装置包括:

获取单元,获取待执行的多条业务链路以及所述多条业务链路之间交叉节点的映射关系;其中,所述业务链路由若干串联的节点构成,所述交叉节点为不同业务链路中同一发起方对应的节点;

创建单元,创建用于记录节点执行顺序的链表,根据设定的排序规则遍历所述多条业务链路的节点,得出所述多条业务链路中节点之间的全局执行顺序;

执行单元,按照所述链表的全局执行顺序依次执行各个节点以完成所述多条业务链路。

根据本说明书实施例的第三方面,提供一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为上述任一项业务链路交叉的执行方法。

本说明书实施例,提供了一种业务链路交叉的执行方案,利用设定的排序规则,依次遍历每条业务链路中的节点,以生成记录有所有节点之间的全局执行顺序的链表;按照所述链表的全局执行顺序依次执行各个节点以完成所述多条业务链路。如此,在多条业务链路存在交叉时,只需要一次执行就可以完成全部业务链路,无需多次重试,节约了资源。

附图说明

图1是本说明书一实施例提供的业务链路交叉的执行方法的流程图;

图2是本说明书一实施例提供的链表生成规则的流程示意图;

图3是本说明书一实施例提供的多条业务链路交叉的示意图;

图4是图3所示多条业务链路遍历后生成的链表的示意图;

图5是本说明书一实施例提供的业务链路交叉的执行装置的硬件结构图;

图6是本说明书一实施例提供的业务链路交叉的执行装置的模块示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。

在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

如前所述在并行执行存在交叉的多条业务链路时,容易出现业务中止的情况。这是由于任一交叉节点的后续节点执行需要等待该交叉节点在对应交叉的业务链路上所有在前节点都执行完毕。

举例说明,业务链路a包含节点a1、a2、a3;业务链路b包含节点b1、b2、b3;假设节点a2和b2为同一发起方的节点,即节点a2和b2互为交叉节点。在业务链路执行时,节点a3不仅需要等待节点a1、a2执行完毕,还需要等待节点b1、b2执行完毕。

以下以资金流转业务为例进一步说明。假设资金链路a中资金流转过程为:账户a转账5元给账户b(节点a1);账户b收款并合并余额(节点a2);账户b转账15元给账户c(节点a3)。

资金链路b中资金流转过程为:账户d转账5元给账户b(节点b1);账户b收款并合并余额(节点b2)。

当账户a和d都给账户b转账时,账户b需要收款2次并2次合并余额。如果账户b本身余额只有5元,仅收取账户a转账的资金后实际是不够资金转给账户c的,需要等待账户d转账的资金到款后,才可以完成a3。因此,节点a3的执行不仅需要等待本业务链路a中的在前节点a1和a2执行,还需要等待另一业务链路b中的节点b1和b2执行。

在相关技术中,针对业务链路交叉是业务异常中断,提供了重试机制,即当某个业务链路异常中断时,通过再次执行的方式保证中断的业务链路继续执行。沿用上述示例,不同业务链路由于种种原因执行时间并不相同,如果节点a1和节点a2先执行完毕,而节点b1和b2还没有执行完毕,那么节点a3就会异常中断,此时就会触发重试机制,不断重复执行节点a3;直到节点b1和节点b2都执行完毕。虽然重试机制可以保证中断的业务链路继续执行,但是不断重试所消耗的资源确实浪费的,而且重试次数越多资源浪费也越多。可见,交叉的业务链路的执行过程中资源浪费成为业内亟待解决的问题

为了解决上述问题,本说明书提供了一种业务链路交叉的执行方法,以下可以参考图1所示的例子介绍,该方法可以应用于服务端,所述方法可以包括以下步骤:

步骤110:获取待执行的多条业务链路以及所述多条业务链路之间交叉节点的映射关系;其中,所述业务链路由若干串联的节点构成;

步骤120:创建用于记录节点执行顺序的链表,根据所述链表中配置的判断规则遍历所述多条业务链路的节点,得出所述多条业务链路中节点之间的全局执行顺序;

步骤130:按照所述链表的全局执行顺序依次执行各个节点以完成所述多条业务链路。

本说明书中,所述服务端可以是指响应业务链路执行的业务服务器、服务器集群或者由服务器集群构建的云服务。

本说明书中,所述链表主要用于记录业务链路中节点的全局执行顺序。所述链表可以由若干具有先后顺序的链块连接而成,所述链块分为v链块和t链块。所述v链块用于记录非交叉节点;所述t链路用于记录交叉节点。同一个链块中可以记录多个节点,并且同一链块中的多个节点可以并行的执行。

所述交叉节点的映射关系是指不同业务链路中存在交叉的节点之间的映射关系。沿用前述示例,在资金流转链块a中的节点a2和资金流转链块b中的节点b2均是指账户b收款;因此节点a2和b2互为交叉节点,进而交叉节点a2和b2之间建立有映射关系。

以下结合图2所示的链表生成所需的排序规则对应的流程示意图来进一步说明多条业务链路中节点之间的全局执行顺序是如何确定的。依次利用图2所示流程遍历每一条业务链路:

在遍历多笔业务链路之前,需要先初始化链表,初始化的链表为空。

依次遍历每一条业务链路,设定p=1,i=1;所述p表示链表中第p个链块;所述i表示业务链路中第i个节点。

之后,针对业务链路中的每个节点进行如下判断,

步骤1、判断第i个节点是否为交叉节点;

步骤11、如果第i个节点不是交叉节点,进一步判断链表是否为空;

步骤111、如果链表为空,则在链表中创建一个v链块(即产生第1个链块),并将第i个节点加入该创建的v链块;以及令p+1,i+1后,重新执行步骤1。

步骤112、如果链表不为空,进一步判断p是否为1;

步骤1121、如果第p为1,进一步判断第p个链块是否为v链块;

步骤11211、如果第p个链块为v链块,则将第i个节点加入该v链块;以及令p+1,i+1后,重新执行步骤1。

步骤11212、如果第p个链路不为v链块(即为t链块),则在第p个链块之后创建一个v链块,将第i个节点加入该创建的v链块;以及令p+1,i+1后,重新执行步骤1。

步骤1122、如果p不为1,进一步判断第p-1个链块是否为v链块;

步骤11221、如果第p-1个链块是v链块,则将第i个节点加入该v链块;以及p不变、令i+1后,重新执行步骤1。

步骤11222、如果第p-1个链块不是v链块(即为t链块),进一步判断第p个链块是否存在;

步骤112221、如果第p个链块不存在,则在创建第p个链块为v链块,将第i个节点加入该创建的v链块;以及令p+1,i+1后,重新执行步骤1。

步骤112222、如果第p个链块存在,进一步判断第p个链块是否为v链块;

步骤1122221、如果第p个链块为v链块,则将第i个节点加入该创建的v链块;以及令p+1,i+1后,重新执行步骤1

步骤1122222、如果第p个链块不为v链块(即为t链块),则在第p个链块之前创建1个v链块,将第i个节点加入该创建的v链块;以及令p+1,i+1后,重新执行步骤1。

步骤12、如果第i个节点为交叉节点,进一步判断链表是否为空;

步骤121、如果链表为空,则在链表中创建1个t链块(即产生第1个链块),将第i个节点加入该t链块;建立第i个节点与该t链块的对应关系;以及令p+1,i+1后,重新执行步骤1。

步骤122、如果链表不为空,进一步判断与第i个节点存在映射关系的节点是否加入某个t链块;

步骤1221、如果与第i个节点存在映射关系的节点都没有加入t链块,则在第p个链块之前创建t链块,将第i个节点加入该t链块;建立第i个节点与该t链块的对应关系;以及令p+1,i+1后,重新执行步骤1。

步骤1222、如果与第i个节点存在映射关系的节点加入t链块,则确定与第i个节点存在映射关系的节点加入的目标t链块,将第i个节点加入该目标t链块;建立第i个节点与该目标t链块的对应关系;以及令p=目标t链块p+1,i+1后,重新执行步骤1。

如果当前业务链路中的节点都加入到链表,则遍历下一业务链路;直到遍历完所有业务链路,从而得到记录有所述多条业务链路中节点之间全局执行顺序的链表。

在图2所示的流程图中,存在有10种执行结果:

第1种执行结果:

如果第i个节点不是交叉节点,且链表为空;则在链表中创建一个v链块,并将该第i个节点加入到该v链块;令p+1,i+1。

第2种执行结果:

如果第i个节点不是交叉节点,链表不为空,p为1,第p个链块为v链块;则将第i个节点加入该v链块;令p+1,i+1。

第3种执行结果:

如果第i个节点不是交叉节点,链表不为空,p不为1,且第p个链块不为v链块(为t链块);则在第p个链块之后创建v链块,将第i个节点加入该v链块;令p+1,i+1。

第4种执行结果:

如果第i个节点不是交叉节点,链表不为空,p不为1,且第p-1个链块为v链块;则将第i个节点加入该第p-1个链块;p不变、令i+1。

第5种执行结果:

如果第i个节点不是交叉节点,链表不为空,p不为1,第p-1个链块不为v链块(为t链块),且第p个链块不存在;则创建第p个链块为v链块,将第i个节点加入该v链块;令p+1,i+1。

第6种执行结果:

如果第i个节点不是交叉节点,链表不为空,p不为1,第p-1个链块不为v链块(为t链块),第p个链块存在,且第p个链块为v链块;则将第i个节点加入该第p-1个链块;令p+1,i+1。

第7种执行结果:

如果第i个节点不是交叉节点,链表不为空,p不为1,第p-1个链块不为v链块(为t链块),第p个链块存在,第p个链块不为v链块(为t链块);则在第p个链块之前创建v链块,将第i个节点加入该第p-1个链块;令p+1,i+1。

第8种执行结果:

如果第i个节点为交叉节点,且链表为空;则在链表中创建t链块,将第i个节点加入该t链块,建立第i个节点与该t链块的对应关系;令p+1,i+1。

第9种执行结果:

如果第i个节点为交叉节点,链表不为空,与第i个节点存在映射关系的节点均没有加入t链块;则在第p个链块之前创建t链块,将第i个节点加入该t链块,建立第i个节点与该t链块的对应关系;令p+1,i+1。

第10种执行结果:

如果第i个节点为交叉节点,链表不为空,与第i个节点存在映射关系的节点加入t链块;则确定与第i个节点存在映射关系的节点加入的目标t链块、将第i个节点加入该目标t链块、建立第i个节点与该目标t链块的对应关系;令p=目标t链块p+1,i+1。

以下例一个具体的例子加以说明。请参考图3所示的多条业务链路的示意图。图3中,存在5条业务链路,分别是业务链路a、业务链路b、业务链路c、业务链路d、业务链路e。

业务链路a中包含的节点顺序依次为,节点a1、节点a2、节点a3、节点a4、节点a5、节点a6、节点a7和节点a8。

业务链路b中包含的节点顺序依次为,节点b1、节点b2、节点b3、节点b4和节点b5。

业务链路c中包含的节点顺序依次为,节点c1、节点c2、节点c3、节点c4、节点c5和节点c6。

业务链路d中包含的节点顺序依次为,节点d1、节点d2、节点d3、节点d4、节点d5节点d6。

业务链路e中包含的节点顺序依次为,节点e1、节点e2、节点e3、节点e4、节点e5和节点e6。

交叉节点之间的映射关系为:

crossa{a2,b2,c3}

crossb{a4,b3,c4,d3}

crossc{a6,b4,d4}

crossd{d5,e5}

现在需要寻找业务链路a至e中所有节点的全局执行顺序。

结合图4中遍历业务链路a后的链表示意图进行说明:

设置p=1,i=1;

针对节点a1:在p=1时链表中不存在第1个链块、在i=1时节点为a1;由于节点a1不是交叉节点,且此时链表为空;因此上述第1种执行结果:创建1个v链块(图4中的v1链块,该v1链块为第1个链块),并将节点a1加入该v1链块中;令p+1,i+1。

针对节点a2:在p=2时链表中不存在第2个链块、在i=2时节点为a2;由于节点a2是交叉节点,链表不为空,与a2节点存在映射关系其它交叉节点并没有加入某个t链块;因此属于上述第9种执行结果:在第2个链块之前(第1个链块之后)创建1个t链块(图4中的t2链块,该t2链块为第2个链块),将节点a2加入该t2链块中;建立节点a2与该t2链块之间的对应关系;令p+1,i+1。

针对节点a3:在p=3时链表中不存在第3个链块,在i=3时节点为a3;由于节点a3不是交叉节点,链表不为空,p不为1,第2个链块不为v链块,第3个链块不存在;因此属于上述第5种执行结果:创建第3个链块为v链块(图4中的v3链块,该v3链块为第3个链块),将节点a3加入该v3链块中;令p+1,i+1。

针对节点a4:在p=4时链表中不存在第4个链块,在i=4时节点为a4;由于节点a4是交叉节点,链表不为空,与a4节点存在映射关系其它交叉节点并没有加入某个t链块;因此属于上述第9种执行结果:在第4个链块之前(第3个链块之后)创建1个t链块(图4中的t4链块,该t4链块为第4个链块),将节点a4加入该t4链块中;建立节点a4与该t4链块之间的对应关系;令p+1,i+1。

针对节点a5:在p=5时链表中不存在第5个链块,在i=5时节点为a5;由于节点a5不是交叉节点,链表不为空,p不为1,第4个链块不为v链块,第5个链块不存在;因此属于上述第5种执行结果:创建第5个链块为v链块(图4中的v5链块,该v5链块为第5个链块),将节点a5加入该v5链块中;令p+1,i+1。

针对节点a6:在p=6时链表中不存在第6个链块,在i=6时节点为a6;由于节点a6是交叉节点,链表不为空,与a6节点存在映射关系其它交叉节点并没有加入某个t链块;因此属于上述第9种执行结果:在第6个链块之前(第6个链块之后)创建1个t链块(图4中的t6链块,该t6链块为第6个链块),将节点a6加入该t6链块中;建立节点a6与该t6链块之间的对应关系;令p+1,i+1。

针对节点a7:在p=7时链表中不存在第7个链块,在i=7时节点为a7;由于节点a7不是交叉节点,链表不为空,p不为1,第6个链块不为v链块,第7个链块不存在;因此属于上述第5种执行结果:创建第7个链块为v链块(图4中的v7链块,该v7链块为第7个链块),将节点a7加入该v7链块中;令p+1,i+1。

在i=8时,由于业务链路a中不存在第8个节点;说明业务链路a已经遍历完毕,得到图4中所示的业务链路a对应的链表。此外,还建立了链块与交叉节点的对应关系包括:[t2,a2],[t4,a4]和[t6,a6]。

结合图4中遍历业务链路b后的链表示意图进行说明:

设置p=1,i=1;

针对节点b1:在p=1时链表中存在第1个链块v1、在i=1时节点为b1;由于节点b1不是交叉节点,链表不为空,p为1,且第1个链块为v链块;因此上述第2种执行结果:将节点b1加入v1链块中;令p+1,i+1。

针对节点b2:在p=2时链表中存在第2个链块t2、在i=2时节点为b2;由于节点b2是交叉节点,链表不为空,与节点b2存在映射关系的节点a2加入t2链块;因此上述第10种执行结果:确定与节点b2存在映射关系的节点a2加入的目标t链块为t2、将节点b2加入t2链块中、建立节点b2与t2链块的对应关系;由于t2的p为2,则令p=2+1(3),i+1。

针对节点b3:在p=3时链表中存在第3个链块v3、在i=3时节点为b3;由于节点b3是交叉节点,链表不为空,与节点b3存在映射关系的节点a4加入t4链块;因此上述第10种执行结果:确定与节点b3存在映射关系的节点a4加入的目标t链块为t5、将节点b3加入t4链块中、建立节点b3与t4链块的对应关系;由于t4的p为4,则令p=2+1(5),i+1。

针对节点b4:在p=5时链表中存在第5个链块v5、在i=4时节点为b4;由于节点b4是交叉节点,链表不为空,与节点b4存在映射关系的节点a6加入t6链块;因此上述第10种执行结果:确定与节点b4存在映射关系的节点a6加入的目标t链块为t6、将节点b4加入t6链块中、建立节点b4与t6链块的对应关系;由于t6的p为6,则令p=6+1(7),i+1。

针对节点b5:在p=7时链表中存在第7个链块v7、在i=5时节点为b5;由于节点b5不是交叉节点,链表不为空,p不为1,第6个链块不为v链块,第7个链块存在且为v链块;因此上述第6种执行结果:将节点b5加入v7链块中;令p+1,i+1。

在i=6时,由于业务链路b中不存在第6个节点;说明业务链路b已经遍历完毕,得到图4中所示的业务链路a+b对应的链表。此外,建立的链块与交叉节点的对应关系更新为:[t2,a2,b2],[t4,a4,b3]和[t6,a6,b4]。

结合图4中遍历业务链路c后的链表示意图进行说明:

设置p=1,i=1;

针对节点c1:在p=1时链表中存在第1个链块v1、在i=1时节点为c1;由于节点c1不是交叉节点,链表不为空,p为1,且第1个链块为v链块;因此上述第2种执行结果:将节点c1加入v1链块中;令p+1,i+1。

针对节点c2:在p=2时链表中存在第2个链块t2、在i=2时节点为c2;由于节点c2不是交叉节点,链表不为空,p不为1,且第1个链块为v链块;因此上述第4种执行结果:将节点c2加入第1个链块即v1链块中;保持p不变,令i+1。

针对节点c3:在p=2时链表中存在第2个链块t2、在i=3时节点为c3;由于节点c3是交叉节点,链表不为空,与节点c3存在映射关系的节点a2、b2加入t2链块;因此上述第10种执行结果:确定与节点c3存在映射关系的节点a2、b2加入的目标t链块为t2、将节点c3加入t2链块中、建立节点c3与t2链块的对应关系;由于t2的p为2,则令p=2+1(3),i+1。

针对节点c4:在p=3时链表中存在第3个链块v3、在i=4时节点为c4;由于节点c4是交叉节点,链表不为空,与节点c4存在映射关系的节点a4、b3加入t4链块;因此上述第10种执行结果:确定与节点c4存在映射关系的节点a4、b3加入的目标t链块为t4、将节点c4加入t4链块中、建立节点c4与t4链块的对应关系;由于t4的p为4,则令p=4+1(5),i+1。

针对节点c5:在p=5时链表中存在第5个链块v5、在i=5时节点为c5;由于节点c5不是交叉节点,链表不为空,p不为1,第4个链块不为v链块,第5个链块存在且为v链块;因此上述第6种执行结果:将节点c5加入v5链块中;令p+1,i+1。

针对节点c6:在p=6时链表中存在第6个链块t6、在i=6时节点为c6;由于节点c6不是交叉节点,链表不为空,p不为1,且第5个链块为v链块;因此上述第4种执行结果:将节点c6加入第5个链块即v5链块中;保持p不变,令i+1。

在i=7时,由于业务链路c中不存在第7个节点;说明业务链路c已经遍历完毕,得到图4中所示的业务链路a+b+c对应的链表。此外,建立的链块与交叉节点的对应关系更新为:[t2,a2,b2,c3],[t4,a4,b3,c4]和

[t6,a6,b4]。

结合图4中遍历业务链路d后的链表示意图进行说明:

设置p=1,i=1;

针对节点d1:在p=1时链表中存在第1个链块v1、在i=1时节点为d1;由于节点d1不是交叉节点,链表不为空,p为1,且第1个链块为v链块;因此上述第2种执行结果:将节点d1加入v1链块中;令p+1,i+1。

针对节点d2:在p=2时链表中存在第2个链块t2、在i=2时节点为d2;由于节点d2不是交叉节点,链表不为空,p不为1,且第1个链块为v链块;因此上述第4种执行结果:将节点d2加入第1个链块即v1链块中;保持p不变,令i+1。

针对节点d3:在p=2时链表中存在第2个链块t2、在i=3时节点为d3;由于节点d3是交叉节点,链表不为空,与节点d3存在映射关系的节点a4、b3、c4加入t4链块;因此上述第10种执行结果:确定与节点d3存在映射关系的节点a4、b3、c4加入的目标t链块为t4、将节点d3加入t4链块中、建立节点d3与t4链块的对应关系;由于t4的p为4,则令p=4+1(5),i+1。

针对节点d4:在p=5时链表中存在第5个链块v5、在i=4时节点为d4;由于节点d4是交叉节点,链表不为空,与节点d4存在映射关系的节点a6、b4加入t6链块;因此上述第10种执行结果:确定与节点d4存在映射关系的节点a6、b4加入的目标t链块为t6、将节点d5加入t6链块中、建立节点d5与t6链块的对应关系;由于t6的p为6,则令p=6+1(7),i+1。

针对节点d5:在p=7时链表中存在第7个链块v7,在i=5时节点为d5;由于节点d5是交叉节点,链表不为空,与d5节点存在映射关系其它交叉节点并没有加入某个t链块;因此属于上述第9种执行结果:在第7个链块之前(第6个链块之后)创建1个t链块(图4中的t8链块,该t8链块为第7个链块),将节点d5加入该t8链块中;建立节点d5与该t8链块之间的对应关系;令p+1,i+1。

针对节点d6:在p=8时链表中存在第8个链块v7、在i=6时节点为d6;由于节点d6不是交叉节点,链表不为空,p不为1,第7个链块不为v链块,第8个链块存在且为v链块;因此上述第6种执行结果:将节点d6加入v7链块中;令p+1,i+1。

在i=7时,由于业务链路d中不存在第7个节点;说明业务链路d已经遍历完毕,得到图4中所示的业务链路a+b+c+d对应的链表。此外,建立的链块与交叉节点的对应关系更新为:[t2,a2,b2,c3],[t4,a4,b3,c4,d3]、[t6,a6,b4,d4]和[t8,d5]。

结合图4中遍历业务链路e后的链表示意图进行说明:

设置p=1,i=1;

针对节点e1:在p=1时链表中存在第1个链块v1、在i=1时节点为e1;由于节点e1不是交叉节点,链表不为空,p为1,且第1个链块为v链块;因此上述第2种执行结果:将节点e1加入v1链块中;令p+1,i+1。

针对节点e2:在p=2时链表中存在第2个链块t2、在i=2时节点为e2;由于节点e2不是交叉节点,链表不为空,p不为1,且第1个链块为v链块;因此上述第4种执行结果:将节点e2加入第1个链块即v1链块中;保持p不变,令i+1。

针对节点e3:在p=2时链表中存在第2个链块t2、在i=3时节点为e3;由于节点e3不是交叉节点,链表不为空,p不为1,且第1个链块为v链块;因此上述第4种执行结果:将节点e3加入第1个链块即v1链块中;保持p不变,令i+1。

针对节点e4:在p=2时链表中存在第2个链块t2、在i=4时节点为e4;由于节点e4不是交叉节点,链表不为空,p不为1,且第1个链块为v链块;因此上述第4种执行结果:将节点e4加入第1个链块即v1链块中;保持p不变,令i+1。

针对节点e5:在p=2时链表中存在第2个链块t2、在i=5时节点为e5;由于节点e5是交叉节点,链表不为空,与节点e5存在映射关系的节点d5加入t8链块;因此上述第10种执行结果:确定与节点e5存在映射关系的节点d5加入的目标t链块为t8、将节点e5加入t8链块中、建立节点e5与t8链块的对应关系;由于t8的p为7,则令p=7+1(8),i+1。

针对节点e6:在p=8时链表中存在第8个链块v7、在i=6时节点为e6;由于节点e6不是交叉节点,链表不为空,p不为1,第7个链块不为v链块,第8个链块存在且为v链块;因此上述第6种执行结果:将节点e6加入v7链块中;令p+1,i+1。

在i=7时,由于业务链路e中不存在第7个节点;说明业务链路e已经遍历完毕,得到图4中所示的业务链路a+b+c+d+e对应的链表。此外,建立的链块与交叉节点的对应关系更新为:[t2,a2,b2,c3],[t4,a4,b3,c4,d3]、[t6,a6,b4,d4]和[t8,d5,e5]。

至此,所有业务链路都遍历完毕,最终可以得到图4中业务链路a+b+c+d+e对应的链表。

然后,服务端可以根据该链表中记录的节点之间的全局执行顺序依次执行节点,包括:

按照所述链表中各链块的先后顺序依次执行所述链块;其中,在所述链块内记录的节点存在多个时,采用并行方式执行同一链块内的多个节点。

首先执行v1链块:并行执行节点a1、b1、c1、c2、d1、d2、e1、e2、e3、e4。

在v1链块中节点都执行完毕后,执行t2链块:并行执行节点a2、b2、c3。

在t2链块中节点都执行完毕后,执行v3链块:执行节点a3。

在v3链块中节点都执行完毕后,执行t4链块:并行执行节点a4、b3、c4、d3。

在t4链块中节点都执行完毕后,执行v5链块:并行执行节点a5、c5、c6。

在v5链块中节点都执行完毕后,执行t6链块:并行执行节点a6、b4、d4。

在t6链块中节点都执行完毕后,执行t8链块:并行执行节点d5、e5。

在t8链块中节点都执行完毕后,执行v7链块:并行执行节点a7、b5、d6、e6。

根据上述示例,可见,根据本说明书提供的实施例,利用设定的排序规则,依次遍历每条业务链路中的节点,以生成记录有所有节点之间的全局执行顺序的链表;按照所述链表的全局执行顺序依次执行各个节点以完成所述多条业务链路。如此,在多条业务链路存在交叉时,只需要一次执行就可以完成全部业务链路,无需多次重试,节约了资源。

与前述业务链路交叉的执行方法实施例相对应,本说明书还提供了业务链路交叉的执行装置的实施例。所述装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机业务程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本说明书业务链路交叉的执行装置所在设备的一种硬件结构图,除了图5所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常根据业务链路交叉的执行实际功能,还可以包括其他硬件,对此不再赘述。

请参见图6,为本说明书一实施例提供的业务链路交叉的执行装置的模块图,所述装置对应了图1所示实施例,所述装置包括:

获取单元310,获取待执行的多条业务链路以及所述多条业务链路之间交叉节点的映射关系;其中,所述业务链路由若干串联的节点构成,所述交叉节点为不同业务链路中同一发起方对应的节点;

创建单元320,创建用于记录节点执行顺序的链表,根据设定的排序规则遍历所述多条业务链路的节点,得出所述多条业务链路中节点之间的全局执行顺序;

执行单元330,按照所述链表的全局执行顺序依次执行各个节点以完成所述多条业务链路。

可选的,所述排序规则,具体包括:

针对每条业务链路设定p为1,i为1;其中,所述p表示链表中第p个链块;所述i表示业务链路中第i个节点;

判断第i个节点是否为交叉节点;

如果第i个节点不是交叉节点,进一步判断链表是否为空;

如果链表为空,则在链表中创建一个v链块,并将第i个节点加入该创建的v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果链表不为空,进一步判断p是否为1;

如果第p为1,进一步判断第p个链块是否为v链块;

如果第p个链块为v链块,则将第i个节点加入该v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果第p个链路不为v链块,则在第p个链块之后创建一个v链块,将第i个节点加入该创建的v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果p不为1,进一步判断第p-1个链块是否为v链块;

如果第p-1个链块是v链块,则将第i个节点加入该v链块;以及令i+1。

可选的,所述排序规则还包括:

如果第p-1个链块不是v链块,进一步判断第p个链块是否存在;

如果第p个链块不存在,则在创建第p个链块为v链块,将第i个节点加入该创建的v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果第p个链块存在,进一步判断第p个链块是否为v链块;

如果第p个链块为v链块,则将第i个节点加入该创建的v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果第p个链块不为v链块,则在第p个链块之前创建1个v链块,将第i个节点加入该创建的v链块;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果第i个节点为交叉节点,进一步判断链表是否为空;

如果链表为空,则在链表中创建1个t链块(即产生第1个链块),将第i个节点加入该t链块;建立第i个节点与该t链块的对应关系;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果链表不为空,进一步判断与第i个节点存在映射关系的节点是否加入某个t链块;

如果与第i个节点存在映射关系的节点都没有加入t链块,则在第p个链块之前创建t链块,将第i个节点加入该t链块;建立第i个节点与该t链块的对应关系;以及令p+1,i+1。

可选的,所述排序规则还包括:

如果与第i个节点存在映射关系的节点加入t链块,则确定与第i个节点存在映射关系的节点加入的目标t链块,将第i个节点加入该目标t链块;建立第i个节点与该目标t链块的对应关系;以及令p=目标t链块p+1,i+1。

可选的,所述执行单元330,具体包括:

按照所述链表中各链块的先后顺序依次执行所述链块;其中,在所述链块内记录的节点存在多个时,采用并行方式执行同一链块内的多个节点。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上图6描述了业务链路交叉的执行装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

获取待执行的多条业务链路以及所述多条业务链路之间交叉节点的映射关系;其中,所述业务链路由若干串联的节点构成,所述交叉节点为不同业务链路中同一发起方对应的节点;

创建用于记录节点执行顺序的链表,根据设定的排序规则遍历所述多条业务链路的节点,得出所述多条业务链路中节点之间的全局执行顺序;

按照所述链表的全局执行顺序依次执行各个节点以完成所述多条业务链路。

在上述电子设备的实施例中,应理解,该处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-onlymemory,缩写:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)、快闪存储器、硬盘或者固态硬盘。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域技术人员在考虑说明书及实践这里公开的实施例后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。

应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。

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