Class UML 2.3::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,
TemplateableElement,
Type,
PackageableElement,
ParameterableElement,
Namespace,
RedefinableElement,
NamedElement,
ElementProperties:
![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
conformance :
ProtocolConformance (0 *); -- source
ProtocolStateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
connectionPoint :
Pseudostate (0 *); -- source
StateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
extendedStateMachine :
StateMachine (0 *); -- source
StateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
region :
Region (1 *); -- source
StateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
submachineState :
State (0 *); -- source
StateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
context :
BehavioredClassifier (0 1); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
isReentrant : Boolean (1 1); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedParameter :
Parameter (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedParameterSet :
ParameterSet (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
postcondition :
Constraint (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
precondition :
Constraint (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
redefinedBehavior :
Behavior (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
specification :
BehavioralFeature (0 1); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
extension :
Extension (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
isAbstract : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
isActive : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
nestedClassifier :
Classifier (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedAttribute :
Property (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedOperation :
Operation (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedReception :
Reception (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
superClass :
Class (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedPort :
Port (0 *); -- source
EncapsulatedClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedConnector :
Connector (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
part :
Property (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
role :
ConnectableElement (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
classifierBehavior :
Behavior (0 1); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
interfaceRealization :
InterfaceRealization (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedBehavior :
Behavior (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedTrigger :
Trigger (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
attribute :
Property (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
collaborationUse :
CollaborationUse (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
feature :
Feature (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
generalization :
Generalization (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
inheritedMember :
NamedElement (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
isFinalSpecialization : Boolean (1 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedUseCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
redefinedClassifier :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
representation :
CollaborationUse (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
substitution :
Substitution (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
useCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
package :
Package (0 1); -- source
Type![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
visibility :
VisibilityKind (1 1); -- source
PackageableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
elementImport :
ElementImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
importedMember :
PackageableElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
member :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedMember :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedRule :
Constraint (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
packageImport :
PackageImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
clientDependency :
Dependency (0 *); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
namespace :
Namespace (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=6082%3AA891FB48D941153A8D5D0B56CB20BAEC)
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].