UML活动图中是否允许返回箭头

时间:2016-03-16 04:28:12

标签: uml activity-diagram

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

1)用户从应用程序

请求产品列表

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

3)数据库将产品列表返回给应用程序

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

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

用户 - >应用 - >数据库

用户和LT; - 应用< - 数据库

然后我注意到我没有看到UML活动图的例子,箭头显示任何东西返回给请求者。它们都显示了到达终点的单向路径。如果它始于要求获得某些东西,那么返回总是暗示的吗?返回箭头是否使用不正确?

提前致谢。

更新--- 经过一些环顾四周,看来路径是一种方式。当你到达提供类似列表而不是绘制箭头的终点时,一直回到请求者,它看起来就像你只是在末尾节点添加一个短语,如下所示:"返回列表"

2 个答案:

答案 0 :(得分:2)

似乎您可能无法理解活动中的令牌语义。活动图不表示一个操作返回上一个操作的调用堆栈。但是,一个调用另一个调用行为操作的操作就像调用堆栈一样工作。

活动图的工作方式是每个动作都是一个步骤。完成的操作提供令牌到外边缘。只要任何操作提供 all 它需要启动的令牌,它就会实际启动。数据和控制都以这种方式工作。

您可以将每个动作都视为函数调用。当所有传入边都准备好所有令牌时,将调用该函数。函数完成后,所有传出令牌都将提供给所有已启用的传出边。 (当可选保护不为假时,启用传出边。)

我建议您阅读excellent series by Conrad Bock,以确保您了解活动的运作方式。否则,你会挫败自己和其他人试图让它符合你的先入之见。

答案 1 :(得分:0)

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

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

但是根据你的例子,你似乎根本没有绘制一个适当的活动图。在活动图中,节点必须是活动 - 而不是参与者。每个活动的名称都应该有一个动词。因此,“用户从应用程序请求产品列表”是一项很好的活动,但如果您有一个名为“用户”的活动,那么您做错了。