【问题标题】:UML Exception Handler NotationUML 异常处理程序符号
【发布时间】:2020-08-21 08:54:58
【问题描述】:

UML 活动图中异常处理程序的符号是什么?仅仅是闪电吗?或者更多?

根据规范v2.5.1第404页:

通过从protectedNode的边界到ExceptionHandler边界上的一个小方块绘制一个“闪电”符号来显示一个ExceptionHandler。

对我来说,这听起来像是一种递归解释。

根据抽象语法(第 403 页),异常处理程序是其受保护节点的一部分,并与 handlerBody (ExecutableNode)、exceptionInput (ObjectNode) 和 exceptionTypes (Classifier) 相关联。

我的理解是,异常处理程序只是闪电。 handlerBody、它的 objectNode 和 protectedNode 是使用自己的符号的独立实体。

有人能澄清一下吗?

【问题讨论】:

  • 您可以向 OMG 发送错误报告。我过去就是这样做的。与 Sparx 不同,您可以看到错误列表。但就像 Sparx 一样,他们的工作进展似乎很糟糕->0

标签: uml notation activity-diagram exceptionhandler


【解决方案1】:

规范中的措辞有时令人困惑。闪电是一个中断流,处理程序是一个ExecutableNode。规范中有很多示例(UML 2.5 的第 403 页)

您需要四件事来显示 AD 中的异常处理:

  • 一些Action(我省略了来自/到其他操作的控制流)
  • InterruptibleActivityRegion(虚线边界)
  • ExceptionHandlerObjectNode 接受异常
  • 还有InterruptFlow(用螺栓显示)

你只能让螺栓离开可中断区域。并且像通常的对象流一样,您可以在该螺栓上附加防护装置。

为了显示异常处理的详细信息,您可以将调用行为放在处理程序中。

要指定异常类型,您可以按照 p 上的规范进行操作。 UML 2.5 的 403:

【讨论】:

  • 您的图片和措辞表明您正在使用 Enterprise Architect,这正是我困惑的根源,因为这些概念似乎与规范不匹配。在InterruptibleActivityRegion 上下文中的InterruptFlow 匹配它的interruptingEdge 属性(仍然键入ActivityEdge),但似乎不一定属于异常处理程序。如果异常处理程序是标记为ExceptionHandler1 的节点,那么如何指定handlerBody?您在哪里指定异常类型?
  • ExceptionHandler 具有 interruptingEdge 所在的输入引脚,并且异常类型在那里传递。不过我是凭记忆写的。
  • ExceptionHandler 是一个 ExecutableNode。就在上面的章节中。 15.5
  • 我在当前版本(v2.5.1)中找不到这条信息。根据第 15.7.13.3 节,ExceptionHandler 是 Element 的一个特化。 ExecutableNode ist Action 的唯一特化,见 15.7.14.4
  • 哪一块?最后一张图? 2.5.1 中还有 2 页。
【解决方案2】:

你说得对,对我来说,抽象语法似乎比描述更清楚。

异常处理程序可能看起来像一个边缘。 它由其源(即异常处理程序的 protectedNode)拥有,并在异常处理程序案例中引用其目标,即异常输入(由 handlerBody 拥有)。

当然,在大多数情况下,protectedNode 和 handlerBody 是两个不同的可执行节点,具有自己的符号(结构化活动、操作等)。

最后一点是 exceptionType 分类器,它是对模型上任何分类器的引用。

希望它能澄清事情。 EBR

【讨论】:

    【解决方案3】:

    你是对的 - ExceptionHandler 是一道闪电。

    根据下面的抽象语法图,ExceptionHandler 是一个 Element,表示其他四个实例之间的关系:ExecutableNode ( protectedNode)、ExecutableNode (handlerBody)、ObjectNode (exceptionInput) 和 Classifier (异常类型)

    所以文档大部分是准确的(我的小修改 - 我用 handlerBody 替换了第二个 ExceptionHandler):

    异常处理程序的符号如图 15.62 所示。 ExceptionHandler 是通过从 protectedNode 的边界到 handlerBody 的边界上的一个小方块绘制一个“闪电”符号来显示的。 exceptionType 的名称放在闪电旁边。小方块是 exceptionInput 节点。

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 2019-05-25
      • 2020-05-17
      • 2014-12-22
      相关资源
      最近更新 更多