如何在 activity 图中使用循环的扩展区域?

How to use expansion regions for loops in an activity diagram?

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

我见过类似的问题和可能的答案:

即使有了这些答案,我仍有疑问,我自己的答案与 UML 定义不符。

问题总结:循环遍历文件夹和每个文件夹中的文件,根据名称作用于每个文件夹,根据名称作用于每个文件。我遇到的主要问题是我是否正确使用扩展区域。

许多资料表明扩展区域必须有一个输入集合和一个输出集合。但我不一定有输出集合。

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

这是我所做工作的 Enterprise Architect 屏幕截图:

根据您的回复,这只是您正在操作的一个对象。

您可以将该对象放在扩展区域之外的全局上下文中。 input-/output-parameters 保持不变。它们是过程参数的类比。如果您 fiddle 使用外部(全局)对象,您的 return 值将是一些空集合(并且可能是您处理外部对象的一些信息)。

首先,你的 Expansion Nodes 与 Control Flows 相连,或者你的 Actions 与 Object Flows 相连,这两者都是不可能的(太糟糕了,EA 不强制执行此规则)。这意味着您需要在 Initial Node 之后有一个 Action,它为您提供一个集合。您还在 Activity-Diagram 中使用活动。与普遍的看法(和 EA)相反,这是不允许的。您应该使用 Actions(可能是 CallBehaviorActions 调用 Activity,但这取决于您)。

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

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