Динамическое обновление запущенного рабочего процесса WF 4.0 - PullRequest
2 голосов
/ 17 декабря 2010

В моем проекте есть требование, согласно которому я должен реализовать опцию, при которой пользователь может динамически изменять рабочий процесс, то есть во время выполнения. Чтобы быть более точным, если рабочий процесс проходит через набор действий, скажем, действия A, B и C. Тогда у пользователя должна быть возможность изменить поток, например, например. вместо перехода от A-> B-> C они могут перейти непосредственно к A-> C, пропуская B. И это изменение в потоке должно произойти во время выполнения.

Существует более трех действий (A, B, C, упомянутых выше), действия могут доходить до 20-30, и у пользователя должна быть возможность перейти от перехода к любому из действий, или вы можете сказать, что пользователь должен иметь возможность редактировать поток во время выполнения.

Пожалуйста, помогите мне с этим, доступна ли эта опция в Windows Work Foundation (WF).

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 17 декабря 2010

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

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

1 голос
/ 17 декабря 2010

Захватите решение пользователя таким образом, чтобы рабочий процесс мог получить к нему доступ, затем используйте действие ifElse, чтобы решить, выполнять ли действие Б или нет.

Это обычное моделирование рабочего процесса, если я не понимаю ваш вопрос совершенно неправильно.

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

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

0 голосов
/ 17 декабря 2010

Я бы подумал сделать 1 функтор для каждого действия и сохранить действия для выполнения в списке.Этот список изменяется во время выполнения.«Ядро» должно было бы только проанализировать список и выполнить функторы.

...