XMI 中的映射点符号
Mapping dot notation in XMI
从 2.1(或左右)开始,UML 引入了所谓的点符号,它告诉关联端除点之外的角色名称是否表示相对 class 中的拥有 属性 .由于 2.5 OMG 相当广泛地使用了该表示法。
现在我想知道如何将其映射到 XMI。 UML 规范在 p. 上说明。 717
UMLEdge (Association/Connector/InstanceSpecification/Property/ConnectorEnd , isAssociationDotShown enabled)
所以我希望在 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
)。我当然可以模仿那个符号,但是
- 这仅适用于 EA 和
- 我想坚持我
的标准
- 想消化一下,因为我只是在这里猜测。
属性 isAssociationDotShown 是 Annex B UML Diagram Interchange 中 UmlDiagramWithAssociations (UML 2.5 § B.7.15) 的 属性,描述为
isAssociationDotShown : Boolean [1..1] = false
Indicates whether dot notation for associations shall be used.
请注意,默认情况下此 属性 为假,这意味着图表不应显示关联点。
点符号本身在 UML (UML 2.5 § 11.5.4) 中定义为
Ownership of Association ends by an associated Classifier may be indicated graphically by a small filled circle, which for brevity we will term a dot.
到 XMI 的映射实际上只不过是协会成员端的所有权。
UML 规范中的示例:
例1:两边点
InteractionFragment
和Interaction
之间的关联两边都有一个点,表示两端都属于相反的分类器。
确实在 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:点在一侧
StateInvariant
和Constraint
之间的关联只有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
作为 ownedAttribute。
<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) 时,结果为:
从 2.1(或左右)开始,UML 引入了所谓的点符号,它告诉关联端除点之外的角色名称是否表示相对 class 中的拥有 属性 .由于 2.5 OMG 相当广泛地使用了该表示法。
现在我想知道如何将其映射到 XMI。 UML 规范在 p. 上说明。 717
UMLEdge (Association/Connector/InstanceSpecification/Property/ConnectorEnd , isAssociationDotShown enabled)
所以我希望在 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
)。我当然可以模仿那个符号,但是
- 这仅适用于 EA 和
- 我想坚持我 的标准
- 想消化一下,因为我只是在这里猜测。
属性 isAssociationDotShown 是 Annex B UML Diagram Interchange 中 UmlDiagramWithAssociations (UML 2.5 § B.7.15) 的 属性,描述为
isAssociationDotShown : Boolean [1..1] = false
Indicates whether dot notation for associations shall be used.
请注意,默认情况下此 属性 为假,这意味着图表不应显示关联点。
点符号本身在 UML (UML 2.5 § 11.5.4) 中定义为
Ownership of Association ends by an associated Classifier may be indicated graphically by a small filled circle, which for brevity we will term a dot.
到 XMI 的映射实际上只不过是协会成员端的所有权。
UML 规范中的示例:
例1:两边点
InteractionFragment
和Interaction
之间的关联两边都有一个点,表示两端都属于相反的分类器。
确实在 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:点在一侧
StateInvariant
和Constraint
之间的关联只有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
作为 ownedAttribute。
<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) 时,结果为: