Я в первую очередь разработчик С# и ищу некоторые рекомендации (теория и/или образцы кода) по разработке конечного автомата для серии длительных процессов. Каждая определенная операция может выполняться в течение нескольких минут. Я просто использую планировщик заданий Windows для управления планированием и созданием экземпляров.
Ниже приведен упрощенный план того, на что я смотрю. До сих пор я построил FSM Op Status, используя Stateless. Теперь я пытаюсь выяснить, как наилучшим образом справиться с последовательностью операций с добавлением некоторых условий, таких как пункт № 3. Эти условия основаны на данных, полученных из Op2.
Варианты, которые я рассматривал до сих пор:
- Создайте FSM для последовательности операций (кажется слишком сложным, но, возможно, я где-то упустил фундамент)
- Создайте диспетчера операций для каждой операции, и пусть каждый менеджер беспокоится о том, в каком состоянии он заинтересован, а также о том, каким должно быть следующее состояние.
ОПЕРАЦИИ -> СЛЕДУЮЩАЯ ОПЕРАЦИЯ
- Нет -> Op1
- Op1 -> Op2
- Op2 -> Op3 или Op4 условно
- Op3 -> Op4
- Op4 -> Op5
- Op5 -> Нет
СТАТУС РАБОТЫ
- Idle
- Trigger: Scheduled -> Pending
- Ограничение: Операция должна быть установлена
- Pending
- Trigger: Run -> Running
- Running
- Trigger: Failed -> Error
- Триггер: Успех -> Бездействие
- Триггер: Не готов -> Ожидание
- Error
- Trigger: Retry -> Pending
- Триггер: Cancel -> Idle (удалить назначенную операцию)