【发布时间】:2015-07-06 14:15:16
【问题描述】:
我想代表 UML 2.4.1 中迭代扩展版本的中断。
我试试这个:
带退出箭头的区域:
没有退出箭头:
结束流程:
什么是正确的约定?
【问题讨论】:
标签: uml diagram activity-diagram
我想代表 UML 2.4.1 中迭代扩展版本的中断。
我试试这个:
带退出箭头的区域:
没有退出箭头:
结束流程:
什么是正确的约定?
【问题讨论】:
标签: uml diagram activity-diagram
没有任何约定。这完全取决于你想说什么。
第一张图是不正确的,因为Add 不会导致任何结束。您需要将它连接到任何合理的地方,但不要让它“悬空”。
第二个甚至更多,原因是两倍。
第三个和第一个一样。您可以使用Flow Final,而不是将控制权转移到扩展节点。如果您有许多此类临时出口的复杂流程,您会这样做。对于这里的简单情况,您将不需要它。
请注意,也可以在区域内使用Initial。如果您有多个输入并希望它们从内部的同一点开始,您将使用它。
P.S.:我在查看图表中的错误时忽略了您的问题。中断条件可以通过转换中的守卫来显示,该转换导致Flow Final 或连接到输出引脚。
或者,要中断处理您通过的所有集合元素,您可以这样做:
这将抢占式循环视为异常。
我还要说一个简单的注释就足够了,除非你想从你的模型中生成代码。
在上层建筑中我发现了一点:
当 ExpansionRegion 完成所有扩展执行时,它会在从这些节点传出的任何 ActivityEdge 上的输出 ExpansionNodes 上提供输出集合(在 ExpansionRegion 执行期间不提供)。如果 ExpansionRegion 在其中立即包含一个 ActivityFinalNode,那么,如果 ActivityFinalNode 在任何扩展执行中接受一个令牌,则所有当前正在进行的扩展执行都将终止,并且 ExpansionRegion 作为一个整体完成其执行。在这种情况下,仍会从输出 ExpansionNodes 提供输出集合,尽管这些集合可能只是部分填充。
这证实了我在 P.S. 的第一句话
【讨论】:
看着OMG UML spec:
第一张和第二张图:
请参阅14.3.5 示例部分,据我了解,没有退出状态的状态是包含它的子机/复合状态的终端状态。
第三张图: 你说的是中止/终止与最终状态。可能会发生不同的事情。请参阅第 338 页。我认为您的意思是预期的最终状态,而不是错误,因此请避开带有 X 的圆圈。不允许正常执行完成。
"terminate – 进入终止伪状态意味着 StateMachine 的执行立即终止。这 StateMachine 不退出任何状态,也不执行任何退出 行为。任何正在执行的 doActivity 行为都会自动 中止。进入一个终止伪状态相当于调用一个 DestroyObjectAction。”
总结:这是主观的,但线条很重要,因为行为可以附加并且可以命名。如果我们采用规范中的 ATM 示例 (336-340)pg,它们已经存在于许多 UML 版本中,那么我会说离开它,如果需要将其连接到边缘/出口点,或带有填充的最终状态圆复合状态<<iterative>>内的内圈。现在我不确定您使用的是什么工具,但这可能值得考虑。不确定更广泛的背景是什么。
【讨论】: