История¶
Узел состояния истории (history) — это особый вид узла состояния, который при достижении указывает машине перейти к последнему значению состояния этой области. Есть два типа состояний истории:
'shallow', который указывает только значение истории верхнего уровня, или'deep', который определяет верхний уровень и все значения истории дочернего уровня.
Конфигурация состояния истории¶
Конфигурация для состояния истории такая же, как и для узла атомарного состояния, с некоторыми дополнительными свойствами:
type: 'history'чтобы указать, что это узел состояния историиhistory(shallow|deep) — глубина истории. По-умолчаниюshallow.target(StateValue) — цель по умолчанию, если история не существует. По умолчанию используется значение начального состояния родительского узла.
Рассмотрим следующую (надуманную) диаграмму состояний:
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 42 43 44 | |
В приведенной выше машине переход от fanOff по событию POWER переходит в состояние fanOn.hist, которое определяется как состояние неглубокой истории. Это означает, что автомат должен перейти в состояние fanOn и в какое бы ни было предыдущее подсостояние fanOn. По умолчанию fanOn перейдет в исходное состояние first, если нет состояния истории.
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 | |
Если задана цель target, и история не существует для региона состояния, в котором задано состояние истории, по умолчанию она перейдет в состояние target:
1 2 3 4 5 6 7 8 9 10 11 | |
Примечания¶
- К состояниям истории можно получить прямой доступ из экземпляров
Stateвstate.history, но это редко бывает необходимо.