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))