Uml 如何表示迭代展开区域中的中断?

Uml 如何表示迭代展开区域中的中断?,uml,diagram,activity-diagram,Uml,Diagram,Activity Diagram,我想在UML2.4.1中表示迭代扩展版本的中断 我试着这样做: 将退出箭头指向区域: 不带退出箭头: 具有结束流: 什么是正确的约定?它没有约定。这完全取决于你想说什么 第一个图表不正确,因为Add不会导致任何结果。您需要将其连接到任何合理的位置,但不要将其“挂在空中” 第二个甚至更多,原因是两倍 第三个与第一个相同。您可以使用最终流程,而不是将控制权转移到扩展节点。如果您有很多这样的临时出口的复杂流,您可以这样做。对于这里的简单情况,您将不需要它 请注意,也可以在区域内使用首字母。如果您

我想在UML2.4.1中表示迭代扩展版本的中断

我试着这样做:

将退出箭头指向区域:

不带退出箭头:

具有结束流:


什么是正确的约定?

它没有约定。这完全取决于你想说什么

第一个图表不正确,因为
Add
不会导致任何结果。您需要将其连接到任何合理的位置,但不要将其“挂在空中”

第二个甚至更多,原因是两倍

第三个与第一个相同。您可以使用
最终流程
,而不是将控制权转移到扩展节点。如果您有很多这样的临时出口的复杂流,您可以这样做。对于这里的简单情况,您将不需要它

请注意,也可以在区域内使用
首字母
。如果您有多个输入,并且希望它们从内部的同一点开始,则可以使用该选项

p.S.:我在图中标出错误时忽略了你的问题。断开状态可通过过渡中的防护装置显示,该防护装置可导致
最终流量
,或连接到输出引脚

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

这将抢占式循环视为异常

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

在上层建筑中,我发现:

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

这证实了我从p.S.

看到的第一个陈述:

第一个和第二个图表:
请参阅第14.3.5节“示例”,据我所知,没有退出状态的状态是包含它的子机/复合状态的终端状态

第三个图表: 你说的是中止/终止vs最终状态。不同的事情会发生。见第338页。我想你指的是预期的最终状态,不是错误的,所以避免使用带有X的圆圈。不允许正常执行完成

“terminate–输入terminate伪状态意味着 状态机的执行立即终止 StateMachine不退出任何状态,也不执行任何退出 任何正在执行的doActivity行为都是自动执行的 中止。输入终止伪状态相当于调用 “反对行动。”


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

OP的问题涉及活动图,而不是状态机。我不确定第14.3.5节是否是好的,它涉及到状态机,并且问题似乎与活动图有关异常的使用可能是一个争论,我们是否使用异常来处理真正的异常(真实问题或意外事件)或者我们使用异常来管理逻辑?这是一个问题,通常,在我的公司,我们只有在遇到麻烦时才使用异常。@granier你说:这是有争议的。就像很多事情一样,你可以在如何使用它的问题上同意域特定的约定。当查看不同的语言时,你会发现异常也在这两种上下文中使用。有些把它们当作处理某些事情的“惯常方式”,而在其他语言中,你必须在使用圣经之前对圣经发誓。