OpenU.Ru
Событие, которое запустило непрерывный шаг выполнения
конечного автомата.
См. run to completion; state
machine: transition.
Семантика
В виде реакции на событие конечный автомат
может для удобства обходить несколько связанных сегментов переходов. Все сегменты
переходов, кроме конечного, идут к псевдосостояниям - фиктивным состояниям,
которые помогают структурировать конечный автомат. Фиктивные состояния при этом
не ожидают внешних событий. Вообще, все сегменты можно собрать в один-единственный
переход, однако если переход делится на несколько сегментов с использованием
псевдосостояний, это позволяет нескольким переходам иметь общие под последовательности.
Выполнение цепочки сегментов перехода атомарно - это
часть одного шага, который не могут прервать внешние события. Во время выполнения
такой цепочки действия и сторожевые условия, прикрепленные к сегментам перехода,
имеют неявный доступ к событию, которое запустило первый переход, и к его параметрам.
Во время фазы перехода (transition) это событие
известно как текущее. Тип такого события можно узнать с помощью полиморфной
операции или оператора выбора. После того как тип события стал известен, можно
получить доступ и к его параметрам.
Ткущее событие особенно уместно использовать во время начального перехода при
создании нового объекта для получения параметров создания. При создании нового
объекта событие, которое его создает, становится текущим, а его параметры -
доступными во время | начального перехода конечного автомата нового объекта.
Пример
На РИС. 87 изображен переход из состояния Idle (Ожидание) к состоянию Purchase (Покупка), который запускается событием request (запрос). Действие на входе при покупке вызывает операцию setup (установка), при которой используется текущее событие. Программа имеет доступ к текущему событию для того, чтобы получить событие request и его параметр, product (продукт). Если у текущего события существует несколько возможных связываний, то, чтобы получить нужное переключающее событие, программа может использовать оператор выбора. Синтаксис определяется языком программирования.
Нотация
Текущее событие можно обозначить с помощью ключевого слова currentEvent, которое
вставляется в выражение. Конкретный язык выражения
может предоставить и более подробный синтаксис.