Uml XMI中的映射点表示法

Uml XMI中的映射点表示法,uml,xmi,Uml,Xmi,自从2.1(或更高版本)以来,UML引入了所谓的点表示法,它告诉我们在关联端除了点之外的角色名是否表示另一个类中拥有的属性。因为2.5 OMG非常广泛地使用了这种符号 现在我想知道如何将其映射到XMI。UML规范在p。717 UMLEdge(关联/连接器/实例指定/属性/连接器终止,ISAssociationDotShowed已启用) 所以我希望在XMI中有一个属性,就像 <ownedEnd isAssociationDotShown="true" xmi:type="uml:Proper

自从2.1(或更高版本)以来,UML引入了所谓的点表示法,它告诉我们在关联端除了点之外的角色名是否表示另一个类中拥有的属性。因为2.5 OMG非常广泛地使用了这种符号

现在我想知道如何将其映射到XMI。UML规范在p。717

UMLEdge(关联/连接器/实例指定/属性/连接器终止,ISAssociationDotShowed已启用)

所以我希望在XMI中有一个属性,就像

<ownedEnd isAssociationDotShown="true" xmi:type="uml:Property" ...

属性IsAssociationDotShowed是附录B UML图交换中UMLDiagram with Associations(UML 2.5§B.7.15)的属性,描述为

IsAssociationDotShowed:Boolean[1..1]=false
指示是否应使用关联的点符号

请注意,默认情况下,此属性为false,这意味着图表不应显示关联点

dot符号本身在UML(UML 2.5§11.5.4)中定义为

关联分类器对关联端点的所有权可以用一个小的填充圆以图形方式表示,为简洁起见,我们将其称为点

到XMI的映射实际上只是关联成员端的所有权

UML规范中的示例:

示例1:两侧的圆点
InteractionFragment
Interaction
之间的关联在两侧都有一个点,表示两端都属于相反的分类器。
事实上,在OMG提供的xmi中,我们发现:


没有自己的目的。两端都作为OwnedAttribute由两端的分类器拥有


交互中有序的片段集。
另一个:


包含此InteractionFragment的交互。
例2:一侧的圆点
状态不变
约束
之间的关联仅在
约束
末端有一个点
关联本身在XMI中定义为:


没有圆点的端点归协会所有。
带点的结尾由
StateInvariant
作为ownedAttribute所有


此状态不变量在运行时应保持的约束。
导入EA 不幸的是,EA中的xmi导入函数中似乎有一个bug,因为它放松了拥有端(以及点)的概念。将其导入EA(v14.5 BETA版)时,结果是:


似乎是合乎逻辑的,但我不确定如果点是拥有的,为什么不显示它?我的问题是:我如何在XMI中编码,因为似乎没有(标准)构造在导入(比如)EA后显示点。XMI似乎不支持关联结束所有权点。可能的假设是,在将类模型序列化为XMI之前,必须用相关类中相应的引用属性替换它们。我想UML图交换规范应该包括对它们的支持。@GerdWagner我也怀疑。点符号“相对较新”这一事实可能就是原因。太糟糕了,谢谢你,格特。今晚晚些时候我会研究这个问题。乍一看,我很惊讶他们(OMG;缩写为sooo good)将所有权作为图表的一部分,而不是关联本身。所以仍然被困在“owned association end”与“attribute with type”之间。所以(在我现在离开之前)它归结为对虚线变体使用
ownedAttribute
——希望Sparx在将来的某个时候解决这个问题?因此,
isAssociationDotShowed
仅仅是显示它的一些附加图表标志(想知道为什么默认情况下它是
false
。@ThomasKilian是的,这至少是我对它的理解。查看OMG的XMI源代码是个好主意。应该想到这个。。。导入后,我没有在EA中看到点,只是认为它们没有编码。但很明显,EA在导入时是错误的。唉。啊,有趣,做得好。我想这是由于技术随着时间的推移而不断扩展,并且希望与历史方法保持兼容。我同意对于2.5图表,应该默认为true。
<style value="Union=0;Derived=0;AllowDuplicates=0;Navigable=Unspecified;Owned=1;"/>