StructuredActivityNode

StructuredActivityNode

在第476页的UML规范中,有以下图表:

uml - UML-是否可以将ActivityPartitions添加到StructuredActivityNodes?-LMLPHP

如果我没记错的话,应该不可能在ActivityPartion上添加ActivityGroup(这是StructuredActivityNode的特殊化-就像StructuredActivityNode一样),对吗?根据该图,StructuredActivityNodeActivityGroup之间的唯一关系是泛化/专业化关系。如果Partition中的StructuredActivityNode也可能存在组成关系。

我错了吗?我问是因为某些工具(例如VisualParadigm)有可能,但其他工具却没有。

最佳答案

Red Beard是正确的,指出StructuredActivityNodes可以包含ActivityNodes,而ActivityPartitions不是ActivityNodes。这是显示后一点的图:
uml - UML-是否可以将ActivityPartitions添加到StructuredActivityNodes?-LMLPHP

由此可见,StructuredActivityNodes不能包含ActivityPartitions。

但是,规范中没有什么阻止我们从与StructuredActivityNode本身不同的分区中引用StructuredActivityNode中的ActivityNode。

这可能导致无法以图形方式显示分区。规范为此定义了一个文本符号:只需将分区名称放在节点名称上方的圆括号中。不幸的是,许多工具不支持这种表示法。

为了能够以图形方式显示它,需要多个分区引用StructuredActivityNode。根据上图,这是允许的。当然,问题是,语义将是什么。

实际上,没有定义的语义。该规范仅定义了包含InvocationActions的分区的语义。然后,分区指定调用的目标。具有两个目标是没有意义的,因此,在这种情况下,不应允许这样做(尽管缺少对此效果的约束)。但是所有其他动作可以跨越多个分区。

因此,这是一个完全有效的图表,可以达到目标:

uml - UML-是否可以将ActivityPartitions添加到StructuredActivityNodes?-LMLPHP

PS:在使用的工具中,可以创建正确的模型。尽管进行了一些调整,直到该图看起来像这样。

10-06 10:56