保存前验证的 UML 序列

UML sequence for validation before saving

我是 UML 的新手,但我的任务是绘制一些 UML 图来描述我们系统的一些复杂部分。

其中一个部分是将数据保存在数据库中,数据在实际保存之前要经过的步骤。

大致涉及的步骤如下:

  1. 用户想要保存
  2. 应用验证所有必填字段都设置了值
  3. 如果无效,应用会显示一条消息。如果有效,应用会发送一个 post 请求
  4. 控制器将dto映射到领域模型对象,传递给服务层
  5. 服务层根据业务规则验证模型。如果无效,则抛出验证异常
  6. 如果有效,模型向下移动到数据访问层,其中 EF 用于将更改提交到数据库
  7. 在尝试提交时,EF 可能会抛出验证异常(映射)或数据库异常(从数据库本身冒出)
  8. 如果提交成功,模型将传递给控制器​​,控制器将其映射回对应的 dto 对象并显示给用户
  9. 如果抛出验证或数据库异常,这些将显示给用户

到目前为止,这是我想出的:

这是否足以显示上述步骤,或者是否可以对图表进行改进?

如果你把一些东西放在序列图上,那么这意味着它必须无条件地应用(即在每个 运行 上你需要有 ValidationErrors 消息和 DatabaseErrors 消息,这可能不是你想要的)。 实际上,您的图表上没有正向路径(DataAccess 层的 "OK" 在收到 2 个异常后出现,与从数据库到 Entity Framework 的 return 相同。 此外,OccurenceEvent 应始终从 message/signal 接收开始。在您的图表上,其中一些开始时没有任何实际触发器。

阅读有关片段的信息,尤其是组合片段(UML 规范中的 17.6/17.6.3.3,但我建议阅读一些对用户更友好的文档类型,例如 uml-diagrams.org 或一些有关 UML 的书籍)。

另外我不确定 SO 是否是解决此类问题的最佳场所。它应该放在某个讨论面板(论坛)上,因为您没有具体问题,但更愿意验证您的图表。

在序列图中,我们展示了 class 实体或对象之间的交互。在绘制序列图之前,我们需要确定 classes 及其方法(行为)。在序列图中,有三种类型的 classes.

  1. 边界class
  2. 控制class
  3. 实体class

边界classes 表示系统的视图(用户界面)。 实体 classes 显示数据库的 table(实体) 控件 classes 位于边界 classes 之间,实体 classes.And 在它们之间传递消息。

  • 在你的图表中,我认为数据库不应该是一个 class 名称。那么你 不能在序列图中定义它。(你可以为特定的table定义相关的class)
  • 您需要指定要传递给其他 classes 的数据 一个方法。例如:

    保存(user_name,年龄)

  • 您可以将用户显示为演员而不是 class。

  • 当前图表没有显示系统的条件(如果其他 条件)。您可以使用 "alt" 来显示条件。

  • 当您在 classes 之间传递消息时,方法名称应该在接收 class.

  • 中定义