Цель статьи – при помощи WWF, представить концепцию Конечного Автомата, который является простейшей фундаментальной моделью большого числа разнообразных приложений.
Эти приложения – от языковых процессоров до систем управления реального времени и протоколов связи – покрывают значительную долю систем, разработкой, реализацией и анализом которых занимается информатика и кибернетика.
Бизнес процесс – это в большинстве случаев автоматная модель системы (программный комплекс) – произвольное задание, выполняемое последовательно или параллельно двумя или более участниками рабочей группы с целью достижения общей цели.
Workflow - это полная или частичная автоматизация бизнес процесса, при которой документы, информация или задания передаются от одного участника Бизнес Процесса к другому для выполнения действий согласно набору руководящих правил.
Это координация людей, информации, объектов и событий для произведения последовательности операций и достижения статуса, который приводит к достижению установленных целей.
В данной статье не будет рассматриваться построение Бизнес Процесса.
Более интересна фундаментальная часть - лежащая в основе моделирования систем, в том числе и Бизнес Процессов, - Теория Автоматов или (Theory of Finite-State Machine).
Для программной реализации КА использованы программные средства и технологии - MSVS 2008 v9, WWF. Язык C#.
Итак, рассмотрим простейший тип конечноавтоматного преобразователя информации: Автомат Мили.
Определим конечный автомат формально. Есть и другие определения, но мы остановимся на этом.
ОПРЕДЕЛЕНИЕ.
Конечным автоматом Мили называется шестерка объектов:
A = <S,X,Y,s0,δ,λ>, где:
S - конечное непустое множество (состояний);
X - конечное непустое множество входных сигналов (входной алфавит)
Y - конечное непустое множество выходных сигналов (выходной алфавит)
s0∈S - начальное состояние
δ∶S×X→S - функция переходов
λ∶S×X→Y - функция выходов
Задавать автомат удобно графом, в котором вершины соответствуют состояниям, а ребро из состояния
s в состояние
q, помеченное
x/y, проводится тогда, когда автомат из состояния
s под воздействием входного сигнала
x переходит в состояние
q с выходной реакцией
y.
ПРИМЕР:
Зададим КА, который имеет:
четыре состояния,
S = {s0, s1, s2, s3}
два входных сигнала
X = {x0, x1}, где: x0 = 0, x1 = 1.
шесть выходных сигналов
Y = {y0, y1, y2, y3, y4, y5} где: y0 = 1, y1 = 2, y2 = 3, y3 = 4, y4 = 5, y5 = 6.
Теперь представим автомат в виде графа:

Кроме графического представления для автомата можно использовать и табличное, задавая функции переходов и выходов в виде таблиц.
Данный автомат может быть представлен следующими таблицами.
Таблица 1. Определяет функцию переходов
δ так:
δ(s0, 0) = s1; δ(s2, 1) = s0; ...
Таблица 2. Определяет функцию выходов
λ так:
λ(s0, 0) = y2; λ(s2, 1) = y3; ...
РЕАЛИЗАЦИЯ КА Мили
Программную реализацию можно выполнить на любом языке разными способами. В данном случае будет использоваться C# и WWF – как инструменты упрощающие реализацию программных КА.
На рисунке 1 представлена блок-схема программы, реализующей поведение автомата.

Нетрудно увидеть, что топология блок-схемы программы повторяет топологию графа переходов конечного автомата.
С каждым состоянием связана операция, выполняющая функцию ожидания очередного события прихода нового входного сигнала и чтение его в стандартный буфер –
int x; , а также последующий анализ того, какой это сигнал.

В зависимости от того, какой сигнал пришел на вход, выполняется та или иная функция
y0 – y5 и происходит переход к новому состоянию.
Построив программу подобную этой и добавив активные устройства, реализующие отдельные входные и выходные операции, можно управление каким либо процессом поручить компьютеру.
Построение такой программы при помощи WWF занимает считанные минуты, что не может не делать данную технологию привлекательной.
Автор: Александр Шевчук