🧩
New! Render PlantUML diagrams directly inside GitHub with our official browser extension — No server. No tokens. No tracking. Zero permissions but clipboard. — Try it out and let us know what you think!

Диаграмма состояний

Диаграммы состояний позволяют наглядно представить различные состояния, в которых может находиться система или объект, а также переходы между этими состояниями. Они необходимы для моделирования динамического поведения систем, отражая их реакцию на различные события во времени. Диаграммы состояний отображают жизненный цикл системы, облегчая понимание, проектирование и оптимизацию ее поведения.

Использование PlantUML для создания диаграмм состояний имеет ряд преимуществ:

Простое состояние

Для изображения начального и конечного псевдосостояний используется [*].

Используйте --> для изображения переходов.

Change state rendering

You can use hide empty description to render state as simple box.

Составное состояние

Также можно изображать составные состояния. Для этого его следует объявить, используя конструкцию state.

Внутренние состояния

Внутреннее состояние к внутреннему состоянию

[Ref. QA-3300]

WARNING
 This translation need to be updated. 
WARNING

Длинные имена

Вы также можете использовать ключевое слово state для сокращения длинного имени состояния.

History [[H], [H*]]

You can use [H] for the history and [H*] for the deep history of a substate.

Ветвление [fork, join]

Также можно использовать стереотипы <<fork>> и <<join>> для создания ветвления и слияния обратно.

Параллельные состояния

Используя -- или ||, вы можете объявлять параллельные подсостояния внутри составного состояния.

Горизонтальное разделение --

Вертикальное разделение ||

[Ref. [QA-3086](https://forum.plantuml.net/3086/state-diagram-concurrent-state-horizontal-line)]
WARNING
 This translation need to be updated. 
WARNING

Условия [choice]

Стереотип <<choice>> может быть использован для создания состояний-условий.

Stereotypes full example [start, choice, fork, join, end, history, history*]

Start, choice, fork, join, end

[Ref. QA-404, QA-1159 and GH-887]

History, history*

[Ref. QA-16824]

Minimal example with all stereotypes

[Ref. QA-19174]

Point [entryPoint, exitPoint]

You can add point with <<entryPoint>> and <<exitPoint>> stereotypes:

Pin [inputPin, outputPin]

You can add pin with <<inputPin>> and <<outputPin>> stereotypes:

[Ref. QA-4309]

Expansion [expansionInput, expansionOutput]

You can add expansion with <<expansionInput>> and <<expansionOutput>> stereotypes:

[Ref. QA-4309]

Направления стрелок

Для изображения стрелок перехода горизонтально используется оператор ->. Следующий синтаксис позволяет задать другое направление.

Вы также можете сокращать слова в описании стрелок (например, -d-> или -do-> вместо -down->).

Не следует злоупотреблять этой функциональностью: GraphViz в большинстве случаев дает хороший результат без лишних манипуляций.

Изменение цвета и отображения

Можно использовать параметр цвета вместе со стилем.

[Ref. Incubation: Change line color in state diagrams]

[Ref. [QA-93](https://forum.plantuml.net/93/how-use-different-color-for-arrows-in-state-diagram)]
WARNING
 This translation need to be updated. 
WARNING

Change head or tail of arrow line

Заметки

К состоянию можно добавлять заметки, используя специальные ключевые слова: note left of, note right of, note top of, note bottom of .

Заметки можно определять в несколько строк.

Можно создавать заметки, не привязанные ни к какому объекту.

WARNING
 This translation need to be updated. 
WARNING

Заметки о переходах

Можно оставлять заметки о переходах состояний или связей с помощью note on link.

Еще о заметках

Также заметки можно прикреплять к составным состояниям.

Inline color

[Ref. QA-1812]

Skinparam

Вы можете использовать команду skinparam для изменения шрифтов и цветов диаграммы

Вы можете использовать данную команду :

Вы можете задавать цвета и шрифты для именованных шаблонов состояний.

WARNING
 This translation need to be updated. 
WARNING

Changing style

You can change style.

[Ref. GH-880]

Change state color and style (inline style)

You can change the color or style of individual state using the following notation:

With background color first (#color), then line style and line color (##[style]color ).

[Ref. QA-1487]

FIXME
🚩 text:color seems not to be taken into account
FIXME

[Adapted from QA-3770]

Alias

With State you can use alias, like:

or:

[Ref. QA-1748, QA-14560]

Display JSON Data on State diagram

Simple example

[Ref. QA-17275]

For another example, see on JSON page.

State description

You can add description to a state or to a composite state.

[Ref. QA-16719]

Style for Nested State Body

[Ref. QA-16774]

Mainframe and frame

Mainframe

You can use global mainframe:

See also: Mainframe on all diagram.

Frame

Or simply local frame:

[Ref. QA-15340]

Specific SkinParameter

By default

By default label are near arrow.

Edge Label Style

You can use skinparam stateDiagramEdgeLabelStyle node to put label on the middle of the arrow, and create a pseudo node.

[Ref. GH-2379]

Mix label defintion

By using localy -[node]-> form.