Машина состояний

Версия 2.1 от Alexandr Fokin на 2021/09/13 18:58

Система обработки бизнес процессов на основе машины состоний.

Основные понятия:

Ключ процесса
Уникальной идентефикатор экземпляра процесса.
Обычно служит для чтения/записи persist данных контекста.

Инициатор
Событие, служащее источником запуска однйо сессии обработки.
Обычно ему соответсвует набор параметров, которые необходимо для запуска сессии обработки (как минимум это ключ процесса для работы с контекстом).
Примеры инициаторов: нажатие кнопки на UI, обращенеи к web api, получение сообщения из брокера.

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

Контекст
Класс содержащий данные о текущем экземпляре процесса, в том числе содержит информацию о статусе обработки (инфомация о шаге).
Можно выделить 2 компонента: persist и runtime.

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

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

Шаг (состояние)
На вход принимает контекст.
В зависимости от состояния контекста может произвести некоторое действие, может менять контекст.
Может принимать решения о том, в какое следующее состояние необходимо перейти (какой шаг будет следующим).

Теги:
Создал(а) Alexandr Fokin 2021/09/13 18:23