Может ли рабочий процесс параллельного разделения выполняться с использованием шаблона конечного автомата?

Или я должен сказать, что является правильным способом / инструментом для реализации задачи параллельного разделения?

У меня есть одно состояние / статус для объекта, вовлеченного в рабочий процесс. Я мог бы добавить несколько дополнительных статусов для каждого параллельного пути, но есть ли лучший способ сделать это?

Спасибо

РЕДАКТИРОВАТЬ

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

Я сериализую маркер ключа сеанса в виде строки, поэтому постоянный сеанс выглядит примерно так:

"enroll=get-contact|verify=null|authorize=null"

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

1 ответ

Решение

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

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

Другие вопросы по тегам