Когда вы предпочитаете использовать конечные автоматы по линейным рабочим процессам - PullRequest
4 голосов
/ 02 февраля 2010

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

При каких обстоятельствах вы решили использовать конечный автомат, и какой тип боли уменьшился с точки зрения времени и сложности?

Ответы [ 3 ]

5 голосов
/ 02 февраля 2010

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

4 голосов
/ 02 февраля 2010

Рабочие процессы конечного автомата предназначены для использования, когда нет заранее определенных этапов завершения рабочего процесса. Взгляните на это определение (из Рабочие процессы конечного автомата в Windows Workflow Foundation )

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

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

3 голосов
/ 02 февраля 2010

Конечный автомат и линейный рабочий процесс - это достаточно разные проблемные пространства, которые не имеют отношения к разработке приложений.

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

...