UML specs 2.5
说:
一个ActivityNode对另一个ActivityNode的影响由 在活动节点之间的活动边缘上 令牌 。
但是上面的定义是模糊的;特别是因为令牌没有在活动中明确建模。
阅读规范的15.2.3.3 Activity Edges
部分后,我认为它们的目的是:
使图能够描述 它可能会等待其他令牌 或拒绝流 而不是立即进入下一个节点
是真的吗?也是令牌的唯一目的吗?如果是真的,为什么我们不使用带有条件的decision node
和end flow
节点而不是token
和guard
来显示在该条件下的拒绝流?还是将信息分组到更大的对象节点中,该节点携带所有必需的数据,而不是使用 weight ?
答案 0 :(得分:2)
活动图和状态机均源自Petri nets。提供完整的说明会打击这个答案,所以我尝试将其归结为一个答案。
令牌可以说是一些信息。它是原子的,无法拆分。而是从上下文中定义的事件的“大爆炸”创建的(通常以大黑点显示)。它沿着InformationFlow
连接器行进(最终被必须等待的守卫阻挡)到达节点。节点具有1到许多InformationFlow
连接器。当节点的所有传入InformationFlow
连接器都到达令牌时,该节点将变为活动状态。节点最终确定时,它将沿其所有传出的InformationFlow
连接器发送单个令牌(至少UML操作会这样做,这称为隐式分叉)。有一些特殊的节点(例如fork和merge),它们的行为有所不同(请参见规格)。最终,令牌会掉入一个水槽(通常是一个内部带有胖点的圆圈),在那里它们会随其消失而消失。
因此,从一个起始节点出现的单个令牌(此处将不解释多个起始点的细节/问题),该令牌在网络中传播,最终创建了所有流通的令牌,直到(通常)所有令牌都流向了下沉。在此期间,网络被认为是活动的。
tl; dr 不,您的假设不正确。