Nick_3141592654
Это идеальный кандидат для решения на основе государственной машины. На самом деле рабочий процесс по определению является государственной машиной. Если вы еще не знакомы с этой темой, вы найдете много описаний.
Зачем беспокоиться? Ну, вы же сами сказали, что у вас есть много тысяч строк JS. Если вы формализуете свое решение в конечный автомат или вам может понадобиться вложенная машина, например, используя "внешнюю" машину, которая направляет весь рабочий процесс, с подмашинами, активируемыми при вводе определенных состояний верхнего уровня.
Такой подход должен помочь упорядочить ваши мысли о решении и не в последнюю очередь задокументировать его. Изменения в рабочий процесс легко добавляются, как только у вас есть общая реализация конечного автомата.
Ключевыми особенностями конечного автомата являются: (1) Определение состояний, это "действия" (вещи, которые должны быть сделаны) в вашем рабочем процессе; (2) Определение разрешенных переходов (если в состоянии "а" вы можете перейти в состояние "В", "С", .. "Z", а также, возможно, обратно в "А" и т. д.); (3) определение событий, приводящих к переходам состояний. В вашем случае завершение какой-то работы, вероятно, является событием, но, возможно, может произойти прерывание, такое как отмена задачи, которое может вызвать переход в другое состояние (например, бездействие).
Я не думаю, что вы должны смотреть на XML как на что-то, что нужно принять просто потому, что это кажется возможной полезной технологией. Да, XML может играть определенную роль, но вам нужно проработать свой дизайн во-первых, пусть используемые технологии вытекают из этого, а не проектируют что-то с предварительным предположением, что вы должны использовать ту или иную технику.
Я опубликовал это как решение, которое, вероятно, немного оптимистично, однако, реалистично говоря, я не думаю, что на ваш вопрос можно ответить более конкретно. Удачи вам в этом-звучит как забавный проект!