Бөлісу құралы:


Рабочие процессы конечного автомата

Конечный автомат - широко известный принцип разработки программ. Действие StateMachine, а также State, Transition и другие действия могут использоваться для сборки программ рабочего процесса конечных автоматов. В этом разделе представлены общие сведения о создании рабочих процессов конечного автомата.

Общие сведения о рабочем процессе конечного автомата

Рабочие процессы конечного автомата обеспечивают стиль моделирования, с помощью которого можно моделировать рабочий процесс в режиме, управляемом событиями. Действие StateMachine содержит состояния и переходы, которые образуют логику конечного автомата и могут использоваться везде, где может использоваться действие. В среде выполнения конечного автомата существуют следующие классы.

Чтобы создать рабочий процесс компьютера состояния, состояния добавляются в StateMachine действие и переходы используются для управления потоком между состояниями. На следующем снимке экрана, на шаге "Руководство по началу работы" показано, как создать рабочий процесс компьютера состояния с тремя состояниями и тремя переходами. Инициализация target — это начальное состояние и представляет первое состояние в рабочем процессе. Это обозначается строкой, ведущей к ней с начального узла. Окончательное состояние рабочего процесса называется FinalState и представляет точку завершения рабочего процесса.

Illustration that shows the completed state machine workflow.

Рабочий процесс конечного автомата должен содержать только одно начальное состояние и хотя бы одно конечное состояние. Каждое состояние, отличное от конечного, должно иметь по крайней мере один переход. В следующих разделах описывается создание и настройка состояний и переходов.

Создание и настройка состояний

State представляет состояние, в котором может находиться конечный автомат. Чтобы добавить State рабочий процесс, перетащите конструктор действий состояния из раздела "Компьютер состояния" панели элементов и удалите его на StateMachine действие в области конструктора рабочих процессов Windows.

Screenshot of the State Machine section of the Toolbox.

Чтобы настроить состояние в качестве начального состояния, щелкните правой кнопкой мыши состояние и выберите "Задать в качестве начального состояния". Кроме того, если текущее начальное состояние отсутствует, начальное состояние можно назначить путем перетаскивания строки из начального узла в верхней части рабочего процесса в требуемое состояние. StateMachine Когда действие удаляется в конструктор рабочих процессов, оно предварительно настроено с начальным состоянием с именем State1. Рабочий процесс конечного автомата должен содержать только одно начальное состояние.

Состояние, которое представляет завершающее состояние в конечном автомате, называется конечным состоянием. Конечное состояние - это состояние, для свойства IsFinal которого задано значение true, которое не имеет действия Exit, а также не имеет переходов, исходящих из него. Чтобы добавить окончательное состояние в рабочий процесс, перетащите конструктор действий FinalState из раздела "Компьютер состояния" панели элементов и удалите его на StateMachine действие в области конструктора рабочих процессов Windows. Рабочий процесс конечного автомата должен иметь как минимум одно конечное состояние.

Настройка действия входа и выхода

Состояние может иметь действия Entry и Exit. Состояние, настроенное как конечное состояние, может содержать только действия входа. Когда экземпляр рабочего процесса входит в состояние, выполняются все действия, находящиеся в действии входа. После завершения действия записи триггеры для переходов состояния запланированы. При подтверждении перехода к другому состоянию выполняются действия в действии выхода, даже если осуществляется переход в то же самое состояние. После завершения действия выхода выполняются действия в действии перехода, а затем переход к новому состоянию и запланированы его действия входа.

Примечание.

При отладке рабочего процесса конечного автомата точки останова можно поместить в корневое действие конечного автомата и в действия в рабочем процессе конечного автомата. Точки останова нельзя размещать непосредственно на переходах, однако их можно размещать на любых действиях, которые содержатся в состояниях и переходах.

Создание и настройка переходов

Все состояния должны иметь по крайней мере один переход, за исключением окончательного состояния, которое может не иметь никаких переходов. Переходы можно добавлять после добавления состояния в рабочий процесс конечного автомата, а также при сбросе состояния в область конструктора.

