Previous UML Classes Table of Contents UML Packages Next


11.3.21 LinkAction

IntermediateActions


   LinkAction is an abstract class for all link actions that identify their links by the objects at the ends of the links and by the qualifiers at ends of the links.

*Generalizations

   

    Action (from BasicActions ) on page 247

*Description

   A link action creates, destroys, or reads links, identifying a link by its end objects and qualifier values, if any.

*Attributes

   No additional attributes

*Associations

   • endData : LinkEndData [2..*] Data identifying one end of a link by the objects on its ends and qualifiers.

Issue 9104 -rename ‘input’ to ‘inputValue’

   • inputValue : InputPin [1..*] Pins taking end objects and qualifier values as input. (Subsets Action::input)

*Constraints

   [1] The association ends of the link end data must all be from the same association and include all and only the association ends of that association.

Issue 8165 -remove extraneous parenthesis at end

   self.endData->collect(end) = self.association()->collect(connection)

   [2] The association ends of the link end data must not be static.

   self.endData->forall(end.oclisKindOf(NavigableEnd) implies end.isStatic = #false)

   [3] The input pins of the action are the same as the pins of the link end data and insertion pins.

   self.input->asSet() =

   let ledpins : Set = self.endData->collect(value) in if self.oclIsKindOf(LinkEndCreationData ) then ledpins->union(self.endData.oclAsType(LinkEndCreationData ).insertAt) else ledpins

Issue 8933 -move constraint and add package header

   Package CompleteActions

   [4] The input pins of the action are the same as the pins of the link end data, qualifier values, and insertion pins.

   self.input->asSet() = let ledpins : Set = if self.endData.oclIsKindOf(CompleteActions ::LinkEndData ) then self.endData->collect(value)->union(self.endData.qualifier.value) else self.endData->collect(value) in

   if self.oclIsKindOf(LinkEndCreationData ) then ledpins->union(self.endData.oclAsType(LinkEndCreationData ).insertAt) else ledpins

   Additional operations:

   [1] association operates on LinkAction. It returns the association of the action. association(); association = self.endData->asSequence().first().end.association

*Semantics

Issue 8165 - add cross reference to LinkEndData and clarifying sentence at end

   For actions that write links, all association ends must have a corresponding input pin so that all end objects are specified when creating or deleting a link. An input pin identifies the end object by being given a value at runtime. It has the type of the association end and multiplicity of 1..1 (see LinkEndData (from IntermediateActions , CompleteActions ) on page 271 ), since a link always has exactly one object at its ends. The input pins owned by the action are referenced by the link end data, and as insertion pins (see LinkEndCreationData (from IntermediateActions ) on page 269), and qualifier value pins in CompleteActions .

   The behavior is undefined for links of associations that are static on any end.

   For the semantics of link actions see the children of LinkAction.

*Notation

   No specific notation

   LinkAction is introduced to abstract aspects of link actions that identify links by the objects on their ends.

   In CompleteActions , LinkAction is extended for qualifiers.

*Changes from previous UML

   LinkAction is unchanged from UML 1.5.

Issue 9123 - remove CompleteActions from header