如何在活动图中使用扩展区域进行循环?

问题描述 投票:3回答:2

我在设计合适的UML活动图时遇到问题。

我见过类似的问题和可能的答案:How to present a loop in activity diagram?

即使有这些答案,我也有疑问,而我自己的答案与UML定义不一致。

问题摘要:遍历每个文件夹中的文件夹和文件,根据每个文件夹的名称和每个文件的名称对每个文件夹进行操作。我遇到的主要问题是我是否正确使用了扩展区域。

许多消息来源告诉扩展区域必须有输入集合和输出集合。但我不一定有输出集合。

是否会自动假定Region将迭代所有项目,直到它们进入ActivityFinal之前没有剩余项目?

这是我做过的Enterprise Architect截图:enter image description here

uml modeling enterprise-architect activity-diagram
2个回答
1
投票

首先,您的扩展节点与控制流连接,或者您的操作与对象流连接,其中任何一个都是不可能的(太糟糕了,EA不强制执行此规则)。这意味着您需要在初始节点之后拥有一个Action,它为您提供了一个集合。您还在活动图中使用活动。与流行的相信(和EA)相反,这是不允许的。你应该使用Actions(可能CallBehaviorActions调用Activities,但这取决于你)。

我不确切地知道你试图建模什么。但是,我建议有效使用扩展区域:enter image description here第一个扩展节点为目录中的每个文件夹创建一个对象令牌。第二个扩展节点为文件夹中的每个文件创建一个对象标记。如果需要访问文件夹名称,只需将对象流绘制到Region中即可。然后,这将为内部扩展区域的每次执行提供单独的文件夹标记。

如果您不需要输出扩展节点,则无需对其进行建模。只需使用Flow Final Node结束每次执行。在上次执行完成后,Region将为传出的Control Flow生成一个令牌。


1
投票

根据您的回复,它只是您正在处理的对象。

enter image description here

您可以将该对象放在扩展区域之外的全局上下文中。输入/输出参数保持不变。它们是程序参数的类比。如果您使用外部(全局)对象,则返回值将是一些空集合(可能还有一些您使用外部对象处理的信息)。

© www.soinside.com 2019 - 2024. All rights reserved.