Font size


State represents a location of control with a particular set of reactions to conditions and/or events. A state can be either simple or, if it contains other states, composite. Control always resides in one of simple states, but the current set of reactions is a union of those of the current simple state and of all composite states containing it – i.e., a transition exiting any of these states may be taken.


To draw a state

  1. Drag the State element from the Statechart palette onto the diagram of agent.
  2. In some cases (especially when you want to draw a composite state) it is more convenient to use drawing mode. To activate it, double-click the State element in the palette. Its icon will turn into . Now you can draw a state of the required size simply by dragging in the diagram.



Name – The name of the state. The name is used to identify the state within the statechart.

Show name – If selected, the name of the state is displayed on a presentation diagram.

Ignore – If selected, the state is excluded from the model.

Fill color – Sets the fill color for the state. Click inside the control and choose a color from the set of most used ones, or choose some custom color using the Colors dialog box.

Entry action – Here you can type Java code to be executed when the statechart enters the state.

Exit action – Here you can type Java code to be executed when the statechart exits the state.


Working with state programmatically
Function Description
T getContainerState() Returns the upper level state of the current state or null if this state is at the topmost level (has no container state).
Set<T> getFullState()

Returns the unordered set containing this state and all composite states (if any) containing the current state.

Statechart<T> getStatechart(Agent agent) Returns the statechart for the given agent that owns the current state. Returns null if the agent has no statechart with the current state.
agent - the agent that owns the current state.
Set<T> getStatesInside() Returns the unordered set of all states (both simple and composite) contained inside the current state.
boolean isSimpleState() Returns true if the current state is a simple state; returns false if the current state is a composite state.
How can we improve this article?