История¶
Узел состояния истории (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
, но это редко бывает необходимо.