在XMI中映射点表示法

时间:2018-04-13 16:54:41

标签: uml xmi

自2.1(左右)以来,UML引入了所谓的点符号,它表示关联端点之外的角色名称是否表示相反类别中的拥有属性。由于2.5 OMG大量使用了这种表示法。

现在我想知道这是如何映射到XMI的。 UML规范在p。 717

  

UMLEdge(关联/连接器/ InstanceSpecification / Property / ConnectorEnd,isAssociationDotShown已启用)

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

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

我在Enterprise Architect中尝试过,但是(难怪)它没有用。 EA正在使用它自己的扩展

<style value="Union=0;Derived=0;AllowDuplicates=0;Navigable=Unspecified;Owned=1;"/>

(最后是Owned=1)。当然我可以模仿那种符号,但是

  1. 只适用于EA和
  2. 我想坚持我
  3. 的标准
  4. 喜欢消化,因为我只是在这里猜测。

1 个答案:

答案 0 :(得分:1)

属性isAssociationDotShown是附件B UML图表交换中UmlDiagramWithAssociations(UML2.5§B.7.15)的属性,被描述为

  

isAssociationDotShown:Boolean [1..1] = false
  指示是否应使用关联的点表示法。

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

点符号本身在UML(UML2.5§11.5.4)中定义为

  

关联分类器的关联所有权可以通过一个小的实心圆圈以图形方式表示,为简洁起见,我们将其称为 dot

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

UML规范示例: enter image description here

示例1:两侧点

InteractionFragmentInteraction之间的关联在两边都有一个点,表示两端都是由相反的分类器拥有。
确实在OMG提供的xmi中我们发现:

<packagedElement xmi:type="uml:Association" xmi:id="A_fragment_enclosingInteraction" name="A_fragment_enclosingInteraction" memberEnd="Interaction-fragment InteractionFragment-enclosingInteraction"/>

没有自己的目的。两端都由OwnedAttributes

末端的分类器拥有
<ownedAttribute xmi:type="uml:Property" xmi:id="Interaction-fragment" name="fragment" type="InteractionFragment" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_fragment_enclosingInteraction">
    <ownedComment xmi:type="uml:Comment" xmi:id="Interaction-fragment-_ownedComment.0" annotatedElement="Interaction-fragment">
        <body>The ordered set of fragments in the Interaction.</body>
    </ownedComment>
    <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-fragment-_upperValue" value="*"/>
    <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-fragment-_lowerValue"/>
</ownedAttribute>

另一个:

<ownedAttribute xmi:type="uml:Property" xmi:id="InteractionFragment-enclosingInteraction" name="enclosingInteraction" type="Interaction" subsettedProperty="NamedElement-namespace" association="A_fragment_enclosingInteraction">
    <ownedComment xmi:type="uml:Comment" xmi:id="InteractionFragment-enclosingInteraction-_ownedComment.0" annotatedElement="InteractionFragment-enclosingInteraction">
        <body>The Interaction enclosing this InteractionFragment.</body>
    </ownedComment>
    <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-enclosingInteraction-_lowerValue"/>
</ownedAttribute>

示例2:一侧的点

StateInvariantConstraint之间的关联在Constraint端只有一个点 关联本身在XMI中定义为:

<packagedElement xmi:type="uml:Association" xmi:id="A_invariant_stateInvariant" name="A_invariant_stateInvariant" memberEnd="StateInvariant-invariant A_invariant_stateInvariant-stateInvariant">
    <ownedEnd xmi:type="uml:Property" xmi:id="A_invariant_stateInvariant-stateInvariant" name="stateInvariant" type="StateInvariant" subsettedProperty="Element-owner" association="A_invariant_stateInvariant">
        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_invariant_stateInvariant-stateInvariant-_lowerValue"/>
    </ownedEnd>
</packagedElement>

没有圆点的结束归协会所有 带有点的结尾由StateInvariant拥有为ownAttribute。

<ownedAttribute xmi:type="uml:Property" xmi:id="StateInvariant-invariant" name="invariant" type="Constraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_invariant_stateInvariant">
    <ownedComment xmi:type="uml:Comment" xmi:id="StateInvariant-invariant-_ownedComment.0" annotatedElement="StateInvariant-invariant">
        <body>A Constraint that should hold at runtime for this StateInvariant.</body>
    </ownedComment>
</ownedAttribute>

导入EA

不幸的是,EA中的xmi导入函数似乎存在一个错误,因为它失去了自有结束的概念(以及点数)。将其导入EA(v14.5 BETA)时,结果为:

enter image description here