uk.ac.ucl.cs.uml.jmi.BehavioralElements.StateMachines
Interface PseudoState
- All Superinterfaces:
- Element, ExtObject, ModelElement, javax.jmi.reflect.RefBaseObject, javax.jmi.reflect.RefFeatured, javax.jmi.reflect.RefObject, StateVertex
- All Known Implementing Classes:
- PseudoState_Impl
public interface PseudoState
- extends StateVertex
A pseudostate is an abstraction that encompasses different types of
transient vertices in the state machine graph. They are used,
typically, to connect multiple transitions into more complex state
transitions paths. For example, by combining a transition entering
a fork pseudostate with a set of transitions exiting the fork
pseudostate, we get a compound transition that leads to a set of
concurrent target states.
The following pseudostate kinds are defined:
An initial pseudostate represents a default vertex that is the
source for a single transition to the default state of a composite
state. There can be at most one initial vertex in a composite state.
deepHistory is used as a shorthand notation that represents the
most recent active configuration of the composite state that
directly contains this pseudostate; that is, the state configuration
that was active when the composite state was last exited. A
composite state can have at most one deep history vertex. A
transition may originate from the history connector to the default
deep history state. This transition is taken in case the composite
state had never been active before.
shallowHistory is a shorthand notation that represents the most
recent active substate of its containing state (but not the
substates of that substate). A composite state can have at most one
shallow history vertex. A transition coming into the shallow history
vertex is equivalent to a transition coming into the most recent
active substate of a state. A transition may originate from the
history connector to the initial shallow history state. This
transition is taken in case the composite state had never been
active before.
join vertices serve to merge several transitions emanating from
source vertices in different orthogonal regions. The transitions
entering a join vertex cannot have guards.
fork vertices serve to split an incoming transition into two or
more transitions terminating on orthogonal target vertices. The
egments outgoing from a fork vertex must not have guards.
junction vertices are semantic-free vertices that are used to
chain together multiple transitions. They are used to construct
compound transition paths between states. For example, a junction
can be used to converge multiple incoming transitions into a single
outgoing transition representing a shared transition path (this is
known as an merge). Conversely, they can be used to split an
incoming transition into multiple outgoing transition segments with
different guard conditions. This realizes a static conditional
branch. (In the latter case, outgoing transitions whose guard
conditions evaluate to false are disabled. A predefined guard
denoted else may be defined for at most one outgoing transition.
This transition is enabled if all the guards labeling the other
transitions are false.) Static conditional branches are distinct
from dynamic conditional branches that are realized by choice
vertices (described below).
choice vertices which, when reached, result in the dynamic
evaluation of the guards of its outgoing transitions. This realizes
a dynamic conditional branch. It allows splitting of transitions
into multiple outgoing paths such that the decision on which path to
take may be a function of the results of prior actions performed in
the same run-to-completion step. If more than one of the guards
evaluates to true, an arbitrary one is selected. If none of the
guards evaluates to true, then the model is considered ill formed.
(To avoid this, it is recommended to define one outgoing transition
with the predefined "else" guard for every choice vertex.) Choice
vertices should be distinguished from static branch points that are
based on junction points (described above).
PseudoState is a child of StateVertex.
Methods inherited from interface uk.ac.ucl.cs.uml.jmi.Foundation.Core.ModelElement |
getAsArgument, getBehavior, getClientDependency, getComment, getConstraint, getContainer, getDefaultElement, getIsSpecification, getName, getNamespace, getPackage, getPresentation, getReferenceTag, getSourceFlow, getStereotype, getSupplierDependency, getTaggedValue, getTargetFlow, getTemplate, getTemplateArgument, getTemplateParameter, getVisibility, setDefaultElement, setIsSpecification, setName, setNamespace, setTemplate, setVisibility |
Methods inherited from interface javax.jmi.reflect.RefObject |
refClass, refDelete, refImmediateComposite, refIsInstanceOf, refOutermostComposite |
Methods inherited from interface javax.jmi.reflect.RefFeatured |
refGetValue, refGetValue, refInvokeOperation, refInvokeOperation, refSetValue, refSetValue |
Methods inherited from interface javax.jmi.reflect.RefBaseObject |
equals, hashCode, refImmediatePackage, refMetaObject, refMofId, refOutermostPackage, refVerifyConstraints |
getKind
PseudostateKind getKind()
throws javax.jmi.reflect.JmiException
- Throws:
javax.jmi.reflect.JmiException
setKind
void setKind(PseudostateKind kind)
throws javax.jmi.reflect.JmiException
- Setter for atomic property kind)
- Throws:
javax.jmi.reflect.JmiException