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).

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?