Какой механизм рабочего процесса мне выбрать для реализации динамической реконфигурации рабочих процессов?

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

В настоящее время я борюсь с двигателем, с которым лучше всего работать. Я просмотрел WWF, Apache ODE, Oracle Workflow и Active BPEL, и, насколько я понимаю, все они могут предоставить мне нужные мне варианты. Я был бы очень признателен за любые рекомендации, с которыми будет проще всего работать для моей цели, и любые ограничения, которые могут иметь любое из вышеперечисленных, которые могут помешать мне достичь моей цели.

Спасибо


person Raya    schedule 02.06.2010    source источник


Ответы (1)


Извините, что не ответил прямо на ваш вопрос, но вас может заинтересовать структура конечного автомата под названием Stateless, созданная Николасом Блюмхардтом (AutoFac). Я использовал это вместо Windows Workflow, где мне нужно было быстро настроить мои шаги для рабочего процесса. У меня есть один файл конфигурации, который я изменяю и могу легко вводить новые шаги в рабочий процесс. См. Мой SO ответ здесь для получения более подробной информации. .

По сути, вы определяете состояние как State<T>, и это позволяет вам легко сохранять свое состояние в базе данных.

person David Robbins    schedule 11.06.2010
comment
Спасибо за ответ, Дэвид. Я обязательно рассмотрю возможность использования того, что вы предлагаете. Пока что я решил использовать WWF, и это может быть для меня полезным вариантом. Просто для подтверждения - Stateless можно использовать для перенастройки только экземпляров рабочего процесса, но не самого рабочего процесса? - person Raya; 24.06.2010
comment
Да, вы просто изменяете состояния и триггеры конечного автомата. - person David Robbins; 25.06.2010