Async Web-клиент, интегрирующийся с Windows Workflow Foundation (WF4) - PullRequest
0 голосов
/ 18 октября 2010

Я разрабатываю рабочий процесс с использованием WF4, который должен использоваться веб-клиентом. Рабочий процесс объединяет службы WCF и запускается действием получения, которое в свою очередь порождается с веб-страницы. Во время выполнения рабочего процесса веб-сеанс пользователя активен, и определенные действия рабочего процесса могут потребовать информирования пользователя, т. Е. Веб-страница нуждается в обратной связи о некоторых этапах рабочего процесса.

Я хотел бы придерживаться действий на основе WCF (Отправить, Получить и т. Д.), Но не совсем уверен, как реализовать обратную связь с веб-страницей. Допустим, это сценарий:

  1. Пользователь нажимает кнопку «Пуск» на веб-странице, чтобы запустить рабочий процесс.
  2. Служба рабочего процесса создает экземпляр рабочего процесса и отвечает идентификатором экземпляра.
  3. Затем на сервере выполняется действие «DoSomething»
  4. Когда DoSomething завершен, пользователю должна быть представлена ​​новая веб-страница. 5-NNN. Другие действия выполняются, некоторые из них также требуют обратной связи.

Шаги 1-2 могут быть реализованы с использованием составного действия ReceiveAndSendReply, которое состоит из Receive и SendReply. Шаг 3 - это пользовательский код, который вскоре завершится Моя первая мысль о шаге 4 заключается в том, что он может быть реализован с использованием действия «Отправить», но затем веб-приложение должно действовать как служба WCF и предоставлять конечную точку, которая не подходит для веб-клиента. Как еще можно реализовать эту обратную связь?

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

1 Ответ

1 голос
/ 21 января 2011

Я думаю, что самый простой способ - это время от времени проводить опрос вашей веб-страницы. Используйте вызов AJAX, чтобы проверить, есть ли что-то новое для отображения, и если да, обновите страницу.

Или после того, как веб-страница запросила рабочий процесс и обновила свою страницу, попросите ее выполнить еще один вызов, который просто блокируется, пока не появится что-то новое для отображения. Тем не менее, рабочий процесс не может занять слишком много времени, потому что примерно через 60 секунд вызов просто прекратится.

Другое решение может быть попытка использовать Комета , но у меня нет никакого опыта с этим.

...