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. 过程模型重构算法.