OpenU.Ru
О состоянии, в которое объект уже вошел, но из которого
еще не вышел; то есть состояние, в котором объект находится в настоящий момент.
См. active class; active
object.
Рис. 7. Активации
Семантика
Состояние становится активным, когда срабатывает переход
в это состояние. Состояние перестает быть активным, когда срабатывает исходящий
переход. Если у объекта есть поток управления, то, по крайней мере одно из его
состояний является активным. (В вырожденном случае класс может иметь только
одно состояние. При этом реакция объекта этого класса
на любое событие всегда одинакова.) Если активным является
состояние в конечном автомате того класса, которому принадлежит объект, то говорят,
что объект находится в состоянии.
Объект может находиться одновременно в нескольких состояниях. Множество активных
состояний называется конфигурацией активных состояний. Если вложенное состояние
активно, то все содержащие его состояния тоже активны. Если объект допускает
параллелизм, то несколько подсостояний могут быть активными одновременно. Каждый
переход затрагивает, по большей части, несколько состояний в конфигурации активного
состояния. Незатронутые переходом состояния остаются активными.
Композитное состояние может быть как последовательным, так и параллельным. Если
оно последовательное, то активным может быть только одно из его непосредственных
подсостояний. Если оно параллельное, то активным может быть каждое из его непосредственных
подсостояний. Другими словами, композитное состояние раскрывается в дерево и/или
активных подсостояний. При этом на каждом уровне некоторые состояния будут активными.
Переход через границу композитного состояния должен быть сконструирован с учетом
ограничений параллелизма. Переход в последовательное композитное состояние обычно
имеет одно исходное и одно целевое состояние. При запуске такого перехода общее
число активных состояний не меняется. Переход в параллельное композитное состояние
обычно имеет одно исходное и одно целевое состояние для каждой подобласти параллельного
композитного состояния. Такой вид перехода называется развилка (fork).
Если одна или несколько целевых областей опущены, тогда целью становится исходное
состояние каждой отсутствующей области. Если же у какой-то из областей отсутствует
исходное состояние, модель считается плохо согласованной.
Запуск такого перехода приводит к увеличению числа активных состояний.
На выходе из параллельного композитного состояния ситуация выглядит прямо противоположным
образом.
См. статью энциклопедии state machine, в которой
содержится полное обсуждение семантики параллельных состояний и комплексных
переходов.
Пример
В верхней части рис. 8 дан пример конечного автомата, в котором есть как последовательное,
так и параллельное композитные состояния.
Чтобы сконцентрировать внимание на состояниях, переходы на рисунке не отображены.
В нижней части этого же рисунка показаны различные конфигурации состояний, которые
могут быть активными одновременно. В данном примере существует четыре возможных
конфигурации активных состояний. Конкретными являются только состояния-листы.
Более высокие состояния абстрактны, то есть объект не может быть ни в одном
из них, нe будучи при этом во вложенном состоянии-листе. Например, объект не
может находиться в состоянии Q без того, чтобы не быть при этом в одном из подсостояний
Q. Поскольку состояние Q параллельное, подсостояния С и D должны быть активны
тогда же, когда активно Q. Каждому состоянию-листу соответствует свой поток
управления. В более масштабном примере число возможных конфигураций может расти
экспоненциально и показать их все будет просто невозможно.
Рис. 8. Параллельно активные состояния