3

我想代表 UML 2.4.1 中迭代扩展版本的中断。

我试试这个:

使用该区域的退出箭头:

使用退出箭头打破迭代扩展区域

没有退出箭头:

在没有退出箭头的迭代扩展区域中中断

有一个结束流:

在此处输入图像描述

什么是正确的约定?

4

2 回答 2

1

没有约定。这仅仅取决于你想说什么。

第一张图是不正确的,因为Add它不会导致任何结束。您需要将它连接到任何合理的地方,但不要让它停留在“空中”。

第二个甚至更多的两倍的原因。

第三个和第一个一样。您可以使用Flow Final代替将控制权转移到扩展节点。如果您有许多此类临时出口的复杂流程,您会这样做。对于这里的简单情况,您将不需要它。

请注意,也有可能Initial在该地区内使用。如果您有多个输入并希望它们从内部的同一点开始,您将使用它。

PS:我在关注图中的错误时忽略了你的问题。中断条件可以通过转换中的保护来显示,该转换导致Flow Final或连接到输出引脚。

或者,要中断处理您通过的所有集合元素,您可以执行以下操作:

扩展与中断

这将抢占式循环视为异常。

我还要说一个简单的注释就足够了,除非你想从你的模型中生成代码。

在上层建筑中我发现了一点:

当 ExpansionRegion 完成所有扩展执行时,它会在从这些节点传出的任何 ActivityEdge 上的输出 ExpansionNodes 上提供输出集合(在 ExpansionRegion 执行期间不提供)。如果 ExpansionRegion 在其中立即包含一个 ActivityFinalNode,那么,如果 ActivityFinalNode 在任何扩展执行中接受一个令牌,则所有当前正在进行的扩展执行都将终止,并且 ExpansionRegion 作为一个整体完成其执行。在这种情况下,仍然从输出 ExpansionNodes 提供输出集合,尽管这些集合可能只被部分填充。

这证实了我在 PS 中的第一个声明

于 2015-07-06T18:15:42.590 回答
0

查看OMG UML 规范

第一张和第二张图:
请参阅第14.3.5 节示例,据我了解,没有退出状态的状态是包含它的子机/复合状态的终端状态。

第三张图: 您说的是中止/终止与最终状态。可能会发生不同的事情。请参阅第 338 页。我认为您的意思是预期的最终状态,而不是错误,因此请避免使用带有 X 的圆圈。不允许正常执行完成。

"terminate - 进入一个终止伪状态意味着StateMachine的执行立即终止。StateMachine不退出任何状态,也不执行任何退出行为。任何正在执行的doActivity行为都会自动中止。进入一个终止伪状态相当于调用一个销毁对象动作。”

总结: 这是主观的,但线条很重要,因为行为可以附加并且可以命名。如果我们在规范中采用 ATM 示例 (336-340)pg,它们已经存在于许多 UML 版本中,那么我会说离开它,如果需要将其连接到边缘/出口点,或带有填充的最终状态圆内圈内复合状态<<iterative>>。现在我不确定您使用的是什么工具,但这可能值得考虑。不确定更广泛的背景是什么。

于 2015-07-07T03:12:18.930 回答