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=99354%3A76F3147B85CE75F60C220D33F626FCFC)
conformance :
ProtocolConformance (0 *); -- source
ProtocolStateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
connectionPoint :
Pseudostate (0 *); -- source
StateMachine![](/se-interop/image/right-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
extendedStateMachine :
StateMachine (0 *); -- source
StateMachine The state machines of which this is an extension.
Subsets: RedefinableElement.redefinedElement
![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
region :
Region (1 *); -- source
StateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
submachineState :
State (0 *); -- source
StateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
context :
BehavioredClassifier (0 1); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
isReentrant : Boolean (1 1); -- source
Behavior![](/se-interop/image/right-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedParameter :
Parameter (0 *); -- source
Behavior References a list of parameters to the behavior which describes the order
and type of arguments that can be given when the behavior is invoked and
of the values which will be returned when the behavior completes its execution.
{
composite,
ordered}
Subsets: Namespace.ownedMember
![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedParameterSet :
ParameterSet (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
postcondition :
Constraint (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
precondition :
Constraint (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
redefinedBehavior :
Behavior (0 *); -- source
Behavior![](/se-interop/image/right-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
specification :
BehavioralFeature (0 1); -- source
Behavior Designates a behavioral feature that the behavior implements. The behavioral
feature must be owned by the classifier that owns the behavior or be inherited
by it. The parameters of the behavioral feature and the implementing behavior
must match. A behavior does not need to have a specification, in which
case it either is the classifer behavior of a BehavioredClassifier or it
can only be invoked by another behavior of the classifier.
Opposite: BehavioralFeature.method
![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
extension :
Extension (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
isAbstract : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
isActive : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
nestedClassifier :
Classifier (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedAttribute :
Property (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedOperation :
Operation (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedReception :
Reception (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
superClass :
Class (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedPort :
Port (0 *); -- source
EncapsulatedClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedConnector :
Connector (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
part :
Property (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
role :
ConnectableElement (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
classifierBehavior :
Behavior (0 1); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
interfaceRealization :
InterfaceRealization (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedBehavior :
Behavior (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedTrigger :
Trigger (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
attribute :
Property (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
collaborationUse :
CollaborationUse (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
feature :
Feature (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
generalization :
Generalization (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
inheritedMember :
NamedElement (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
isFinalSpecialization : Boolean (1 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedUseCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
redefinedClassifier :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
representation :
CollaborationUse (0 1); -- source
Classifier![](/se-interop/image/right-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
substitution :
Substitution (0 *); -- source
Classifier References the substitutions that are owned by this Classifier.
{
composite}
Subsets: Element.ownedElement, NamedElement.clientDependency
Opposite: Substitution.substitutingClassifier
![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
useCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
package :
Package (0 1); -- source
Type![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
visibility :
VisibilityKind (1 1); -- source
PackageableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
elementImport :
ElementImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
importedMember :
PackageableElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
member :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedMember :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedRule :
Constraint (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
packageImport :
PackageImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
clientDependency :
Dependency (0 *); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
namespace :
Namespace (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/right-arrow.png?hunchentoot-session=99354%3A76F3147B85CE75F60C220D33F626FCFC)
owner :
Element (0 1); -- source
Element The Element that owns this element.
{
readonly}
Derived union with sources: (namespace, owningTemplateParameter, package)
Opposite: Element.ownedElement
Constraints:
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].