【发布时间】:2018-01-07 10:34:49
【问题描述】:
统一建模语言活动图中的 Join 和 Merge 有什么区别。举个例子让理解更清楚。
【问题讨论】:
标签: uml activity-diagram
统一建模语言活动图中的 Join 和 Merge 有什么区别。举个例子让理解更清楚。
【问题讨论】:
标签: uml activity-diagram
加入节点(见reference 1):
Join 节点是一个控制节点,它有多个传入边和一个 传出边缘,用于同步传入并发流。 引入连接节点以支持活动中的并行性。
合并节点(见reference 2):
Merge 节点是一个控制节点,它汇集了多个传入的 交替流接受单个传出流。没有加入 令牌。合并不应用于同步并发流。
例如如下图:
在分叉之后使用决策,从决策出来的两个流需要合并为一个,然后才能加入。
为什么?:否则,连接将等待两个流。
所以、Activity 2 和Activity 3 是我们的备用流程,并且只有其中一个会到达。而且它们不同步传入。
然而,Concurrent_Activity 和Activity 1 和Activity 2 之间的决策结果(合并为一个输出)是同步传入的并发流。加入等待两者执行并继续。
【讨论】:
详细说明@Gholamali-Irani 的回答:活动图源自Petri nets。简而言之,您必须想象一个从一个初始起点(那个胖点)开始的单一“令牌”。令牌沿着一条路径行进,直到它消失在那些(带圆圈的点)最终终端之一(或 UML 允许在没有传出路径的操作中)。分叉节点会将单个令牌乘以与它具有传出路径一样多的令牌(UML 还具有用于具有多个未受保护的传出路径的操作的隐式分叉)。因此,这些多个令牌独立传播,直到它们像上面描述的那样消失,或者它们到达具有多个进入路径的连接(或动作)。在这里,令牌一直等到所有路径都输入了一个令牌。然后将这些多个令牌合并为一个像往常一样传播的单个令牌。
使用此规则集,您可以对任何复杂的并发网络进行建模。
【讨论】: