Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Государственная машина является хорошо известной парадигмой для разработки программ. Действие StateMachine, а также State, Transition и другие действия можно использовать для создания программ рабочих процессов машин состояний. В этом разделе представлен обзор создания рабочих процессов компьютера состояния.
Общие сведения о рабочем процессе "Компьютер состояния"
Рабочие процессы компьютера состояния предоставляют стиль моделирования, с помощью которого можно моделировать рабочий процесс на основе событий. Активность StateMachine содержит состояния и переходы, которые составляют логику автомата состояния, и может использоваться в любом месте, где может быть использована активность. В среде выполнения компьютера состояния существует несколько классов:
Чтобы создать рабочий процесс машины состояний, состояния добавляются в StateMachine активность, а переходы используются для управления потоком между состояниями. На следующем снимке экрана, из руководства по началу работы, шаг как создать рабочий процесс на основе автомата состояний, показан рабочий процесс автомата состояний с тремя состояниями и тремя переходами. Инициализация Цели — это начальное состояние и представляет первое состояние в процессе работы. Это обозначается линией, ведущей к ней от начального узла. Окончательное состояние рабочего процесса называется FinalState и представляет точку завершения рабочего процесса.
Рабочий процесс компьютера состояния должен иметь только одно и только одно начальное состояние, а также по крайней мере одно окончательное состояние. Каждое состояние, которое не является окончательным, должно иметь по крайней мере один переход. В следующих разделах описывается создание и настройка состояний и переходов.
Создание и настройка состояний
Представляет State состояние, в котором может находиться автомат состояния. Чтобы добавить State к рабочему процессу, перетащите конструктор действия State из раздела Машина состоянийИнструменты и поместите его на StateMachine действие в области конструктора рабочих процессов Windows.
Чтобы настроить состояние в качестве начального состояния, щелкните правой кнопкой мыши состояние и выберите "Задать в качестве начального состояния". Кроме того, если текущее начальное состояние отсутствует, начальное состояние можно назначить путем перетаскивания строки из начального узла в верхней части рабочего процесса в требуемое состояние. StateMachine Когда действие переносится в конструктор рабочих процессов, оно предварительно настроено с начальным состоянием под именем State1. Рабочий процесс компьютера состояния должен иметь одно и только одно начальное состояние.
Состояние, представляющее завершающееся состояние на компьютере состояния, называется окончательным. Конечное состояние — это состояние, для которого установлено его свойство IsFinal как true
, не имеет Exit активности и от него не исходят никакие переходы. Чтобы добавить окончательное состояние в рабочий процесс, перетащите конструктор действий FinalState из раздела Автомат состоянийпанели элементов и поместите его на StateMachine действие в области конструктора рабочих процессов Windows. Рабочий процесс компьютера состояния должен иметь по крайней мере одно окончательное состояние.
Настройка действий входа и выхода
Состояние может иметь Entry действие и Exit действие. (Состояние, настроенное в качестве окончательного состояния, может иметь только действие записи. Когда экземпляр рабочего процесса входит в состояние, все действия в действии входа выполняются. После завершения действия входа, триггеры для переходов состояния будут запланированы. При подтверждении перехода в другое состояние, выполняются действия, связанные с выходом, даже если состояние возвращается обратно в исходное. После завершения действия выхода выполняются действия, связанные с переходом, а затем происходит переход к новому состоянию, и назначаются действия его входа.
Замечание
При отладке потока работ автомата состояний, точки останова можно поместить на деятельность корневого автомата состояний и состояния в потоке работ автомата состояний. Точки останова нельзя размещать непосредственно на переходах, но их можно размещать на любых активностях, содержащихся в состояниях и переходах.
Создание и настройка переходов
Все состояния должны иметь по крайней мере один переход, за исключением окончательного состояния, которое может не иметь никаких переходов. Переходы могут быть добавлены после добавления состояния в рабочий процесс машины состояний или созданы одновременно с добавлением состояния.
Чтобы добавить State и создать переход за один шаг, перетащите активность Состояние из раздела Автомат состоянийпанели элементов и наведите указатель мыши на другое состояние в Конструкторе рабочих процессов. Когда перетаскиваемый State находится над другим State, четыре треугольника появятся вокруг другого State. Если State сбрасывается на один из четырех треугольников, он добавляется в машину состояний, и создается переход от источника State к месту назначения State. Дополнительные сведения см. в конструкторе действий перехода.
Чтобы создать переход после добавления состояния, существует два варианта. Первый вариант — перетащить состояние из области конструктора рабочих процессов, навести указатель мыши на существующее состояние и оставить его на одну из точек сброса. Это аналогично методу, описанному в предыдущем разделе. Вы также можете навести указатель мыши на требуемое исходное состояние и перетащить линию в нужное целевое состояние.
Замечание
Одно состояние на компьютере состояния может иметь до 76 переходов, созданных с помощью конструктора рабочих процессов. Ограничение на переходы для состояния рабочих процессов, созданных за пределами конструктора, ограничено только системными ресурсами.
Переход может иметь Trigger, a Condition, и Action. Переход Trigger назначается, когда действие исходного состояния Entry завершено. Как правило, Trigger это действие, которое ожидает возникновения какого-либо типа события, но это может быть любое действие или никакого действия вообще нет.
Trigger После завершения действия оценивается Condition, если оно присутствует. При отсутствии Trigger активности Condition немедленно оценивается. Если условие принимает значение false
, переход отменяется, а действие Trigger для всех переходов из состояния пересматривается. Если существуют другие переходы, которые используют то же исходное состояние, что и текущий переход, эти Trigger действия отменяются и перепланируются. Если Condition оценивается как true
, или отсутствует условие, то выполняется действие Exit исходного состояния, а затем выполняется Action переход. Когда Action завершится, управление передается в целевое состояние.
Переходы, использующие общий триггер, называются переходами с общим триггером. Каждый переход в группе переходов общего триггера имеет один и тот же триггер, но уникальный Condition и действие. Чтобы добавить дополнительные действия в переход и создать общий переход, щелкните круг, указывающий начало требуемого перехода и перетащите его в нужное состояние. Новый переход будет иметь тот же триггер, что и начальный, но с уникальным условием и действием. Общие переходы также можно создать из конструктора переходов, нажав кнопку "Добавить общий триггер" в нижней части конструктора переходов и выбрав требуемое целевое состояние из доступных состояний для подключения раскрывающегося списка.
Замечание
Обратите внимание, что если условие Condition перехода оценивается как False
(или все условия общего триггерного перехода оцениваются как False
), переход не произойдет, и все триггеры для всех переходов из состояния будут перезапланированы.
Дополнительные сведения о создании рабочих процессов машины состояний см. в статье "Практическое руководство: создание рабочего процесса машины состояний", конструктор действий машины состояний, конструктор действий машины состояний, конструктор действий конечного состояния и конструктор действий перехода.
Терминология автомата состояний
В этом разделе определяется словарь машины состояний, используемый в этой теме.
Государство
Базовая единица, которая создает компьютер с состоянием. Автомат состояний может находиться в одном состоянии в каждый конкретный момент времени.
Действие входа
Действие, выполняемое при вводе состояния
Действие выхода
Действие, выполняемое при выходе из состояния
Переход
Направленная связь между двумя состояниями, представляющая полный ответ конечного компьютера на событие определенного типа.
Совместный переход
Переход, который использует исходное состояние и триггер с одним или несколькими переходами, но имеет уникальное условие и действие.
Триггер
Действие триггера, которое приводит к переходу.
Состояние
Ограничение, которое должно быть выполнено как true
после активации триггера, чтобы переход был завершён.
Действие перехода
Действие, выполняемое при выполнении определенного перехода.
Условный переход
Переход с явным условием.
Самостоятельный переход
Переход, который передается из состояния в само себя.
Начальное состояние
Состояние, представляющее начальную точку компьютера состояния.
Конечное состояние
Состояние, представляющее завершение компьютера состояния.