State Machines

State Machines illustrate how an element (often a Class) can move between states, classifying its behavior according to transition triggers and constraining guards.

You generate State Machine elements and connectors from the 'State' pages of the Diagram Toolbox.


  • State Machines were formerly known as State diagrams
  • State Machine representations in UML are based on the Harel State Chart Notation and therefore are sometimes referred to as State Charts

State Tables

You can display a State Machine as a diagram, or as a table in one of three relationship formats.

Select the display format



See also


Right-click on the diagram background and select the 'Statechart Editor' option.


Select the appropriate display option:

  • Diagram
  • Table (State-Next State)
  • Table (State-Trigger)
  • Table (Trigger-State)

State Machine Table

Example Diagram

This diagram illustrates some features of State Machines.

Composite Diagram States

The chain-link symbol in the bottom right corner of the Saved State indicates that it is a State with a Composite diagram.

You have two options for displaying the contents of a State's Composite diagram. Firstly, you can double-click on the parent element to display its child diagram separately, as shown here:

By default, the child diagram displays within a labeled frame that represents the parent object in the context of the child diagram. You can right-click on the background and select the 'Hide Diagram Frame' option to hide the frame, and on the 'Show Diagram Frame' option to show the frame again.

Alternatively, you can right-click on the composite element on the main diagram and select the 'Advanced | Show Composite Diagram' option, which again displays the child diagram in a labeled frame, but this time within the context of the parent diagram.

State Machine Diagram Element Toolbox Items



See also

A State represents a situation where some invariant condition holds; this condition can be static (waiting for an event) or dynamic (performing a set of activities).


A State Machine element is a container for groups of related State elements.


The Initial element represents a pseudo-state used to denote the default state of a Composite State; there can be one Initial vertex in each Region of the Composite State.


The Activity Final element indicates the completion of an Activity; upon reaching the Final, all execution in the Activity diagram is aborted.


There are two types of History pseudo-states defined in UML: shallow and deep history.


A Synch state is useful for indicating that concurrent paths of a State Machine are synchronized. They are used to split and rejoin periods of parallel processing.


An Object is a particular instance of a Class at run time.


The Choice pseudo-state is used to compose complex transitional paths, where the outgoing transition path is decided by dynamic, run-time conditions.


Junction pseudo-states are used to design complex transitional paths in State Machine diagrams. A Junction can be used to combine or merge multiple paths into a shared transition path.


Entry Point pseudo-states are used to define the beginning of a State Machine. An Entry Point exists for each region, directing the initial concurrent state configuration.


Exit Points are used in State Machine elements and State Machine diagrams to denote the point where the machine is exited and the transition sourcing this exit point.


The Terminate pseudo-state indicates that upon entry of its pseudo-state, the State Machine's execution ends.


A Fork/Join element can be used to: 1) split a single flow into a number of concurrent flows, 2) join a number of concurrent flows or 3) both join and fork a number of incoming flows to a number of outgoing flows.

Fork/Join Fork Join

A Fork/Join element can be used to:

1)  Split a single flow into a number of concurrent flows

2)  Join a number of concurrent flows or

3)  Both join and fork a number of incoming flows to a number of outgoing flows

State Machine Diagram Connector Toolbox Items



See also

A Transition connector represents the logical movement from one State to another in a State Machine diagram.


An Object Flow connects two elements, with specific data passing through it, modeling an active transition.

Object Flow


  • State elements can display either with or without a line across them; the line - as shown above - displays when the element has features such as attributes (which could be hidden) or when the 'Show State Compartment' checkbox is selected in the 'Objects' page of the 'Options' dialog
  • It is possible to add Entry Point and Exit Point elements to the border of a State or State Machine element - right-click on the element and select the 'New Element | Entry Point' or 'Exit Point' option; if the element is a composite element and represented by a frame, you can also right-click on the selected frame and add the Entry Point or Exit Point elements
  • If you have Entry Points and/or Exit Points on a State Machine that is a classifier for another State, you can create ConnectionPointReferences to the classifier from the other State
  • It is also possible to add Regions to a State element or State Machine element frame; right-click on the selected frame and select the 'Define Concurrent Substates' option
  • You can perform model simulations on State Machine models, and the model that you simulate can contain elements from more than one Package; to include the external elements in the simulation, you must create a Package diagram containing the 'parent' Package and the 'external' Packages containing the external elements, and then create a Package Import connector from the parent Package to each external Package

Learn more