Previous UML Classes Table of Contents UML Packages Next


11.3.22 LinkEndCreationData

IntermediateActions


   LinkEndCreationData is not an action. It is an element that identifies links. It identifies one end of a link to be created by CreateLinkAction .

*Generalizations

   

    LinkEndData (from IntermediateActions , CompleteActions ) on page 271.

*Description

   This class is required when using CreateLinkAction to specify insertion points for ordered ends and for replacing all links at end. A link cannot be passed as a runtime value to or from an action. Instead, a link is identified by its end objects and qualifier values, as required. This requires more than one piece of data, namely, the statically-specified end in the user model, the object on the end, and the qualifier values for that end. These pieces are brought together around LinkEndData . Each association end is identified separately with an instance of the LinkEndData class.

Issue 8169 -add clarification

   Qualifier values are used in CompleteActions to specify links to create.

*Attributes

   • isReplaceAll : Boolean [1..1] = false Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link.

*Associations

   • insertAt : InputPin [0..1] Specifies where the new link should be inserted for ordered association ends, or where an existing link should be moved to. The type of the input is UnlimitedNatural, but the input cannot be zero. This pin is omitted for association ends that are not ordered.

*Constraints

   [1] LinkEndCreationData can only be end data for CreateLinkAction or one of its specializations.

   self.LinkAction.oclIsKindOf(CreateLinkAction )

   [2] Link end creation data for ordered association ends must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.

   let insertAtPins : Collection = self.insertAt in

   if self.end.ordering = #unordered

   then insertAtPins->size() = 0

   else let insertAtPin : InputPin = insertAts->asSequence()->first() in

   insertAtPins->size() = 1

   and insertAtPin.type = UnlimitedNatural

   and insertAtPin.multiplicity.is(1,1))

   endif

*Semantics

   See CreateLinkAction , also see LinkAction and all its children.

*Notation

   No specific notation

   LinkEndCreationData is introduced to indicate which inputs are for which link end objects and qualifiers.

*Changes from previous UML

   LinkEndCreationData is unchanged from UML 1.5.