我该如何在活动图中表示循环?

57

我想在UML活动图中表示一个循环。这是我的情况:

  • 对于每个文件夹,我检查该文件夹中的每个文档
  • 对于每个文档,我检查其内容:
    • 如果它无效(基于关键字搜索),则执行操作X并传递到下一个文档。
  • 当所有文档都经过验证后,继续进行下一个文件夹。

有人能告诉我这应该是什么样子吗?

1个回答

79

你可以使用三种不同的符号表示。

如果您的循环是基于一些元素(文件夹、文档),最方便的方法是使用迭代类型的扩展区域。

Expansion Region example

第二个选择是当您有一些基于防护的循环时,首选的选择是Loop Node。

Loop Node example

最后一种可能性是简单地构建正确结构化的决策/合并结构。

Decision/Merge example

前两种方法的好处是它们紧凑明了。而且很容易嵌套循环。但这两种情况在最后一种选项中都不成立。然而,如果您向不熟悉UML的人呈现您的图表(特别是如果您没有机会解释特定结构的含义),通常最广为人知和理解的是最后一种方法。


嗯,我正在使用Enterprise Architect,但那是一种专有工具。我不知道是否有任何免费工具具有这些节点。 - Ister
为了更加清晰,您可以添加反映您情况的示例图表。 - Ister
谢谢您提供的示例! - hereForLearing
1
为了使第一个图表有效,您必须使用对象流,并且这些对象必须以某种方式体现出来。例如,从参数节点传递文件夹,然后稍后从中提取文件。 - Jim L.
3
第二个图表-设置区域在流程进入节点时运行一次。测试区域在每次迭代后运行,如果返回false,则退出循环节点,如果返回true,则运行主体区域。在设置完成后,没有明确的规则来确定系统应该首先运行测试还是主体。我也看过测试部分只是一个布尔表达式的图表。规范没有指定确切的方法,也没有提供示例,至少在规范的相关部分中没有。 - Ister
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接