PlantUML - инструмент с открытым исходным кодом, позволяющий пользователям создавать диаграммы на простом текстовом языке.
UML - язык графического описания для моделирования бизнес-процессов и организационных структур.





-->

*, и переход к нему определяет его либо как начальное, либо как конечное состояние
state, за которым следует идентификатор и тело составного состояния между фигурными скобками {}. Взгляните на пример.
stateDiagram-v2
[*] --> First
state First {
[*] --> Second
state Second {
[*] --> second
second --> Third
state Third {
[*] --> third
third --> [*]
}
}
}

--> переходы, после этого описываются необходимые составные состояния.stateDiagram-v2
[*] --> First
First --> Second
First --> Third
state First {
[*] --> fir
fir --> [*]
}
state Second {
[*] --> sec
sec --> [*]
}
state Third {
[*] --> thi
thi --> [*]
}
Нельзя установить переходы между внутренними состояниями, принадлежащих разным составным состояниям.

<<choice>>.<<choice>> в синтаксисе диаграммы: ввести его нужно до введения основных условий.stateDiagram-v2
state if_state <<choice>>
[*] --> IsPositive
IsPositive --> if_state
if_state --> False: if n < 0
if_state --> True : if n >= 0

<<fork>> и <<join>>.stateDiagram-v2
state fork_state <<fork>>
[*] --> fork_state
fork_state --> State2
fork_state --> State3
state join_state <<join>>
State2 --> join_state
State3 --> join_state
join_state --> State4
з State4 --> [*]

В некоторых случаях необходимо создать заметку на диаграмме. Для этого используется заметка Post-it note.
В примере ниже показано как поместить заметку справа или слева от узла.
stateDiagram-v2
State1: The state with a note
note right of State1
Important information! You can write
notes.
end note
State1 --> State2
note left of State2 : This is the note to the left.

Существует возможность создания параллелей с помощью символа --. При необходимости установки нескольких составных состояний параллельно друг другу, после создания состояния устанавливается символ --.
stateDiagram-v2
[*] --> Active
state Active {
[*] --> NumLockOff
NumLockOff --> NumLockOn : EvNumLockPressed
NumLockOn --> NumLockOff : EvNumLockPressed
--
[*] --> CapsLockOff
CapsLockOff --> CapsLockOn : EvCapsLockPressed
CapsLockOn --> CapsLockOff : EvCapsLockPressed
--
[*] --> ScrollLockOff
ScrollLockOff --> ScrollLockOn : EvScrollLockPressed
ScrollLockOn --> ScrollLockOff : EvScrollLockPressed
}

stateDiagram
direction LR
[*] --> A
A --> B
B --> C
state B {
direction LR
a --> b
}
B --> D

TD/TB - сверху-вниз;
BT - снизу-вверх;
RL - справа-налево;
LR - слева-направо.
stateDiagram-v2
[*] --> Still
Still --> [*]
%% this is a comment
Still --> Moving
Moving --> Still %% another comment
Moving --> Crash
Crash --> [*]
