2010-11-16 14 views
5

en la parte superior del flujo de trabajo de mi plantilla Puse un bloque ReceiveRequest/SendReply donde me gustaría realizar operaciones sincrónicas, permitiendo que el cliente del usuario reciba una respuesta oportuna del flujo de trabajo que se inicia. El cliente llama a la WF a través de WCF.Comportamiento de SendResponse en WF4

El cliente conoce el estado de la solicitud actual con el estado de una entrada en la base de datos de mi aplicación.

Por ejemplo, creo un pedido, llamo a un PlaceOrderWF, establezco el estado del pedido en DB como "Aceptado". El cliente puede entonces realizar lo que quiera mientras la WF está haciendo controles, controles, etc., ... estableciendo el valor final de la orden en "Completado" o "Error".

Espero que el cliente reciba una respuesta justo después del bloque SendResponse. En realidad, no parece funcionar de esta manera, pero espera algún tipo de "evento" para liberar al cliente. Desafortunadamente, no tengo evidencia de eventos que desencadenen este comportamiento.

Para probarlo, simplemente ponga una actividad Delay después de la actividad SendResponde y debería ser capaz de reproducir el comportamiento del que estoy hablando.

¿Alguna sugerencia sobre cómo evitar este error no deseado?

WF template -- Operation name left intentionally blank

Respuesta

5

El flujo de trabajo continuará y ejecutar tanto como se pueda en el hilo actual y como resultado no regresa a la persona que llama de inmediato.Si agrega un retardo con un pequeño tiempo de espera, dicen 1 segundo, para el flujo de trabajo, esto hará que el flujo de trabajo quede inactivo y que la respuesta de WCF se envíe al cliente, después de lo cual continuará el flujo de trabajo.

Cuestiones relacionadas