Исторические состояния

В силу разных причин выполнение композитного состояния может прерываться. Историческое состояние (history state) применяется в контексте композитного состояния. Оно используется для запоминания того из последовательных подсостояний, которое было текущим в момент выхода из композитного состояния. Существует две разновидности исторического состояния: недавнее (shallow) и давнее (deep).

Shallow history всегда является первым подсостоянием в композитном состоянии (переход извне всегда осуществляется в это состояние, оно же заменяет начальное псевдосостояние). При первом переходе в композитное состояние, историческое состояние всегда пусто, и выполняет роль начального (при этом начальное псевдосостояние все равно отображается на диаграмме). При всех последующих переходах, историческое состояние автоматически осуществляет переход в то подсостояние, которое было текущим в момент выхода из этого композитного состояния. При достижении конечного псевдосостояния композитным состоянием, историческое состояние обнуляется и снова будет выполнять роль начального псевдосостояния. Недавнее историческое состояние может запоминать только текущее подсостояние того автомата, к которому относится. При этом запомненное подсостояние, в свою очередь, может также быть композитным.

Deep history применяется для запоминания всех подсостояний любого уровня вложенности. Семантика аналогична недавнему историческому состоянию.

Следующая диаграмма показывает семантику исторического состояния. В данном примере композитное состояние «Обработка» может прерываться в подсостояниях «Проверка 1» и «Проверка 2». После возврата в состояние «Обработка» управление автоматически перейдет в то состояние, на котором обработка была прервана.

Рис.11. Пример использования исторического состояния.

Контрольные вопросы

1. Приведите определения следующих понятий: автомат, состояние, событие, действие, переход.

2. Для чего предназначена диаграмма состояний?

3. К каким элементам системы может быть привязана диаграмма состояний?

4. Как изображается диаграмма состояний?

5. Какие существуют типы состояний?

6. Для чего служат действия, события, сторожевые условия?

7. Какие типы исторических состояний бывают? В чем их различие?