活动图-在这种情况下,有关派生/合并和决策/合并的困惑

时间:2018-07-19 09:51:17

标签: uml activity-diagram

我正在创建活动图

  1. 管理员登录到网络
  2. 如果通过验证,它将到达仪表板
  3. 通过仪表板它可以管理帐户,管理产品和管理问题
  4. 执行上述选项之一后,它可以返回仪表板或从系统注销。

我使用过fork / join,是正确的还是应该使用Decision / merge 第二,是否正确定义了注销或执行仪表板中可用的其他选项的过程?

enter image description here

2 个答案:

答案 0 :(得分:1)

您的活动有几个问题。

首先也是最严重的是,它不会做任何事情,因为动作(以及大多数动作-不是活动中的所有模型元素)具有传入控制流的“隐式和语义”。这意味着仅当在所有传入控制流操作中提供令牌时才执行操作,否则它将等待。因此,由于来自validate的控制流无法在登录已执行并完成之前提供令牌,因此您拥有了锁。什么也不会执行。仪表盘也是如此。为了解决这个问题,您需要对合并节点建模。

第二点是,您只想执行(根据您的描述)管理操作之一。 (顺便说一下,带有通用动词(例如“ manage”,“ maintain”,“ do”,“ perform”等)的名称对于操作而言是非常糟糕的名称,请改用更具体的名称。)无论仪表板操作中的选择如何,您的模型都将执行,所有这些操作均同时管理。同时表示任意顺序,并且不需要并行执行。因此,您应该将叉子替换为决策节点,其中流出流的条件基于仪表板中的选择。决策节点可以具有任意数量(但数量有限)的传出控制流。使用合并节点而不是联接节点合并来自管理操作的所有传出控制流。因为加入节点将等待每个传入控制流的传入令牌。

使用UML / SysML工具时要解决的一个小问题是,分叉和连接节点是条形而不是矩形框架。

答案 1 :(得分:-1)

您的广告有2个缺陷。首先,叉子/连接点是实线,而不是空心矩形。第二,使用错误。这样,您可以并行运行所有Manage个动作,并在所有动作完成后继续。根据您的描述,使用菱形决定其中一项操作。此后再使用菱形合并流程并继续进行Logout