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

Сложное состояние может содержать глубокие и поверхностные исторические состояния.

Когда управление передается историческому состоянию, выполняется действие этого состояния, и управление немедленно передается тому состоянию, на которое ссылается это историческое состояние.

 Чтобы нарисовать историческое состояние
  1. Перетащите элемент Историческое состояние  из палитры Диаграмма состояний в то место графического редактора, где вы хотите его нарисовать.
  2. В панели Свойства, выберите Тип состояния: глубокое или поверхностное.
Свойства

Имя – Имя состояния. Имя используется для идентификации состояния и доступа к нему из кода.

Отображать имя – Если опция выбрана, то имя состояния будет отображаться в графическом редакторе.

Исключить – Если опция выбрана, то состояние будет исключено из модели.

Тип состояния - Задает тип состояния:

поверхностное: историческое состояние представляет собой ссылку на наиболее часто посещаемое состояние в сложном состоянии, которое находится на данном уровне иерархии состояний

глубокоеисторическое состояние представляет собой ссылку на наиболее часто посещаемое состояние внутри этого сложного состояния

Действие - Код, выполняемый, когда управление переходит в это состояние (состояние становится активным).

Рисунок, приведенный выше, показывает разницу между глубоким и поверхностным историческими состояниями. Предположим, что наиболее часто посещаемым состоянием в сложном состоянии A является состояние E. Если управление передается в глубокое историческое состояние H*, то оно передается дальше в состояние E, в то время как поверхностное историческое состояние H передаст управление в состояние C – наиболее часто посещаемое состояние на данном уровне иерархии состояний. Затем вызывается стандартная процедура нахождения начального состояния внутри состояния C, и стейтчарт завершает свою работу в состоянии D.

Если на уровне исторического состояния нет ни одного посещенного состояния (т.е. история пока отсутствует), то управление будет передаваться соответствующему начальному состоянию, если, конечно, для исторического состояния явно не задано состояние по умолчанию. Состоянием по умолчанию для исторического состояния является то состояние, в которое направлен переход из этого состояния (см. рисунок, приведенный ниже). У одного исторического состояния может быть только один такой переход (переход с типом триггера Если история отсутствует).


Пример

Демо модель: Statechart for Product Lifecycle