通过 OCL 在 Papyrus 中分层派生对象

Layering derived objects in Papyrus by OCL

作为 UML/OCL/Papyrus 的新手,缺乏对此的交流让我觉得我可能走错了路:

在绘制 class 图表时,我想对 a) 作为组合成员的所有对象和 b) 从另一个接口继承的所有接口进行分层。也就是说,我会说,通过直接和间接关联进行分层。

在 papyrus 中,我可以通过简单地向图层添加元素来做到这一点。更方便的是使用 Reg Exp Layers,select 所有元素在 OCL 布尔表达式上返回 TRUE。例如,很容易通过 self.element.oclAsType(uml::NamedElement).name='myclass'

将单个元素放在其自己的层上

但我还想将 'myclass' 的所有(向下)关联元素放在该层上。有什么建议吗?

答案来自:https://www.eclipse.org/forums/index.php/mv/msg/1087968/1769850/#msg_1769850

虽然层可能允许您将多个逻辑图折叠成一个图,但这似乎很误导。

我发现一旦图表变得不平凡,绘制一个显示继承架构的图表,另一个显示包含架构的图表以及 construction/destruction 通信架构的更多图表可能会很有帮助。强制与层共享位置似乎会产生不良限制。请记住 UML 图是底层模型的视图。您可能有许多不同视图的图表。