Вопрос

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

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

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

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

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

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

WF template -- Operation name left intentionally blank

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top