149
при выходе из объемлющего составного состояния запоминается то
состояние, в котором находилась вложенная машина перед выходом.
При повторном входе в данное составное состояние в качестве
текущего состояния восстанавливается то запомненное состояние, в
котором
машина
находилась
при
выходе.
Проще
говоря,
историческое состояние
заставляет автомат помнить, в каком
состоянии его прервали в прошлый раз и "продолжать начатое".
Историческое состояние имеет две разновидности.
Поверхностное историческое состояние (shallow history state)
запоминает, какое состояние было активным на том же уровне
вложенности, на каком находится само историческое состояние.
Глубинное историческое состояние (deep history state) помнит
не только активное состояние на данном уровне, но и на всех
вложенных уровнях.
Рассмотрим пример из информационной системы отдела кадров.
ИЗМЕНЕНИЯ В ТЕХНИЧЕСКОМ ЗАДАНИИ
Информационная система должна отслеживать состояние, в
котором находятся сотрудники, а именно: в офисе, в отпуске или на
больничном. В случае болезни действует следующее правило – если
сотрудник заболел в отпуске, то отпуск прерывается, а по
выздоровлении возобновляется.
Согласно
техническому заданию, если сотрудник заболел,
находясь в отпуске, то отпуск прерывается, а по выздоровлении
возобновляется. Для того чтобы построить
модель такого поведения,
нужно воспользоваться историческим состоянием. В данном случае
достаточно поверхностного исторического состояния (1) (shallow
history state), поскольку на данном уровне вложенности все состояния
уже простые. На рис. 4.8 приведен соответствующий фрагмент
машины состояний.