OpenU.Ru
Событие, распознавание которого отложено до тех пор,
пока объект не выйдет из определимого состояния.
См. state machine; transition.
Семантика
Определенные события могут быть помечены в состоянии как отложенные. Если событие
происходит тогда, когда объект находится и том состоянии, в котором оно является
отложенным, событие не напускает переход, а значит, не несет за собой немедленное
действие. Вместо этого, событие сохраняется до тех нор, пока объект не пойдет
в другое состояние, в котором это событие уже не будет отложенным. В то время
пока объект пребывает в первом состоянии, могут происходить другие события,
которые обрабатываются обычным образом. Когда объект входит и новое состояние,
все отложенные ранее события начинают происходить одно за другим и могут при
этом запускать переходы. (Порядок, в котором происходят отложенные и сохраненные
ранее события, не специфицируется. Соответственно, полагаться на конкретный
порядок в данном случае будет рискованно.) Если событие не запускает никакого
перехода, оно игнорируется и теряется.
В стандартных конечных автоматах отложенные
события нужно использовать осторожно. Зачастую такие события могут быть смоделированы
непосредственно с помощью параллельного состояния, которое реагирует ну них,
в то время как основное вычисление занято чем-то еще. С их помощью можно скоординировать
вычисления, не теряя при этом асинхронных сообщений, а также использовать в
состояниях деятельности.
Если у состояния есть переход, который напускается событием, которое на данный
момент отложено, то он все равно выполняется.
Нотация
Отложенное событие отображается в виде внутреннего
перехода, запускаемого по событию, помеченному специальным зарезервированным
словом defer (отложить). Отсрочка события относится к состоянию и всем его,
вложенным подсостояниям (рис. 88).
Рис. 87. Текущее событие
Рис. 88. Отложенное событие