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

朱锐  等:基于完全有限前缀展开的行为等价过程树生成算法                                                    1393


                 满足下述条件时,RM 中的活动关系不冲突.
                    (1) a 1 ,a 2 无关系或只存在一种关系.
                    (2)  当→(a 1 ,a 2 )存在时,a 1 和 a 2 与任意 a∈p.A∧a≠a 1 ∧a≠a 2 间可以存在的关系只有→(a,a 1 )或→(a 2 ,a).
                    (3)  当∝(a 1 ,a 2 )存在时,a 1 和 a 2 与于任意 a∈p.A∧a≠a 1 ∧a≠a 2 之间不能存在迭代关系.
                    顺序关系、迭代关系是有序的.顺序关系只要一次遍历,就可以抽取所有活动的顺序关系,但当多个活动重
                 构后,新的活动汇集了旧活动的直接前驱,可能出现新的顺序关系.






                                              Fig.7   Activity relation reconstruction
                                                    图 7   活动关系重构

                    接下来需要选择优先重构的关系,将两个活动重构为一个过程树后,会丢失一部分结构信息.活动重构后会
                 缺少部分结构信息,再次抽取新的关系时并不会和其他原有关系产生冲突,甚至重构前活动和原有关系的活动
                 的冲突会消失,因此需确定活动关系间优先级,以确保活动重构后不会消除被重构相对活动与其他活动关系.
                    定义 20(活动关系优先级定义).  对于本文中使用 4 种描述行为关系,其优先级为:顺序(→)>选择(×)>并发
                 (||)>迭代(∝).
                    首先,优先级最高的是顺序关系,从图 7 中可以看出顺序关系重构后,活动 t 1 和活动 t 2 之间的库所和流关系
                 被消除,t 1 和 t 2 重构后与外部活动的关系并未改变,因此顺序关系的优先级最高.其次是选择关系,选择关系重构
                 后,活动 t 1 和活动 t 2 与外部活动之间的流关系被合并,因此选择关系的优先级低于顺序关系.接下来是并行选择
                 关系,并行关系重构后,不仅活动 t 1 和活动 t 2 与外部活动之间的流关系被合并,与活动 t 1 和活动 t 2 相邻的库所也
                 被合并,因此并行关系的优先级低于选择关系.最后对于迭代关系,该关系会导致一些活动重复执行,重构迭代
                 关系时会合并不同方向的流关系,因此将迭代关系的优先级最低.
                    过程模型重构思路如图 7 所示,它删除原过程模型中的某一组活动 a 1 和 a 2 ,添加了重构后的新活动 newA,
                 这个新活动 newA 用活动 a 1 和 a 2 的前缀表达式命名.然后根据更新后的活动集合,删除了一些不会影响活动间
                 关系的条件.其次根据更新后的活动集合和条件集,来决定保留哪些流关系,注意到虽然新活动 newA 汇集了旧
                 的活动 a 1 和 a 2 的所有流关系,但是这些流关系仍然需要判断是否需要保留.最后,返回新的过程模型.
                    过程模型重构算法 reconstruction 的伪代码如算法 2 所示,其主要步骤可分为 5 步,具体如下.
                    第 1 步.  构造新活动 newa,构造需要删除的活动集 delA,将活动 a 1 和 a 2 加入 delA.
                    第 2 步.  构造需删除的条件集 delC,加入其中的条件需要满足:(1)  该条件同时连接了 a 1 和 a 2 ,且不与其他
                 活动产生流关系;(2)  该条件不能是初始情态.其中,(1)是为了获得仅和 a 1 和 a 2 产生联系的条件;(2)是针对一些
                 特殊情况,例如在迭代关系中,c 可能作为一个初始情态,但同时又不与其他活动产生流关系仅连接 a 1 和 a 2 .
                    第 3 步.  构造需删除的流关系集 delF,将与 delA 和 delC 相关的流关系加入 delF 中.
                    第 4 步.  构造流关系集 newF,有选择的令 newa 继承与 a 1 和 a 2 相关的流关系,将其加入 newF 中.这一步
                 分为两种情形:(1)  当前重构的关系是迭代关系时,只继承与 a 1 相关的流关系,但要注意到有时会出现的 a 1 ·属
                 于 delC 情况,例如表 4 中的第 16 个案例,这时为保证 newF 存在后继,需新建 newa 到 a 2 ·的流关系;(2)  当前重
                 构的关系不是迭代关系时同时继承与 a 1 和 a 2 相关的流关系.但在某些结构中 a 1 和 a 2 可能同时和某个条件产
                 生不同向的流关系,都保留会使 newa 和该条件产生双向流关系,因此需排除这种情况.另外两种情形都要排
                 除 delC 的影响.
                    第 5 步.  在原过程模型中删除 delA、delC 和 delF,并增加 newa 和 newF 从而构建新的过程模型.
                    算法 2.  过程模型重构算法.
   164   165   166   167   168   169   170   171   172   173   174