首页 > 解决方案 > 具有多个初始节点的活动:是否必须启动所有节点才能开始活动?

问题描述

如果活动有一个初始节点和一个输入参数节点怎么办?活动是否可以在输入节点有可用对象之前开始?在来自https://de.wikipedia.org/wiki/Aktivit%C3%A4t_(UML)的示例中,“煮水 (Wasserkochen)”活动是否可以开始,而没有任何意大利面条可用? 在此处输入图像描述

标签: uml

解决方案


您的示例中的活动将在开始节点发出令牌后开始。意大利面条是否已经存在于对象节点是无关紧要的。仅当满足启动条件并且启动节点已发出令牌时,活动才会从第一个动作开始。只有这样,“Spaghetti einfüllen”动作才会等待意大利面条 - 或者如果已经存在则使用它们。

现在,为什么“Spaghetti einfüllen”动作会挂在不存在的意大利面上?简单地说,它有两个必须到达才能启动的令牌。一个是来自“Wasser kochen”,另一个是对象“Spaghetti [roh]”。只有当两者都存在时,动作才会开始。当然,如果只有意大利面,那么前一个动作“Wasser kochen”的第二个令牌也必须在那里。

您可以在 UML 2.5 第 441 页的第 16.3.2.1 段中阅读有关操作何时开始或不开始的所有血腥细节。

此外,正如@GeertBellekens 指出的那样,第 15.5.3.1 页有第 15.5.3.1 段。401 规定

在所有传入的 ControlFlow(如果有)都提供令牌之前,ExecutableNode 不应执行。也就是说,传入的控制流上有一个隐式连接。特定种类的 ExecutableNodes 可能有额外的先决条件,在节点可以执行之前必须满足这些先决条件。


推荐阅读