Uml 2.5 Activity 图中标记的用途

purpose of tokens in Activity diagrams of Uml 2.5

UML specs 2.5 说:

The effect of one ActivityNode on another is specified by the flow of tokens over the ActivityEdges between the ActivityNodes.

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

中明确建模

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

to capable the diagram to describe it may wait for other token or refuse flow instead of entering next node immediately

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

Activity 图和状态机均源自 Petri nets。给出完整的描述会破坏这个答案,所以我试着把它归结起来。

令牌可以说是一点信息。它是原子的,不能拆分。相反,它是从上下文中定义的事件中的 "big bang" 创建的(通常用大黑点表示)。它沿着 InformationFlow 个连接器(最终在必须等待的地方被守卫阻挡)传播到节点。节点有 1 到许多 InformationFlow 个连接器。当令牌到达其所有传入 InformationFlow 连接器时,节点变为活动状态。当节点完成时,它会沿其所有传出 InformationFlow 连接器发送单个令牌(至少 UML 操作会这样做,这称为隐式分叉)。有一些特殊节点,例如 fork 和 merge,它们的行为有点不同(请参阅规范)。最后,代币会落入水槽(通常是一个圆圈,里面有一个圆点),它们在出现时就消失了。

因此,从一个起始节点出现的单个令牌(这里不打算解释 details/issues 多个起点)开始,该令牌在网络中传播,最终创建其他令牌,所有令牌都在循环,直到(通常)所有令牌已经消失了。在此期间,据说网络处于活动状态。

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