Финальные состояния
Финальное состояние — это состояние, которое представляет завершение или успешное окончание машины. Оно определяется свойством type: 'final' на узле состояния:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Когда машина достигает финального состояния, она больше не может получать события, и всё, что работает внутри неё, отменяется и очищается. Блок с окружающей рамкой представляет финальное состояние.
Машина может иметь несколько финальных состояний или не иметь финальных состояний.
- Машина состояний может иметь ноль или более финальных состояний. Некоторые машины могут работать бесконечно и не нуждаться в завершении.
- Финальные состояния могут иметь данные
output, которые отправляются родительской машине при завершении машины. - Когда машина достигает финального состояния верхнего уровня, она завершается.
- Финальные состояния не могут иметь переходов
Финальные состояния верхнего уровня¶
Финальное состояние верхнего уровня — это финальное состояние, которое является непосредственным дочерним состоянием машины. Когда машина достигает финального состояния верхнего уровня, машина завершается. Когда машина завершается, она больше не может получать события и переходить.
Дочерние финальные состояния¶
Когда достигается дочернее финальное состояние родительского (составного) состояния, это родительское состояние считается «завершённым». Переход onDone этого родительского состояния выполняется автоматически.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | |
Финальные состояния в параллельных состояниях¶
Когда все регионы параллельного состояния «завершены», параллельное состояние считается «завершённым». Выполняется переход onDone параллельного состояния.
В этом примере состояние preparation является параллельным состоянием с двумя регионами: beans и water. Когда оба региона завершены, состояние preparation завершено, и происходит вход в состояние brewing.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | |
Выходные данные¶
Когда машина достигает своего финального состояния верхнего уровня, она может произвести выходные данные. Вы можете указать эти выходные данные в свойстве .output конфигурации машины:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Свойство .output также может быть статическим значением:
1 2 3 4 5 6 7 8 | |
Шпаргалка по финальным состояниям¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Шпаргалка: финальные состояния в параллельных состояниях¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | |