Это хорошая идея для запуска рабочих процессов, созданных с помощью Windows Workflow Foundation в среде asp.net mvc?

Я запускаю рабочий процесс конечного автомата, чтобы контролировать взаимодействие пользователя с веб-сайтом. Среда выполнения рабочего процесса размещается на asp.net. Я смог заставить его работать так, как я хотел, но событие, инициированное для перехода состояния в рабочий процесс, не всегда переходило в состояние. Это заставляет меня усомниться в интеграции WWF с asp.net:

Является ли рабочий процесс хостинга в среде asp.net mvc лучшим выбором?

Или лучше разместить среду выполнения в службе Windows с помощью узла службы Windows Workflow и разрешить приложению asp.net получать к нему доступ через WCF?

Есть ли какие-нибудь истории успеха, которыми кто-то хотел бы поделиться?

Любые комментарии и предложения приветствуются,

Спасибо,

каллен

1 ответ

У меня есть альтернатива для вас, если вы открыты для решения не от Microsoft, хотя оно основано на.Net. Я использовал платформу под названием Stateless, конечный автомат Николаса Блумхардта - создателя Autofac, где вы можете сделать следующее:

Функция Stateless была разработана с учетом инкапсуляции в рамках модели домена ORM. Некоторые ORM предъявляют требования к месту хранения отображаемых данных. Для этого конструктор StateMachine может принимать аргументы функции, которые будут использоваться для чтения и записи значений состояния:

var stateMachine = new StateMachine<State, Trigger>(
    () => myState.Value,
    s => myState.Value = s);

С очень небольшим усилием вы можете сохранить свое состояние, а затем легко восстановить это состояние. Обратите внимание, что вам НЕ нужно размещать отдельную среду выполнения. Если ваше состояние представлено целым числом, вы можете получить это значение, создать экземпляр объекта без состояния с текущим состоянием, и теперь вы готовы обновить свой конечный автомат. Прелесть в том, что вам не нужны накладные расходы, которые обычно требуются для Workflow Foundation.

Я использовал это в производстве в течение 4 месяцев, и это работает очень хорошо. Я думаю, вы могли бы легко адаптировать это к ASP.Net MVC.


В отношении динамического обновления рабочего процесса, если вы настраиваете конечный автомат, такой как

var stateMachine = new StateMachine<string, int>();

и ведение отдельного файла состояний и триггеров в XML, вы можете выполнить настройку во время выполнения, просматривая пары строк значение int.

Другие вопросы по тегам