@selenite

"Эталонное" решение: очередь задач/дерево с последовательным выполнением

Доброго времени суток, all.

Есть проблема написания различающегося от проекта к проекту кода для выполнения, в общем-то, однотипной задачи. Нужно обрабатывать кучку событий, определяющих статус выполнения некоей задачи автоматизации. Допустим, установка комплектов софта на удаленные машины.

Верхний уровень дерева: «установить четыре версии .net на \\sim»
Промежуточный уровень: «или установить получилось, или анализируем проведенные действия и принимаем решение сделать это как-то по-другому (выбрать другой бекенд»
Нижний уровень: «подзадача — действие бекенда (загрузить файл) -> подзадача — действие бекенда (запустить файл)»

X
Y (контроль), Y1 (альтернативная последовательность задач — послать сисадмина с дистрибутивами)
Z1 -> Z2 -> Z3.

Дерево генерируется, начиная с верхнего уровня, согласно некоему сценарию, для которого прописаны последовательности перехода состояний на двух нижних уровнях, включая данные, которые требуется отправить/передать бекенду.

Ищется решение, которое позволит конечному приложению обходиться только доступом к нижнему уровню (получить от машины состояний следующую операцию — id заранее сгенерированного json-описалова подзадачи, отчитаться о ее выполнении, получить ответ о невозможности продолжить из-за сбоя предыдущего состояния, перейти на уровень выше и написать новую ветку подзадач).

Хочется сделать это максимально независимо от кода приложения ( в основном такое вижу на Яве, но PHP тоже проскальзывает). Алчно желаю рекомендации по оптимальному способу хранения задач (сделать приоритетным нижний уровень и отменять все задачи с ID промежуточного уровня при сбое/завершении перехода между состояниями?), реализации встроенного КО для перехода между состояниями на нижнем уровне и оптимальному распределению кода между уровнями.
  • Вопрос задан
  • 2569 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы