Class UML 2.3::ReadLinkAction
Description:
A read link action is a link action that navigates across associations
to retrieve objects on one end.
Direct Superclasses: LinkActionDirect Subclasses: Class Precedence List: ReadLinkAction,
LinkAction,
Action,
ExecutableNode,
ActivityNode,
RedefinableElement,
NamedElement,
ElementProperties:

result :
OutputPin (1 1); -- source
ReadLinkAction
endData :
LinkEndData (2 *); -- source
LinkAction
inputValue :
InputPin (1 *); -- source
LinkAction
context :
Classifier (0 1); -- source
Action
input :
InputPin (0 *); -- source
Action
isLocallyReentrant : Boolean (1 1); -- source
Action
localPostcondition :
Constraint (0 *); -- source
Action
localPrecondition :
Constraint (0 *); -- source
Action
output :
OutputPin (0 *); -- source
Action
handler :
ExceptionHandler (0 *); -- source
ExecutableNode
activity :
Activity (0 1); -- source
ActivityNode
inGroup :
ActivityGroup (0 *); -- source
ActivityNode
inInterruptibleRegion :
InterruptibleActivityRegion (0 *); -- source
ActivityNode
inPartition :
ActivityPartition (0 *); -- source
ActivityNode
inStructuredNode :
StructuredActivityNode (0 1); -- source
ActivityNode
incoming :
ActivityEdge (0 *); -- source
ActivityNode
outgoing :
ActivityEdge (0 *); -- source
ActivityNode
redefinedNode :
ActivityNode (0 *); -- source
ActivityNode
isLeaf : Boolean (1 1); -- source
RedefinableElement
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement The redefinable element that is being redefined by this element.
{
readonly}
Derived union with sources: (redefinedNode)

redefinitionContext :
Classifier (0 *); -- source
RedefinableElement
clientDependency :
Dependency (0 *); -- source
NamedElement
name : String (0 1); -- source
NamedElement
nameExpression :
StringExpression (0 1); -- source
NamedElement
namespace :
Namespace (0 1); -- source
NamedElement
qualifiedName : String (0 1); -- source
NamedElement
visibility :
VisibilityKind (0 1); -- source
NamedElement
ownedComment :
Comment (0 *); -- source
Element
ownedElement :
Element (0 *); -- source
Element
owner :
Element (0 1); -- source
ElementConstraints:
Signature: visibility() : Boolean;
Description: Visibility of the open end must allow access to the object performing the
action.
The OCL used here is not normative.Editor's notes: participant not defined.
Expression: true
Original: let host : Classifier = self.context in
let openend : Property = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in
openend.visibility = #public
or self.endData->exists(oed | not oed.end = openend
and (host = oed.end.participant
or (openend.visibility = #protected
and host.allSupertypes->includes(oed.end.participant))))
Signature: type_and_ordering() : Boolean;
Description: The type and ordering of the result output pin are same as the type and
ordering of the open association end.
Expression: let openend : Property = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in
self.result.type = openend.type
and self.result.ordering = openend.ordering
Signature: one_open_end() : Boolean;
Description: Exactly one link-end data specification (the 'open' end) must not have
an end object input pin.
Expression: self.endData->select(ed | ed.value->size() = 0)->size() = 1
Signature: navigable_open_end() : Boolean;
Description: The open end must be navigable.
Expression: let openend : Property = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in
openend.isNavigable()
Signature: compatible_multiplicity() : Boolean;
Description: The multiplicity of the open association end must be compatible with the
multiplicity of the result output pin.
The OCL used here is not normative.Editor's notes: No multiplicity. No more AssociationEnd. Needs further investigation. Use of Element is a hack.
Expression: let openend : Element = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in
openend.compatibleWith(self.result)
Original: let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in
openend.multiplicity.compatibleWith(self.result.multiplicity)
Operations:
No additional operations.
Send questions or comments to
[email protected].