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

UML活动图中是否允许返回箭头,uml,activity-diagram,Uml,Activity Diagram,我想在UML活动图中表示以下内容 1) 用户从应用程序请求产品列表 2) 应用程序从数据库请求产品列表 3) 数据库将产品列表返回给应用程序 4) 应用程序向用户显示列表 最初我认为这是一个简单的例子,箭头从左向右移动,连接到每个活动框,然后将箭头一直拉回到请求开始的位置,如下所示: 用户-->应用程序-->数据库 用户没有什么可以阻止您在活动图中引入循环,不过为了清楚起见,每当您从一个活动中有两个或多个可能的出口时,您应该在连接器上使用防护装置来指定在何种条件下可以遵循连接器(例如,一个连接器

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

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

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

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

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

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

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


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

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


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

您可能不理解活动中的令牌语义。活动图并不表示一个操作返回到上一个操作的调用堆栈。但是,一个操作调用另一个调用行为操作的工作方式与调用堆栈类似

活动图的工作方式是每个动作都是一个步骤。完成的操作将向传出边缘提供令牌。一旦任何操作被提供了它需要启动的所有令牌,它实际上就启动了。数据和控制都是这样工作的

您可以将每个操作看作一个函数调用。当所有传入边缘上的所有令牌都就绪时,将调用该函数。当函数完成时,将向所有启用的传出边缘提供所有传出令牌。(当可选保护不为false时,将启用输出边。)


我建议您阅读,以确保您了解活动的工作原理。否则,你会挫败自己和其他人试图使其符合你的先入之见。

广告应该包含行动,而不是活动。欢迎使用StackOverflow,@Robertcode。如果你找到了你的问题的答案,请考虑(点击复选标记),并考虑投票(点击上箭头)。接受一个答案向更广泛的社区表明,你已经找到了解决方案,给了自己一些声誉分数,并给回答你问题的人一些声誉分数。如果您对您的问题没有找到满意的答案,请留下评论。