Page 170 - 《软件学报》2021年第5期
P. 170

1394                                     Journal of Software  软件学报 Vol.32, No.5,  May 2021

                    输入:过程模型 p=(C,A;F,M 0 ),a 1 ,a 2 需要重构的活动,◎是 a 1 和 a 2 间的关系.
                    输出:重构后的过程模型 p′.
                    步骤:
                    reconstruction (p,◎,a 1 ,a 2 )
                    1.   newa=◎(a 1 ,a 2 )   //newa 和 newF 分别代表新增的活动和流关系集
                    2.   delA={a 1 ,a 2 }   //delA、delC 和 delF 分别代表需要删除的活动集、条件集和流关系集
                    3.   delC={c|c∈p.C and·c≠∅∧c·≠∅∧·c⊆delA∧c·⊆delA∧c∉p.M 0 }
                    4.   delF={e 1 ×e 2 |e 1 ×e 2 ∈p.F and {e 1 ,e 2 }∩(delA∪delC)≠∅}
                    5.   if ◎==∝ then
                    6.        newF={newa×c|c∈((a 1 ·⊆delC?a 2 ·:a 1 ·)−delC)}∪{c×newa|c∈(·a 1 −delC)}
                    7.   else then
                    8.        newF={newa×c|c∈((a 1 ·+a 2 ·)–(·a 1 +·a 2 )–delC)}∪{c×newa|c∈((·a 1 +·a 2 )–(a 1 ·+a 2 ·)–delC)}
                    9.   end if
                    10.  return p′=(p.C–delC,p.A–delA+{newa};p.F–delF+newF,p.M 0 )
                    表 2 中展示了一个 TEPM 转化为行为等价过程树生成的案例,同时该例也体现了算法对复杂结构的有效处
                 理.表 2 中第 1 列代表了当前的循环次数,第 2 列代表了该次循环中的模型,第 3 列是其对应的展开网,第 4 列是
                 代表需要进行重构的活动.第 4 列中显示了需要进行重构的活动,并不等于该次循环只检测出了这些活动,例如
                 在第 8 次迭代中,可以同时判断出活动∝(→(b,→(×(||(e,f ),×(c,d)),i)),×(g,h))与活动 j 之间的顺序关系,和活动 a 与
                 活动∝(→(b,→(×(||(e,f),×(c,d)),i)),×(g,h))之间的顺序关系,但是这两种关系显然只能选择一个进行重构.
                                              Table 2    Process tree generation case
                                                   表 2   过程树生成案例
                   循环                 Petri 网                             展开网                   重构活动



                                                                                                 ||(e,f ),
                    1                                                                            ×(c,d),
                                                                                                 ×(g,h)




                                                                                                ×(||(e,f ),
                    2
                                                                                                 ×(c,d))


                                                                                               →(×(||(e,f ),
                    3
                                                                                                ×(c,d)),i)


                                                                                                →(b,→
                    4                                                                           (×(||(e,f ),
                                                                                                ×(c,d)),i))
   165   166   167   168   169   170   171   172   173   174   175