[0034] 以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
[0035] 在本发明的一种确定演化域的最小生成工作流网方法中,该方法包括:
[0036] S101,将初始化系统抽象为工作流网,确定与问题节点相对应的工作流网中的指定变迁;
[0037] S102,初始化所述工作流网为集合,并将所述指定变迁划分到所述集合中;
[0038] S103,遍历工作流网中所有变迁,逐一判断所述所有变迁是否对所述指定变迁具有引发完全依赖,当所述所有变迁中的一个变迁对所述指定变迁具有引发完全依赖,则将所述一个变迁划分到所述集合中;
[0039] S104,当所述集合满足工作流网的条件时,所述集合为最小输出工作流网;
[0040] 当所述集合不满足工作流网的条件时,在所述工作流网中添加虚拟节点以使得所述集合为最小输出工作流网。
[0041] 通过上述方法,本发明针对目前大规模软件系统的在线演化问题,如果对整个系统进行操作其演化过程必然会涉及到资源和时间的利用问题,本发明提出了一种确定软件演化域的最小生成工作流网的方法,找出所有需要处理的部分放入演化域内,不需要处理的部分划分出去,这样就可以控制用最小演化区域达到实现整个系统演化功能的作用,该种方法可以在用相同的演化模型条件下减小演化代价,缩短了演化的时间。
[0042] 该种方法,将不需要的变迁给划分出去,需要的变迁划分成所述集合,从而实现得到最小输出流网,减小了演化的代价,缩短了演化的时间。
[0043] 下面结合附图1和附图2对本发明进行进一步的说明,在本发明的一种具体实施方式中,通过一个网购案例来阐述一下最小生成工作流网工作的原理。
[0044] 在本发明的一种具体实施方式中,在步骤S104中,添加虚拟节点的方法包括:
[0045] 添加虚拟库所和虚拟弧,且所述虚拟库所通过所述虚拟弧指向所述工作流网中无后继库所的变迁节点使得所述集合为最小输出工作流网。
[0046] 在步骤S104中,添加虚拟节点的方法还包括:
[0047] S201,判断所述工作流网中是否存在无后继变迁的库所节点和/或无后继库所的变迁节点,
[0048] S202,当存在无后继变迁的库所节点且不存在无后继库所的变迁节点时,先添加第一虚拟变迁和与所述第一虚拟变迁相对应的第一虚拟弧使得所述无后继变迁的库所节点通过第一虚拟弧指向第一虚拟变迁;再添加第一虚拟库所和第二虚拟弧,使所述第一虚拟变迁通过所述第二虚拟弧指向所述第一虚拟库所;或
[0049] 当存在无后继库所的变迁节点且不存在无后继变迁的库所节点时,添加第二虚拟库所和与所述第二虚拟库所相对应的第三虚拟弧使所述无后继库所的变迁节点通过所述第三虚拟弧指向所述第二虚拟库所;或
[0050] 当存在无后继变迁的库所节点且存在无后继库所的变迁节点时,先添加第二虚拟变迁和与所述第二虚拟变迁相对应的第四虚拟弧使所述无后继变迁的库所节点通过所述第四虚拟弧指向所述第二虚拟变迁;再添加第三虚拟库所和与所述第三虚拟库所相对应的第五虚拟弧使所述无后继库所的变迁节点通过所述第五虚拟弧指向所述第三虚拟库所。
[0051] 在本发明中限制了最小工作流网必须是工作流网,在一般生成过程中可能会不满足工作流网条件,所以为了能满足最小工作流网是一个工作流网,需要添加虚拟节点构成工作流网,添加虚拟节点就是为了让生成工作流网满足工作流网的所有条件。
[0052] 在本发明的一种具体实施方式中,步骤S103判断所述所有变迁中的任意一个变迁是否对所述指定变迁具有引发完全依赖的步骤包括:
[0053] S301,记录任意一个变迁的k个可引发的前驱序列,其中k为自然数;
[0054] S302,判断所述指定变迁是否属于所有的所述可引发的前驱序列;
[0055] S303,当所述指定变迁属于所有的所述可引发的前驱序列时,则判断该变迁对所述指定变迁具有引发完全依赖。
[0056] 通过上述实施方式,可以实现判断任意一个变迁对所述指定变迁是否具有引发完全依赖。
[0057] 在本发明的一种具体实施方式中,步骤S103中,
[0058] 所述引发完全依赖可以包括:直接引发完全依赖或间接引发完全依赖。
[0059] 在本发明的一种具体实施方式中,步骤S104中,集合满足工作流网的条件包括:
[0060] 当所述工作流网中的任意一个库所中的所有输入变迁属于所述集合和所述工作流网中的任意一个弧中的所有输入节点和所有输出节点属于所述集合时,所述集合为最小输出工作流网。
[0061] 通过上述实施方式,可最大化的减少演化代价,通过判断任意一个输入变迁和任意一个输入节点或输出节点是否在集合中即可以判断所述集合是否是最小输出工作流网。
[0062] 在本发明的一种具体实施方式中,最优选地实施方法包括以下几个步骤:
[0063] 步骤1,初始化系统将其抽象为W(工作流网),确定指定问题节点对应的工作流网中的t(指定变迁);
[0064] 步骤2,初始化最小生成工作流网的S(初始集合),并将t划分到集合 S中;
[0065] 步骤3,遍历工作流网中所有变迁,根据定义2(具体定义如下文所示)、定义3(具体定义如下文所示)判断所有变迁中任意一个变迁是否对t具有引发完全依赖;当其对t具有完全依赖,转到步骤4,否则转到步骤5。
[0066] 步骤4,将该变迁划分到集合S中。
[0067] 步骤5,跳过该变迁继续遍历,转到步骤3。
[0068] 步骤6,判断工作流网是否遍历结束,若遍历结束,转到步骤7,否则转到步骤3。
[0069] 步骤7,根据定义4(具体定义如下文所示)判断集合S是否满足最小生成工作流网,若满足转到步骤8,否则,转到步骤9。
[0070] 步骤8,输出最小输出工作流网。
[0071] 步骤9,根据定义4(具体定义如下文所示)添加虚拟节点并转到步骤7。
[0072] 其中上述过程中用到的定义可参考下面的定义:
[0073] 定义1,可引发前驱序列:在工作流网中,所有在Ti节点之前引发的变迁节点组成的最小序列称为Ti的可引发前驱序列,所谓最小序列就是当序列中任一节点不引发时,Ti都不能引发。
[0074] 定理1,在工作流网中,对任意一个节点Ti,设其节点可引发前驱序列有k个,分别为N1,N2......Nk,k为正整数,若变迁节点Tj∈N1且Tj∈N2.... 且Tj∈Nk,则Ti对Tj直接或间接完全依赖。
[0075] 定义2,直接引发完全依赖:对于某一服务组合实例的已执行活动序列δ中的任意两个活动δ[i]和δ[j],若δ[j]的发生只有建立在δ[i]发生的基础上,则称δ[j]完全依赖于δ[i]。即有且仅有活动δ[i]发生,活动δ[j]才会发生。记作:δ[i]→δ[j]。
[0076] 定义3,间接引发完全依赖:对于某一服务组合实例的已执行活动序列δ中的3个活动δ[i],δ[j],δ[k],其中i
[0077] 综合定义2和定义3可知间接引发完全依赖具有传递性,而直接引发完全依赖不具有传递性。
[0078] 定义4,设S-WFN(P,T,F,t)是最小生成工作流网则满足以下三个性质:
[0079] 1,S-WFN∈WFN,最小工作流网是一个工作流网;
[0080] 2,S-WFN是根据某一特定变迁节点T生成;
[0081] 3,对任意变迁Ti属于原工作流网WFN,若Ti对T具有引发完全依赖,则Ti属于S-WFN,否则Ti不属于S-WFN,对原工作流网中任意库所P,若 P所有的输入变迁都属于S-WFN,则P属于S-WFN,否则P不属于S-WFN。对于原工作流网中任意弧F,若F的输入节点和输出节点都属于S-WFN,则 F属于S-WFN,否则F不属于S-WFN。
[0082] 综上所述,性质1中限定了此网必须是一个工作流网,但在一般生成过程中可能会不满足工作流网条件,所以为了能满足性质1,需要添加虚拟节点构成工作流网。
[0083] 在本发明中添加虚拟节点是为了让生成工作流网满足工作流网的所有条件,首先添加一个虚拟库所Pn和虚拟弧Fn,使Pn通过Fn指向T,然后判断此时是否满足最小工作流网的条件,若满足则此时的网就是要找的最小生成工作流网,若不满足,判断网中是否有无后继的变迁节点或无后继的库所节点,分为以下三种情况进行添加:当只有无后继变迁的库所节点,则添加一个Tv(虚拟变迁)和相应的Fvi(虚拟弧)使得这些库所节点通过Fvi 指向Tv,再添加一个Pv(虚拟库所节点)和Fv(虚拟弧),使Tv通过Fv 指向Pv;当只有无后继库所的变迁节点,则添加一个Pv(虚拟库所)和相应的Fvi(虚拟弧),使得这些变迁通过Fvi指向Pv;当有无后继变迁的库所节点也有无后继库所的变迁节点,则首先添加一个Tv(虚拟变迁)和相应的Tvi(虚拟弧),使得无后继变迁的库所节点通过Tvi指向Tv,然后再添加一个Pv(虚拟库所)和相应的Tvj(虚拟弧),使得所有无后继库所的变迁节点通过Tvj指向Pv。
[0084] 另外,通过上面的介绍,下面结合附图2将本发明用于一个这个网购系统,在该网购系统中,包括:登陆,选择商品,接着直接购买或者加入购物车,对加入购物车的商品进行结算,然后选择支付方式,是在线支付还是线下支付,线下支付选择提货方式,自提还是送货上门,选择网点,积分担保,确认地址,确认订单,在线支付选择,支付宝支付还是网银支付,获取积分后记录用户的偏好,最后确认收货,再收货。具体操作方式参见图2,涉及到了很多操作步骤,但并不是所有的操作步骤都有关联性,正常与否并不影响其他的操作正常进行;剩下的节点正常工作。在本例中,假设节点支付宝支付出现了故障,即支付宝支付出现了问题,这时如果对整个系统进行停机修复也能达到系统在线演化的目的,但资源与时间浪费较大。通过上述模型与算法可知,只需要找到与支付宝支付有数据关联的节点即可,所以通过寻找最小生成工作流网找出和支付宝支付有关联的节点。根据上述最小生成工作流网的定义,可以发现登录 支付宝满足条件,即支付宝支付与登录 支付宝构成的工作流网就是要找的最小生成工作流网,除了最小生成工作流网之外的工作流网其他部分正常工作;在系统上中其他的节点出现了问题也可以同样用找最小生成工作流网的方法将影响范围化到最小。该方法可以将系统出现故障所带来的损失降低到最低。
[0085] 以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
[0086] 另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
[0087] 此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。