1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
package uml::Activities
context uml::Activities::Activity
inv maximum_one_parameter_node:
ownedParameter->forAll(p | p.direction <> UML::Classification::ParameterDirectionKind::inout implies
node->select(
(
oclIsKindOf(activities::ActivityParameterNode) and
oclAsType(activities::ActivityParameterNode).parameter = p
))
->size() = 1)
context Action::allActions() : Set(uml::Actions::Action)
body:
(self->asSet())
context Action::allOwnedNodes() : Set(uml::Activities::ActivityNode)
body:
(input.oclAsType(Pin)->asSet()->union(output->asSet()))
context Action::containingBehavior() : uml::CommonBehavior::Behavior
body:
(if inStructuredNode<>null then inStructuredNode.containingBehavior()
else if activity<>null then activity
else interaction
endif
endif
)
context uml::Actions::Action::isLocallyReentrant : Boolean
init:
false
context uml::Actions::ExpansionRegion::mode : uml::Actions::ExpansionKind
init:
UML::Actions::ExpansionKind::iterative
context Guard
-- [1] A guard should not have side effects.
inv: self.transition->stateMachine->notEmpty() implies
(self.transition.stateMachine.context =
self.transition.stateMachine.context@pre)
endpackage
body: self.employees->collect(salary) -> collect(x | x/6.55957)
|