2

我想在 UML 活动图中表示以下内容

1) 用户从应用程序请求产品列表

2) 应用程序从数据库中请求产品列表

3) 数据库返回产品列表给Application

4) 应用程序向用户显示列表

最初我认为这将是一个简单的例子,箭头从左到右连接到每个活动框,然后将箭头一直拉回到请求开始的位置,如下所示:

用户-->应用程序-->数据库

用户<--应用程序<--数据库

但后来我注意到我没有看到带有箭头的 UML 活动图示例,这些示例显示任何东西返回给请求者。它们都显示了通往终点的单向路径。如果它以获取某物的请求开始,是否总是暗示返回?返回箭头是否使用不正确?

提前致谢。

更新---经过一番环顾后,路径似乎是一种方式。当您到达终点,即提供类似列表的内容而不是一直绘制箭头返回请求者时,在我看来,您只需在末端节点添加一个短语,内容如下:“返回列表”。

4

2 回答 2

2

看来您可能不了解活动中的令牌语义。活动图不代表一个动作返回到前一个动作的调用堆栈。然而,一个动作调用另一个调用行为动作确实像调用堆栈一样工作。

活动图的工作方式是每个动作都是一个步骤。一个已完成的动作向传出边提供令牌。一旦提供了任何动作所需的所有令牌,它就会真正开始。数据和控制都以这种方式工作。

你可以把每个动作想象成一个函数调用。当所有进入边上的所有令牌都准备好时,调用该函数。当函数完成时,所有传出令牌都提供给所有启用的传出边。(当可选保护不为假时,将启用传出边缘。)

我建议您阅读康拉德·博克(Conrad Bock)的优秀系列文章,以确保您了解活动的工作原理。否则,你会挫败你自己和其他人试图让它符合你的先入之见。

于 2016-03-17T03:03:14.377 回答
0

没有什么可以阻止您在活动图中引入循环,但为了清楚起见,每当您从一个活动中获得两个或多个可能的退出时,您应该在连接器上使用防护来指定在什么条件下可以遵循连接器(例如 [ x < 10] 和 [x >= 10] 在另一个)。

如果你想明确分支条件,你也可以使用决策(菱形)(例如,名为“x < 10?”的决策);然后,您将从前面的活动中绘制一个连接器到决策,并从决策中绘制两个受保护的连接器。

但是从您的示例看来,您根本没有绘制正确的活动图。在活动图中,节点必须是活动——而不是参与者。每个活动的名称中都应该有一个动词。所以“用户从应用程序请求产品列表”是一个很好的活动,但如果你有一个名为“用户”的活动,那么你做错了。

于 2016-03-16T13:12:18.413 回答