Поведение SendResponse в WF4 - PullRequest
       32

Поведение SendResponse в WF4

5 голосов
/ 16 ноября 2010

в верхней части рабочего процесса моего шаблона я поместил блок ReceiveRequest / SendReply, в котором я хотел бы выполнять синхронные операции, что позволило бы клиенту пользователя своевременно получать ответ о запуске рабочего процесса. Клиент вызывает WF через WCF.

Клиент знает о состоянии текущего запроса со статусом записи в моей базе данных приложения.

Например, я создаю заказ, вызываю PlaceOrderWF, устанавливаю статус заказа в БД на «Принят».Затем клиент может выполнять все, что он хочет, пока WF выполняет проверки, контроли и т. Д., Устанавливая конечное значение ордера на «Завершено» или «Ошибка».

Я ожидаючто клиент получит ответ сразу после блока SendResponse.На самом деле, похоже, это не работает, но ждет какого-то «события», чтобы освободить клиента.К сожалению, у меня нет данных о событиях, вызывающих это поведение.

Чтобы проверить это, просто поместите действие Delay после действия SendResponde, и вы сможете воспроизвести поведение, о котором я говорю.

Есть ли какие-либо советы, как избежать этой нежелательной ошибки?

WF template -- Operation name left intentionally blank

1 Ответ

5 голосов
/ 16 ноября 2010

Рабочий процесс будет продолжаться и выполняться столько, сколько он может в текущем потоке, и в результате не сразу возвращается к вызывающей стороне. Если вы добавляете задержку с небольшим тайм-аутом, скажем, 1 секунду, в рабочий процесс этоприведет к тому, что рабочий процесс простаивает и клиент отправляет ответ WCF, после чего рабочий процесс будет продолжаться.

...