Class UML 2.4.1::ProtocolStateMachine
Description:
A protocol state machine is always defined in the context of a classifier.
It specifies which operations of the classifier can be called in which
state and under which condition, thus specifying the allowed call sequences
on the classifier's operations. A protocol state machine presents the possible
and permitted transitions on the instances of its context classifier, together
with the operations which carry the transitions. In this manner, an instance
lifecycle can be created for a classifier, by specifying the order in which
the operations can be activated and the states through which an instance
progresses during its existence.
Direct Superclasses: StateMachineDirect Subclasses: Class Precedence List: ProtocolStateMachine,
StateMachine,
Behavior,
Class,
EncapsulatedClassifier,
StructuredClassifier,
BehavioredClassifier,
Classifier,
Namespace,
Type,
PackageableElement,
ParameterableElement,
RedefinableElement,
NamedElement,
TemplateableElement,
ElementProperties:

conformance :
ProtocolConformance (0 *); -- source
ProtocolStateMachine
connectionPoint :
Pseudostate (0 *); -- source
StateMachine
extendedStateMachine :
StateMachine (0 *); -- source
StateMachine
region :
Region (1 *); -- source
StateMachine
submachineState :
State (0 *); -- source
StateMachine
context :
BehavioredClassifier (0 1); -- source
Behavior
isReentrant : Boolean (1 1); -- source
Behavior
ownedParameter :
Parameter (0 *); -- source
Behavior
ownedParameterSet :
ParameterSet (0 *); -- source
Behavior
postcondition :
Constraint (0 *); -- source
Behavior
precondition :
Constraint (0 *); -- source
Behavior
specification :
BehavioralFeature (0 1); -- source
Behavior
extension :
Extension (0 *); -- source
Class
isAbstract : Boolean (1 1); -- source
Class
isActive : Boolean (1 1); -- source
Class
nestedClassifier :
Classifier (0 *); -- source
Class
ownedAttribute :
Property (0 *); -- source
Class
ownedOperation :
Operation (0 *); -- source
Class
ownedReception :
Reception (0 *); -- source
Class
superClass :
Class (0 *); -- source
Class
ownedPort :
Port (0 *); -- source
EncapsulatedClassifier
ownedConnector :
Connector (0 *); -- source
StructuredClassifier
part :
Property (0 *); -- source
StructuredClassifier
role :
ConnectableElement (0 *); -- source
StructuredClassifier
classifierBehavior :
Behavior (0 1); -- source
BehavioredClassifier
interfaceRealization :
InterfaceRealization (0 *); -- source
BehavioredClassifier
ownedBehavior :
Behavior (0 *); -- source
BehavioredClassifier
attribute :
Property (0 *); -- source
Classifier
collaborationUse :
CollaborationUse (0 *); -- source
Classifier
feature :
Feature (0 *); -- source
Classifier
generalization :
Generalization (0 *); -- source
Classifier
inheritedMember :
NamedElement (0 *); -- source
Classifier
isFinalSpecialization : Boolean (1 1); -- source
Classifier
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
Classifier
ownedUseCase :
UseCase (0 *); -- source
Classifier
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier
redefinedClassifier :
Classifier (0 *); -- source
Classifier
representation :
CollaborationUse (0 1); -- source
Classifier
substitution :
Substitution (0 *); -- source
Classifier
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier
useCase :
UseCase (0 *); -- source
Classifier
elementImport :
ElementImport (0 *); -- source
Namespace
importedMember :
PackageableElement (0 *); -- source
Namespace
member :
NamedElement (0 *); -- source
Namespace
ownedMember :
NamedElement (0 *); -- source
Namespace
ownedRule :
Constraint (0 *); -- source
Namespace
packageImport :
PackageImport (0 *); -- source
Namespace
package :
Package (0 1); -- source
Type
visibility :
VisibilityKind (1 1); -- source
PackageableElement
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement
isLeaf : Boolean (1 1); -- source
RedefinableElement
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement
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
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement
ownedComment :
Comment (0 *); -- source
Element
ownedElement :
Element (0 *); -- source
Element
owner :
Element (0 1); -- source
ElementConstraints:
Signature: protocol_transitions() : Boolean;
Description: All transitions of a protocol state machine must be protocol transitions.
(transitions as extended by the ProtocolStateMachines package)
Expression: region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition)))
Signature: ports_connected() : Boolean;
Description: If two ports are connected, then the protocol state machine of the required
interface (if defined) must be conformant to the protocol state machine
of the provided interface (if defined).
Expression: true
Signature: entry_exit_do() : Boolean;
Description: The states of a protocol state machine cannot have entry, exit, or do activity
actions.
Expression: region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies (v.entry->isEmpty() and v.exit->isEmpty() and v.doActivity->isEmpty())))
Signature: deep_or_shallow_history() : Boolean;
Description: Protocol state machines cannot have deep or shallow history pseudostates.
The OCL used here is not normative.Editor's notes: Pseudo not Psuedo, removed close paren.
Expression: region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Pseudostate) implies
((v.kind <> #deepHistory) and (v.kind <> #shallowHistory))))
Original: region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Psuedostate) implies ((v.kind <> #deepHistory) and (v.kind <> #shallowHistory)))))
Signature: classifier_context() : Boolean;
Description: A protocol state machine must only have a classifier context, not a behavioral
feature context.
Expression: (not context->isEmpty( )) and specification->isEmpty()
Operations:
No additional operations.
Send questions or comments to
[email protected].