【问题标题】:purpose of tokens in Activity diagrams of Uml 2.5Uml 2.5 活动图中标记的用途
【发布时间】:2018-09-04 05:27:18
【问题描述】:

UML specs 2.5 说:

一个ActivityNode对另一个ActivityNode的影响由流程指定 tokens 在 ActivityNode 之间的 ActivityEdges 上。

但是上面的定义是模糊的;特别是因为令牌没有在 Activity 中显式建模

阅读15.2.3.3 Activity Edges 部分规范后,我认为它们的目的是:

能够用图表来描述 它可能会等待其他令牌 或拒绝流动 而不是立即进入下一个节点

这是真的吗?这也是令牌的唯一目的吗?如果是真的,为什么我们不使用带有条件的decision nodeend flow 节点来显示该条件下的拒绝流,而不是tokenguards?或者将信息分组到更大的 objects 节点 中,而不是使用 weight

【问题讨论】:

  • 我在规范中找不到第二个引用。你用的是哪一个?什么页面和段落?
  • @ThomasKilian 正如我在问题中提到的,第二个引用块是“我认为这就是令牌的目的”。这不是规范。
  • 哈哈。愚蠢的我。稍后我会写一个解释。

标签: uml activity-diagram


【解决方案1】:

活动图和状态机都源自Petri nets。给出一个完整的描述会破坏这个答案,所以我试着把它归结为。

可以说,令牌是一些信息。它是原子的,不能拆分。相反,它是由上下文中定义的事件的“大爆炸”创建的(通常由一个大黑点显示)。它沿着InformationFlow 连接器(最终被必须等待的守卫阻止)传播到节点。节点有 1 到多个 InformationFlow 连接器。当所有传入的InformationFlow 连接器都有一个令牌到达时,一个节点将变为活动状态。当节点完成时,它会沿着其所有传出的InformationFlow 连接器发送单个令牌(至少 UML 操作会这样做,这称为隐式分叉)。有一些特殊的节点,比如 fork 和 merge,它们的行为有点不同(参见规范)。最后,令牌可以落入水槽(通常是一个内部有一个胖点的圆圈),在那里它们一出现就消失了。

因此,从一个起始节点出现的单个令牌(此处不解释多个起点的细节/问题)开始,该令牌在网络中传播,最终创建其他令牌,所有令牌都在循环,直到(通常)所有令牌都到达下沉。在此期间,网络被认为是活跃的。

tl;dr 不,你的假设是不正确的。

【讨论】:

  • 感谢您的回复。在您的回答中,“顶点”一词的意思是“边”吗?因为在stackoverflow.com/a/14111726/1043882 中描述的“顶点”和“节点”之间似乎没有区别
  • 是否有其他节点,如“fork”和“merge”,在退出之前不等待所有个传入边到达?
  • 呃。我会检查顶点/边缘(英语不是我的母语)。我在节点之间使用顶点连接。这可能是个假朋友:-/
  • fork/merge 的意思并不是他们不等待。只有合并不等待。它是唯一具有此目的的。 Fork/join 再次不同。如果您需要,我可以在一个新问题中解释这一点。
  • 我改变了措辞。我现在改用InformationFlow。还有ObjectFlow 连接器,它们的行为相似,但有细微的差别,它们看起来一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
相关资源
最近更新 更多