统一建模语言活动图中的Join和Merge有什么区别。举个例子来更清楚地理解。
答案 0 :(得分:7)
加入节点(请参阅reference 1):
Join节点是一个控制节点,具有多个传入边和一个 传出边缘,用于同步传入的并发流。 引入加入节点支持活动中的并行性。
合并节点(请参阅reference 2):
合并节点是一个将多个传入汇集在一起的控制节点 备用流以接受单个传出流。没有加入 令牌。合并不应用于同步并发流。
例如,如下图所示:
在分叉后使用决策,决定之后的两个流程需要在进入连接之前合并为一个。
为什么?:否则,联接将等待两个流程。
所以,Activity 2
和Activity 3
是我们的备用流程,只有其中一个会到达。并且他们不同步传入。
但是,Concurrent_Activity
和Activity 1
与Activity 2
之间的决策结果(合并到一个输出中)是同步传入的并发流。加入等待执行并继续。
答案 1 :(得分:3)
详细说明@ Gholamali-Irani的回答:活动图来自Petri nets。简而言之,你必须想象一个从一个初始起始点(胖点)开始的“令牌”。令牌沿着路径行进,直到它在其中一个(圆圈点)终端中消失(或者UML允许在没有外出路径的动作中)。 fork节点会将该单个令牌乘以与其具有传出路径一样多的令牌(UML也有一个隐式派对,用于具有多个未受保护的传出路径的操作)。因此,这些多个令牌独立行进,直到它们如上所述消失或者它们到达具有多个进入路径的连接(或动作)。这里令牌等待直到所有路径都被一个令牌馈送。然后将这些多个令牌合并为一个像往常一样的单个令牌。
使用此规则集,您可以为任何复杂的并发网络建模。