Чтобы добавить State и создать переход на одном шаге, перетащите действие состояния из раздела "Компьютер состояния" панели элементов и наведите указатель мыши на другое состояние в конструкторе рабочих процессов. При наведении State на другое State вокруг другого State будут отображены четыре треугольника. Если объект State бросить в один из четырех треугольников, он будет добавлен к конечному автомату, а также будет добавлен переход состояния из исходного State в сброшенное целевое State. Дополнительные сведения см. в конструкторе действий перехода.

После создания состояния существует два способа создания переходов. Первый способ - можно перетащить состояние из рабочей области конструктора рабочих процессов, навести его на существующее состояние и поместить на одну из точек перетаскивания. Это аналогично методу, описанному в предыдущем разделе. Можно также навести мышь на выбранное состояние источника и перетащить линию до нужного целевого состояния.

Примечание.

Для одного состояния в конечном автомате может быть создано до 76 переходов в конструкторе рабочих процессов. Количество переходов состояний для рабочих процессов, созданных за пределами конструктора, ограничивается только системными ресурсами.

Переход может содержать объекты Trigger, Condition и Action. Переход Trigger планируется при завершении действия исходного состояния Entry перехода. Обычно Trigger представляет собой действие, ожидающее появления определенного типа события, но он может быть любым действием или даже не иметь действия. После завершения действия Trigger вычисляется значение Condition (если существует). Если действия отсутствуют Trigger , Condition немедленно вычисляется. Если условие оценивается false, переход отменяется, а Trigger действие для всех переходов из состояния перепланируется. Если существуют другие переходы, которые используют то же исходное состояние, что и текущий переход, эти Trigger действия отменяются и перепланируются. Если Condition имеет значение true или условие отсутствует, выполняется действие Exit исходного состояния, а затем выполняется Action перехода. Action После завершения элемент управления передается в целевое состояние

Переходы, имеющие общий триггер, называются переходами с общим триггером. Каждый переход в группе переходов с общим триггером имеет один и тот же триггер, но уникальные условие Condition и действие. Чтобы добавить дополнительные действия в переход и создать общий переход, щелкните круг, указывающий начало нужного перехода, и перетащите его в нужное состояние. Новый переход будет совместно использовать тот же триггер, что и исходный переход, но будет иметь уникальное условие и действие. Общие переходы также можно создать из конструктора переходов, нажав кнопку "Добавить общий триггер" в нижней части конструктора переходов и выбрав требуемое целевое состояние из доступных состояний для подключения раскрывающегося списка.

Примечание.

Обратите внимание, что если состояние Condition перехода оценивается как False (или все условия общего перехода триггера оцениваются как False), переход не выполняется, а все триггеры для всех переходов из состояния будут запланированы заново.

Дополнительные сведения о создании рабочих процессов компьютера состояния см. в статье "Практическое руководство. Создание рабочего процесса компьютера состояния", конструктора действий StateMachine, конструктора действий состояния, конструктора действий FinalState и конструктора действий перехода.

Терминология конечного автомата

В этом разделе описывается словарь конечного автомата, используемый на протяжении данного раздела.

State
Блок, который составляет основу конечного автомата. Конечный автомат может находиться в одном определенном состоянии в любой момент времени.

Действие входа
Действие, выполняемое при входе в состояние

Действие выхода
Действие, выполняемое при выходе из состояния

Transition
Направленная связь между двумя состояниями, представляющая полный ответ конечного компьютера на событие определенного типа.

Общий переход
Переход, который имеет общее исходное состояние и триггер с одним или несколькими переходами, но уникальное условие и действие.

Триггер
Запускающее действие, которое вызывает переход.

Condition
Ограничение, которое должно оцениваться true после триггера, чтобы завершить переход.

Действие перехода
Действие, выполняемое при выполнении определенного перехода.

Переход по условию
Переход с явным условием.

Переход на себя
Переход, который передается из состояния в само себя.

Начальное состояние
Состояние, представляющее начальную точку компьютера состояния.

Конечное состояние
Состояние, представляющее завершение компьютера состояния.

См. также