一种业务流程的执行方法及装置
技术领域
本申请涉及计算机软件技术领域,尤其涉及一种业务流程的执行方法、装置及电子设备。
背景技术
一般来说,不同的业务流程需要与该业务流程相匹配的方式或方案实现业务流程的处理。比如,在金融风险领域中,常用的压力测试方法和模型比较固定,但不同的业务往往需要不同的步骤和流程,为了防止在每次切换业务时,需要对压力测试的常用模型和方法进行重复创造,由此,业务流程的通用性比较差,随着业务的发展,业务流程的维护成本会比较高。
因此,如何在增大业务流程通用性的前提下降低维护成本,是本申请所要解决的技术问题。
发明内容
本申请实施例的目的是提供一种业务流程的执行方法及装置,以解决现有技术中的业务流程的通用性差的问题。
为解决上述技术问题,本申请实施例是这样实现的:
第一方面,提出了一种业务流程的执行方法,该方法包括:
基于业务流程对应的计算节点的依赖关系,初始化所述业务流程对应的图模型中图节点的计算状态和依赖关系,其中,所述图节点与所述计算节点一一对应,所述图节点的初始计算状态为未计算状态;
当所述图模型中存在处于未计算状态的图节点时,循环执行以下执行步骤:
基于所述图模型中所述图节点的计算状态和依赖关系,选择目标图节点对应的目标计算节点执行对应的处理逻辑,其中,所述目标图节点不依赖于处于未计算状态的图节点;
在所述目标计算节点执行完毕后,更新所述目标图节点的计算状态为已计算状态;
如果所述图模型中存在依赖于所述目标图节点的图节点,将所述目标计算节点执行后的结果输出到依赖于所述目标图节点的图节点对应的计算节点。
第二方面,提出了一种业务流程的执行装置,该装置包括:
初始化单元,基于业务流程对应的计算节点的依赖关系,初始化所述业务流程对应的图模型中图节点的计算状态和依赖关系,其中,所述图节点与所述计算节点一一对应,所述图节点的初始计算状态为未计算状态;
目标计算节点选择单元,当所述图模型中存在处于未计算状态的图节点时,基于所述图模型中所述图节点的计算状态和依赖关系,选择目标图节点对应的目标计算节点执行对应的处理逻辑,其中,所述目标图节点不依赖于处于未计算状态的图节点;
计算状态更新单元,在所述目标计算节点执行完毕后,更新所述目标图节点的计算状态为已计算状态;
输出单元,如果所述图模型中存在依赖于所述目标图节点的图节点,将所述目标计算节点执行后的结果输出到依赖于所述目标图节点的图节点对应的计算节点。
第三方面,提出了一种电子设备,该电子设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
基于业务流程对应的计算节点的依赖关系,初始化所述业务流程对应的图模型中图节点的计算状态和依赖关系,其中,所述图节点与所述计算节点一一对应,所述图节点的初始计算状态为未计算状态;
当所述图模型中存在处于未计算状态的图节点时,循环执行以下执行步骤:
基于所述图模型中所述图节点的计算状态和依赖关系,选择目标图节点对应的目标计算节点执行对应的处理逻辑,其中,所述目标图节点不依赖于处于未计算状态的图节点;
在所述目标计算节点执行完毕后,更新所述目标图节点的计算状态为已计算状态;
如果所述图模型中存在依赖于所述目标图节点的图节点,将所述目标计算节点执行后的结果输出到依赖于所述目标图节点的图节点对应的计算节点。
第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
基于业务流程对应的计算节点的依赖关系,初始化所述业务流程对应的图模型中图节点的计算状态和依赖关系,其中,所述图节点与所述计算节点一一对应,所述图节点的初始计算状态为未计算状态;
当所述图模型中存在处于未计算状态的图节点时,循环执行以下执行步骤:
基于所述图模型中所述图节点的计算状态和依赖关系,选择目标图节点对应的目标计算节点执行对应的处理逻辑,其中,所述目标图节点不依赖于处于未计算状态的图节点;
在所述目标计算节点执行完毕后,更新所述目标图节点的计算状态为已计算状态;
如果所述图模型中存在依赖于所述目标图节点的图节点,将所述目标计算节点执行后的结果输出到依赖于所述目标图节点的图节点对应的计算节点。
由以上本申请实施例提供的技术方案可见,本申请实施例方案至少具备如下一种技术效果:
本申请实施例的业务流程的执行方法通过基于业务流程对应的计算节点的依赖关系,初始化图模型中图节点的依赖关系以及计算状态,以利用图模型中图节点之间的相互依赖关系处理各种复杂的业务流程的计算,即,可将本申请实施例的业务流程的执行方法用在不同的业务场景中,可以增加业务处理流程的复用性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的一个实施例的业务流程的执行方法的方法流程图。
图2是本申请的一个实施例的业务流程的执行方法的示意性有向无环图状态一。
图3是本申请的另一个实施例的业务流程的执行方法的示意性有向无环图状态二。
图4是本申请的再一个实施例的业务流程的执行方法的示意性有向无环图状态三。
图5是本申请的再一个实施例的业务流程的执行方法的示意性有向无环图状态四。
图6是本申请的另一个实施例的业务流程的执行方法的方法流程图。
图7是本申请的再一个实施例的业务流程的执行方法的方法流程图。
图8是本申请的再一个实施例的业务流程的执行方法的方法流程图。
图9是本申请的另一个实施例的业务流程的执行方法的示意性有向无环图。
图10是本申请的再一个实施例的业务流程的执行方法的示意性有向无环图。
图11是本申请的再一个实施例的业务流程的执行方法的示意性有向无环图。
图12是本申请的再一个实施例的业务流程的执行方法的示意性有向无环图。
图13是本申请的一个具体实施例的业务流程的执行方法的方法流程图。
图14是本申请的一个实施例电子设备的结构示意图。
图15是本申请的一个实施例的业务流程的执行装置的结构示意图。
具体实施方式
本申请实施例提供一种业务流程的执行方法及装置。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
一般来说,不同的业务流程需要与该业务流程相匹配的方式或方案实现业务流程的处理。因此,对于不同业务流程的方案,开发人员一般会根据业务需要的计算顺序,将业务流程在代码中的计算流程写死。由此,导致业务流程的个性化过强(一般只适用于一个或一类的业务),通用性比较差,因此,随着业务的发展,业务流程的维护成本会比较高。
比如以金融业务为例,在金融风险领域中,常用的压力测试方法和模型比较固定,但不同的金融业务往往需要不同的步骤和流程,因此,一般开发人员根据不同的金融业务的计算顺序,将金融业务流程在代码中的计算流程写死,从而使得该金融业务流程一般只适用于所涉及到的业务流程的计算,而并不适用于其他的金融业务,通用性比较差,在后期业务的开发过程中,随着业务的发展,业务流程的维护成本较高。
其中,金融风险指的是与金融有关的风险,如金融市场风险、金融产品风险、金融机构风险等。一家金融机构发生的风险所带来的后果,往往超过对其自身的影响。金融机构在具体的金融交易活动中出现的风险,有可能对该金融机构的生存构成威胁;具体的一家金融机构因经营不善而出现危机,有可能对整个金融体系的稳健运行构成威胁;一旦发生系统风险,金融体系运转失灵,必然会导致全社会经济秩序的混乱,甚至引发严重的政治危机。
此外,金融风险领域中的压力测试(stress testing),传统意义上是指将整个金融机构或资产组合置于某一特定的(主观想象的)极端市场情况下,如假设利率骤升100个基本点,某一货币突然贬值30%,股价暴跌20%等异常的市场变化,然后测试该金融机构或资产组合在这些关键市场变量突变的压力下的表现状况,看是否能经受得起这种市场的突变。
因此,在金融风险领域中,甚至是其他领域的业务,为了防止在每次切换业务时,需要对压力测试常用模型和方法进行重复创造。
为了解决上述技术问题,本发明提出一种业务流程的执行方法,如图1所示。图1的方法可包括:
S110.基于业务流程对应的计算节点的依赖关系,初始化业务流程对应的图模型中图节点的计算状态和依赖关系,其中,图节点与计算节点一一对应,图节点的初始计算状态为未计算状态。
图模型可以为有向无环图模型,任意一条边有方向,且不存在环路的图。如图2所示,其中,依赖关系可以以(x,y)进行表示,如(4,1)、(4,2)、(5,3)、(5,4)来表示依赖关系,其中x表示计算节点编号,y表示x节点依赖的计算节点编号。
由于图节点与计算节点一一对应,因此,也可以以x表示计算节点对应的图节点,在图模型中则表示为一个个的图节点。图节点中还可附上不同的状态,为便于理解,在本发明实施例中,以白色表示图节点对应的计算节点处于未计算状态,以灰色表示图节点对应的计算节点处于已计算状态(即计算完毕的状态),或者说,白色表示图节点处于未计算状态,灰色表示图节点处于已计算状态。如图2中,灰色节点1用来表示计算节点1处于已计算状态;如图3中,白色节点1表示计算节点1处于未计算状态。当然,也可用颜色之外的其它方式表示图节点的状态。
对于每个计算节点的计算情况可以用(x,z)的形式来表示,例如,图2中的各计算节点对应的图节点的初始化状态为(1,0)、(2,0)、(3,0)、(4,0)、(5,0)。其中x表示计算节点编号,z表示x节点的计算状态,即,0表示未计算状态,1表示已计算状态。以图2进行说明,初始化完成后得到状态如图2,圆圈对应的图节点均为计算节点的未计算状态,而图3中矩形对应的图节点则为计算节点的已计算状态。
S120.判断图模型中是否存在处于未计算状态的节点。
如果图模型中不存在处于未计算状态的节点,则表明业务流程执行完毕。
如果图模型中存在处于未计算状态的节点,则需循环执行以下步骤S122、S124、S126。
应理解,可以从业务流程的初始状态(即图模型中的所有计算节点均为未计算状态)进行执行,也可以从业务流程的中间状态(即图模型中的部分计算节点已经被执行过,而另一部分计算节点则还未被执行)进行执行。当然,只要图模型中存在为未被执行过的计算节点,则可进入下面所述的循环步骤中。
S122.基于图模型中图节点的计算状态和依赖关系,选择目标图节点对应的目标计算节点执行对应的处理逻辑,其中,目标图节点不依赖于处于未计算状态的图节点。
由于图模型中的图节点的计算状态和依赖关系在循环执行开始之前已被初始化好,因此,可直接选择目标图节点对应的目标计算节点执行相应的处理逻辑操作。该目标图节点可以是图模型初始化之后第一批被执行的图节点(该第一批被执行的图节点可以为一个,也可以为多个);当然,该目标图节点也可以是业务流程执行过程中的某个图节点,该图节点可能不依赖于其他任何图节点,也可能会依赖于其他一个或多个图节点,但所依赖的图节点则都处于已计算状态。
如图3中,目标图节点选择为图节点4,那么其所依赖的图节点1和图节点2对应的计算节点2的计算状态则均为已计算状态。以图2进行说明,若目标图节点选择为图节点2,则由于图节点2不依赖于其他任何图节点,因此,可从图节点2开始执行等等。
以一个具体执行过程进行说明,可结合图2至图5进行说明。在开始循环执行所有的计算节点时,先扫描节点状态列表中所有节点状态,如图2所示,将状态为0的节点1、2、3、4、5去依赖关系列表中查找依赖节点,查到节点1、2、3无依赖节点(即节点1、2、3不依赖其他节点),而节点4,5依赖的节点状态均为0,此时,在第一轮执行过程中,节点1、2、3则为目标计算节点。
S124.在目标计算节点执行完毕后,更新目标图节点的计算状态为已计算状态。
应理解,每个计算节点均可具有其独立的处理逻辑模型。因此,当目标计算节点执行完成后,则可更新目标图节点的计算状态为已计算状态。
继续结合图2至图5进行说明,当目标计算节点1、2、3选择后,可开始并发执行节点1、2、3,逻辑处理结束后更新节点1、2、3的状态为(1,1)、(2,1)、(3,1),可参见图3所示,图节点1、2、3的颜色由图2中的白色变成灰色,表示计算节点1、2、3处于已计算状态。
S126.如果图模型中存在依赖于目标图节点的图节点,将目标计算节点执行后的结果输出到依赖于目标图节点的图节点对应的计算节点。
应理解,不同的输出执行的计算节点有所不同,比如以图3为例,若以图节点4的输出作为业务流程的输出,则在图节点4对应的计算节点执行后,其会输出对应的输出结果,那么该输出结果则可作为业务流程的输出结果。若以图节点5的输出作为业务流程的输出,那么在计算节点4执行完毕后,由于图节点5依赖于图节点4,那么图节点4的输出结果输出至图节点5中,以使图节点5对应的计算节点执行相应的处理逻辑,并将图节点5输出的结果作为业务流程的输出结果。
继续结合图2至图5进行说明,计算节点1、2、3更新为计算完成状态后再次扫描节点状态列表中所有节点状态,将状态为0的节点4、5去依赖关系列表中查找依赖节点,节点4依赖的节点1、2状态均为1,而节点5依赖的节点3状态为1、节点4的状态为0,所以这一轮只执行节点4,计算结束后更新节点状态列表中节点4的状态为(4,1)。可参见图4所示,图节点4的颜色由图3中的白色变成灰色,表示计算节点4处于已计算状态。
此时,再次扫描节点状态列表中所有节点状态,将状态为0的节点5去依赖关系列表中查找依赖节点,节点5依赖的节点3、4状态均为1,所以这一轮执行节点5,计算结束后更新节点状态列表中节点5的状态为(5,1)。参见图5所示,图节点5的颜色由图4中的白色变成灰色,表示计算节点5处于已计算状态。然后,再次扫描节点状态列表中所有节点状态时,发现没有状态为0的节点,则计算结束,可输出结果作为业务流程的输出结果。
本申请实施例中,通过基于业务流程对应的计算节点的依赖关系,初始化图模型中图节点的依赖关系以及计算状态,以在图模型中存在处于未计算状态的图节点时,根据图节点的依赖关系和计算状态选择目标图节点对应的目标计算节点执行对应的处理逻辑,并在目标计算节点执行完毕后,更新目标图节点的计算状态为已计算状态,以将目标计算节点执行后的结果输出到依赖于目标图节点的图节点对应的计算节点。如此,可以利用图模型中图节点之间的依赖关系处理各种复杂的业务流程的计算,即可将本申请实施例的业务流程执行方法用在不同的业务场景中,可以增加业务处理流程的复用性。
该业务流程的执行方法针对任何不同需求中的计算依赖关系均适用。当业务流程的依赖关系发生变化时,重新初始化并进行计算即可。
以一个具体实施例进行说明。在金融风险压力测试业务中,有一种风险传染模型的业务流程,它可以包含五个计算节点(以五个计算节点为例),分别是计算节点1,利率对飞月宝余额的影响模型;计算节点2,利率对余利宝余额的影响金额模型;计算节点3,利率对备付金余额的影响模型;计算节点4,飞月宝和余利宝余额共同对备付余额的影响模型;计算节点5:通过备付金余额的影响金额计算备付金总余额。当然,应理解,前述提到的模型为实现计算节点处理逻辑的计算模型。
其中,该五个计算节点的相互依赖关系可参见图2所示的图模型的依赖关系。
不妨假设某种金融风险业务流程需要以计算节点5的输出作为金融风险业务的输出,则需要先获得计算节点3和计算节点4计算出来的对备付金余额的影响结果;要想获得计算节点4的计算结果,又需要先通过计算节点1和计算节点2分别计算得到的飞月宝和余利宝的余额,再通过图模型的依赖关系得到计算节点5的输出(即备付金总余额)为业务流程的输出结果。
不妨假设另一种金融风险业务流程需要计算节点4的输出作为金融风险业务的输出,则只需处理计算节点1和计算节点2的逻辑,以得到的飞月宝和余利宝的余额,并将计算节点1和计算节点2的输出作为计算节点4的输入并执行计算节点4得到飞月宝和余利宝余额共同对备付余额的影响结果作为金融风险业务的输出结果。
也就是说,在本申请实施例中,可以根据不同业务流程的需要,选择需要执行的计算节点,以处理各种复杂的业务流程的计算。即,可将本申请实施例的业务流程执行方法用在不同的业务场景中,可以增加业务流程处理的复用性。
以金融风险压力测试为例,通过基于有向无环图(Directed Acyclic Graph,DAG)(用于表示各个计算节点之间的相互依赖关系)的金融风险压力测试计算引擎,不同业务所需的不同计算节点均可以使用该引擎构建,而无需对每一种方案做重复工作,以实现高度复用,高效搭建符合业务需求的压力测试计算引擎。
在上述实施例中,如图6所示,在步骤S110之前,该方法还可包括:
S105.从预设的计算节点数据库中选择业务流程对应的计算节点,其中,计算节点数据库存储着计算节点的处理逻辑和计算节点之间的依赖关系。
也就是说,一般会通过人工等操作方式将计算节点存储在数据库中,并且各个计算节点的处理逻辑和计算节点之间的依赖关系也会存储在数据库中,由此,在进行不同的业务流程时,可调用数据库中的计算节点(计算节点的处理逻辑和计算节点之间的依赖关系),以进行初始化,不同的业务流程初始化后的图模型可能会不一样。
由此,可通过预设的计算节点数据库中所选择的业务流程对应的计算节点初始化得到与业务流程相匹配的图模型,以利用图模型中图节点之间的依赖关系处理各种复杂的业务流程的计算,即,可将本申请实施例的业务流程执行方法用在不同的业务场景中,可以增加业务处理流程的复用性。
为便于理解,下面给出了图1步骤的一种可行的实现方式。
S720.从业务流程的计算节点中选择第一图节点对应的第一计算节点,并执行第一计算节点对应的处理逻辑。
其中,第一图节点不依赖于业务流程中的其它图节点。
在本申请实施例中,可根据初始化好的图模型中的图节点的计算状态和依赖关系,选择第一图节点对应的第一计算节点,以执行第一计算节点对应的处理逻辑。其中,该第一图节点可以为一个,也可以为多个。
应理解,在图模型初始化后的第一次循环执行步骤中,该第一图节点为不依赖于其它图节点的图节点。例如,在图2中,第一图节点可选择图节点1,2,3。
应理解,为提高业务流程的执行效率,一般可对无依赖关系的计算节点进行并行计算处理。在第一次执行时,所有第一计算节点都进行执行。当然,应理解,部分第一计算节点也可在第二次及以后的循环执行步骤中执行。
S740.更新第一图节点的计算状态为已计算状态。
在第一计算节点执行完毕后,更新其对应的第一图节点的计算状态。
当然,应理解,如果存在依赖于第一图节点的其它图节点,则需要将第一计算节点的结果输出到依赖于第一图节点的图节点对应的计算节点中。
S760.从业务流程的计算节点中循环选择第二图节点对应的第二计算节点,并执行第二计算节点对应的处理逻辑。
其中,第二计算节点依赖的图节点都处于已计算状态。
应理解,在第二次及第二次以后的循环执行步骤中,可选择第二图节点执行计算过程,该第二图节点即依赖的图节点都处于已计算状态的图节点。
例如,在图3中,则第二图节点可以选择图节点4。其中,图节点4依赖于图节点1,2,且所依赖的图节点1,2都处于已计算状态。
当然,应理解,如前面步骤S720所述,在第二次及第二次以后的循环执行步骤中,也可选择尚未执行的第一图节点执行计算操作。
当第二计算节点计算完毕后,会将其输出结果输出至直接依赖于第二图节点的图节点对应的计算节点中。以图3为例进行说明,图节点4执行完毕后,将其输出结果输出至图节点5对应的计算节点5,以使计算节点5进行相应的处理逻辑操作。
S780.更新第一图节点的计算状态为已计算状态。
此时,第二计算节点若只依赖于一个计算节点,那么,第二计算节点直接根据依赖的一个计算节点输出的结果进行对应的计算处理,以得到与第二计算节点对应的输出结果;如果第二计算节点依赖于多个计算节点,则会根据依赖的多个计算节点的输出结果进行对应的计算处理,以得到与第二计算节点对应的输出结果。
如图3所示,图节点5不仅依赖于图节点4,还依赖于图节点3,此时,图节点5会根据图节点4和图节点3的输出结果进行计算处理,得到输出结果,作为业务流程最终的输出结果,或者作为循环的下一个计算节点的输入。
如此,可以利用图模型中图节点之间的依赖关系处理各种复杂的业务流程的计算,即,可将本申请实施例的业务流程执行方法用在不同的业务场景中,可以增加业务处理流程的复用性。
可选地,如图8所示,本说明书实施例的方法还可包括:
S820.基于业务流程的业务变化需求,从预设的计算节点数据库中选择业务流程新增的计算节点以加入到业务流程中,和/或从业务流程的计算节点中删除指定计算节点。
一般来说,图模型初始化好后,图模型中的图节点的数量可固定,但若想要在已初始化好的图模型中添加一个或多个图节点,可从数据库中选择业务流程需要添加的计算节点,以形成新的图模型。
或者,若想要在已初始化好的图模型中删除一个或多个图节点,则可在已初始化后形成图模型的计算节点中选择要删除的计算节点并将其删除,以形成新的图模型。
S840.基于业务流程调整后的计算节点的依赖关系,重新初始化业务流程对应的图模型中图节点的计算状态和依赖关系。
比如,在添加计算节点的方案中,可基于添加计算节点后的业务流程对应的计算节点的依赖关系,初始化图模型中图节点的依赖关系和计算状态,并执行图1所示实施例的方法。
以图3和图9进行说明,在图3的模型中,图节点1,2,3均为已计算状态,图节点4,5则为未计算状态,若要在图3的图模型中添加计算节点6,且图节点6直接依赖于图节点4,而图节点5直接依赖于图节点6。此时,只需要将业务流程的计算节点配置为包括图节点6,且调整业务流程中图节点4对应的计算节点的输出为图节点6对应的计算节点,并将图节点6对应的计算节点的输出设置为图节点5对应的计算节点即可。基于业务流程中计算节点的依赖关系,可得到初始化后的图模型,参见图9。基于图9的图模型,可执行新增图节点6后的业务流程,具体可参见图1所示实施例的方法。
又比如,在删除业务流程的计算节点的方案中,可基于删除计算节点后业务流程对应的计算节点的依赖关系,并执行图1所示实施例的方法。
可结合图3和图10进行说明。在图3的模型中,将图节点4删除,图节点1,2,3的输出改为图节点5,经过初始化后的图模型可参见图10。
S860.当图模型中存在处于未计算状态的图节点时,循环执行步骤S122、S124、S126。
在添加或删除计算节点后,重新初始化图节点的计算状态和计算节点的依赖关系,然后开始循环执行相应的计算节点的处理逻辑,以输出相应的业务流程的输出结果。
如此,不仅可以利用图模型中图节点之间的依赖关系处理各种复杂的业务流程的计算,以增加业务处理流程的复用性。而且,随着业务的开发,当需要增加相应的计算节点时,只需要配置与该添加的计算节点相应的依赖关系和计算状态即可,无需对图模型中的所有计算节点的依赖关系和计算状态进行重新配置,从而可以极大减少新业务节点的流程开发量。
应理解,在上述任一项实施例中,业务流程可包括但不限于如下之一:金融风险压力的测试流程;共享单车使用情况的统计流程;任务工单的管理流程等等。
应理解,本申请实施例的业务流程,可以是金融风险压力的测试流程中涉及的不同的业务流程,也可以是跨领域的业务流程,在此不做一一阐述。
下面,将结合具体的实施例,对本申请实施例的方法作进一步的描述。
比如,以任务工单的管理流程进行说明。如图11所示,该管理流程中有一种专利申请业务,假设其可包含五个图节点,分别是:图节点1,作者提交;图节点2,主管确认;图节点3,其他作者确认;图节点4,审核员通过;图节点5,专利通过。其中,图节点5依赖于图节点4,图节点4依赖于图节点3,图节点3依赖于图节点2,图节点2依赖于图节点1。
下面,结合图11和图14进行说明。
在初始化依赖关系表时,只需要将此依赖关系以(x,y)的形式存储起来,如(2,1)、(3,2)、(4,3)、(5,4)来表示依赖关系,其中x表示图节点编号,y表示图节点x依赖的图节点编号。
在初始化节点状态列表时,将每个图节点计算的情况以(x,z)的形式记录下来,如初始化状态为(1,0)、(2,0)、(3,0)、(4,0)、(5,0),其中x表示节点编号,z表示图节点x的计算状态,0表示未计算状态,1表示已计算状态。图10中的各个计算节点的图节点的背景色为白色,可用背景色为白色表示对应的图节点的计算状态为未计算状态。
初始化完毕后,可循环执行所有的图节点,或者说执行图节点对应的计算节点。
先扫描节点状态列表中所有节点状态,在状态为0的图节点1、2、3、4、5去依赖关系列表中查找依赖节点,查到图节点1为无依赖节点(不依赖于其他任何图节点),而图节点2、3、4,5依赖的节点状态均为0,因此选择图节点1作为执行节点,开始执行图节点1。计算结束后,更新节点状态列表中图节点1为(1,1)。
再次扫描节点状态列表中所有节点状态,在依赖关系列表中查找状态为0的图节点2、3、4、5的依赖节点的状态。由于图节点2依赖的图节点1状态为1,所以这一轮只执行图节点2,并在计算结束后在节点状态列表中将图节点2的状态更新为(2,1)。
再次扫描节点状态列表中所有节点状态,以依次循环执行各个不依赖于状态为0图节点的图节点,直至发现无状态为0的节点,计算结束,输出结果为业务流程的输出结果。
又比如,以共享单车使用情况的统计流程为例。如图12所示,在共享单车使用情况统计中,假设其可包含3个图节点,分别是:图节点1,计算共享单车总量;图节点2,计算共享单车关锁的量;图节点3:计算共享单车使用中的量。其中,要想获得图节点3的计算结果,又需要先通过图节点1和图节点2分别计算得到的共享单车总量和关锁状态的量。
那么,在初始化依赖关系列表时,可结合图12和图13进行说明,这时只需要将此依赖关系以(x,y)的形式存储起来,如(3,1)、(3,2)来表示依赖关系,其中x表示图节点编号,y表示图节点x依赖的图节点编号。
在初始化节点状态列表时,将每个节点计算的情况以(x,z)的形式记录下来,如上图初始化状态为(1,0)、(2,0)、(3,0),其中x表示图节点编号,z表示图节点x的计算状态,0表示未计算状态,1表示已计算状态。图11中的各个计算节点的图节点的背景色为白色,可用背景色为白色表示对应的图节点的计算状态为未计算状态。
初始化完毕后,可循环执行所有的计算节点。
先扫描节点状态列表中所有节点状态,将状态为0的图节点1、2、3去依赖关系列表中查找依赖节点,查到图节点1和图节点2为无依赖节点(不依赖于其他任何图节点),而图节点3依赖的节点状态为0。因此,可开始并行执行图节点1和图节点2。计算结束后更新节点状态列表中图节点1为(1,1),图节点2为(2,1)。
再次扫描节点状态列表中所有节点状态,在依赖关系列表中查找状态为0的图节点3依赖的图节点的装填,由于图节点3依赖的图节点1和图节点2的状态均为1,所以这一轮只执行图节点3。计算结束后,将节点状态列表中图节点3的状态更新为(3,1)。
再次扫描节点状态列表中所有节点状态,发现无状态为0的图节点,计算结束,输出结果为业务流程的输出结果。
从上面列举的例子可以看出,本申请实施例的业务流程执行方法可适用于任何不同需求中具有不同依赖关系的计算节点构成的业务流程。通过基于DAG(各计算节点之间的依赖关系)构建的业务流程执行方法,可以处理各种复杂流程及计算,适用于不同的业务场景中,可以增加业务逻辑处理流程(框架)的复用性。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图14是本申请的一个实施例电子设备的结构示意图。请参考图14,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成业务流程开发装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
基于业务流程对应的计算节点的依赖关系,初始化业务流程对应的图模型中图节点的计算状态和依赖关系,其中,图节点与计算节点一一对应,图节点的初始计算状态为未计算状态;
当图模型中存在处于未计算状态的图节点时,循环执行以下执行步骤:
基于图模型中图节点的计算状态和依赖关系,选择目标图节点对应的目标计算节点执行对应的处理逻辑,其中,所述目标图节点不依赖于处于未计算状态的图节点;
在目标计算节点执行完毕后,更新目标图节点的计算状态为已计算状态;
如果图模型中存在依赖于目标图节点的图节点,将目标计算节点执行后的结果输出到依赖于目标图节点的图节点对应的计算节点。
上述如本申请图1、图6、图7、图8、图13所示实施例揭示的业务流程执行装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(CentralProcessing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1的方法,并实现业务流程执行装置在图1、图6、图7、图8、图13所示实施例的功能,本申请实施例在此不再赘述。
当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下操作:
基于业务流程对应的计算节点的依赖关系,初始化业务流程对应的图模型中图节点的计算状态和依赖关系,其中,图节点与计算节点一一对应,图节点的初始计算状态为未计算状态;
当图模型中存在处于未计算状态的图节点时,循环执行以下执行步骤:
基于图模型中图节点的计算状态和依赖关系,选择目标图节点对应的目标计算节点执行对应的处理逻辑,其中,所述目标图节点不依赖于处于未计算状态的图节点;
在目标计算节点执行完毕后,更新目标图节点的计算状态为已计算状态;
如果图模型中存在依赖于目标图节点的图节点,将目标计算节点执行后的结果输出到依赖于目标图节点的图节点对应的计算节点。
如此,本说明书实施例的业务流程执行方法通过基于业务流程对应的计算节点的依赖关系,初始化图模型中图节点的依赖关系以及计算状态,以利用图模型中图节点之间的相互依赖关系处理各种复杂的业务流程的计算,即,可将本申请实施例的业务流程执行方法用在不同的业务场景中,可以增加业务处理流程的复用性。
图15是本申请的一个实施例的一种业务流程执行装置的结构示意图。请参考图15,在一种软件实施方式中,业务流程开发装置1600可包括:
初始化模块1510,基于业务流程对应的计算节点的依赖关系,初始化所述业务流程对应的图模型中图节点的计算状态和依赖关系,其中,所述图节点与所述计算节点一一对应,所述图节点的初始计算状态为未计算状态。
执行模块1520,当所述图模型中存在处于未计算状态的图节点,循环调用目标计算节点选择子模块1522、计算状态更新子模块1524和输出子模块1526,其中,
选择子模块,选择目标图节点对应的目标计算节点,并执行目标计算节点对应的处理逻辑,其中,所述目标图节点不依赖于处于未计算状态的图节点;
更新子模块,在所述目标计算节点执行完毕后,更新所述目标图节点的计算状态为已计算状态;
输出子模块,如果所述图模型中存在依赖于所述目标图节点的图节点,将所述目标计算节点执行后的结果输出到依赖于所述目标图节点的图节点对应的计算节点。
应理解,本申请实施例中,基于业务流程对应的计算节点的依赖关系,通初始化图模型中图节点的依赖关系以及计算状态,并在图模型中存在处于未计算状态的图节点时,循环选择不依赖于未计算状态图节点的图节点,并执行对应的计算节点的处理逻辑,从而实现业务流程的执行过程。如此,可以利用图模型中图节点之间的依赖关系处理各种复杂的业务流程的计算,即,可将本申请实施例的业务流程执行方法用在不同的业务场景中,可以增加业务处理流程的复用性。
可选地,参见图15,业务流程开发装置1500还可包括选择模块1630,用于从预设的计算节点数据库中选择业务流程对应的计算节点,其中,所述计算节点数据库存储着计算节点的处理逻辑和计算节点之间的依赖关系。
可选地,作为一个实施例,选择子模块1522具体可用于:选择第一图节点对应的第一计算节点,其中,所述第一图节点不依赖于所述业务流程中的其它图节点。
进一步地,选择子模块1522具体还可用于:从所述业务流程的计算节点中循环选择第二图节点对应的第二计算节点,其中,所述第二图节点依赖的图节点都处于已计算状态。
可选地,业务流程开发装置1500还可包括添加模块1540,从预设的计算节点数据库中选择业务流程新增的计算节点以加入到所述业务流程中。
可选地,业务流程开发装置1500还可包括删除模块1550,从所述业务流程的计算节点中删除指定计算节点。
相应地,初始化模块1510还可基于所述业务流程调整后的计算节点的依赖关系,重新初始化所述业务流程对应的图模型中图节点的计算状态和依赖关系;执行模块1520,当重新初始化的所述图模型中存在处于未计算状态的图节点,循环调用目标计算节点选择子模块1522、计算状态更新子模块1524和输出子模块1526,
应理解,所述图模型为有向无环图模型。
应理解,所述业务流程包括但不限于如下之一:
金融风险压力的测试流程;
共享单车使用情况的统计流程;
任务工单的管理流程。
图15的业务流程执行装置的具体实现可参考图1、图6、图7、图8、图13所示实施例,不再赘述。
总之,以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。