Может ли рабочий процесс параллельного разделения выполняться с использованием шаблона конечного автомата?
Или я должен сказать, что является правильным способом / инструментом для реализации задачи параллельного разделения?
У меня есть одно состояние / статус для объекта, вовлеченного в рабочий процесс. Я мог бы добавить несколько дополнительных статусов для каждого параллельного пути, но есть ли лучший способ сделать это?
Спасибо
РЕДАКТИРОВАТЬ
Пока что это не совсем полный ответ, но то, что я закончил после долгих исследований, заключалось в создании своего рода оболочки для конечного автомата. Существующие инструменты, на которые я смотрел, были слишком сложными и не отвечали моим потребностям. Каждый конечный автомат представляет собой "процесс", а каждое состояние процесса является частью "сеанса". Сеанс, в свою очередь, имеет ключ сеанса, который является просто набором текущего состояния каждого процесса.
Я сериализую маркер ключа сеанса в виде строки, поэтому постоянный сеанс выглядит примерно так:
"enroll=get-contact|verify=null|authorize=null"
Триггеры для различных состояний могут указывать параллельное разделение в качестве цели. Кажется, на самом деле это работает довольно хорошо.
1 ответ
Конечный автомат не связан с семантикой выполнения между состояниями. Все, что делает конечный автомат, представляет переходы между состояниями и логику, возникающую при проверке и выполнении во время переходов.
Логика, выполняемая во время самого перехода, может выполняться параллельно, например, путем создания новых потоков. Потоки могут выполняться асинхронно по отношению к выполнению или порождаться ими, а затем присоединяться к основному потоку как часть основного потока.