Это хорошая идея для запуска рабочих процессов, созданных с использованием Windows Workflow Foundation в среде asp.net mvc? - PullRequest
1 голос
/ 04 декабря 2009

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

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

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

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

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

Спасибо

Cullen

1 Ответ

2 голосов
/ 04 февраля 2010

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

Без гражданства был разработан с инкапсуляция внутри домена 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...