2010-11-16 5 views
5

nella parte superiore del flusso di lavoro del mio modello Inserisco un blocco ReceiveRequest/SendReply in cui mi piacerebbe eseguire le operazioni sincrone, consentendo quindi al client dell'utente di ricevere una risposta tempestiva del flusso di lavoro avviato. Il client chiama la WF tramite WCF.Comportamento di SendResponse in WF4

Il client conosce lo stato della richiesta corrente con lo stato di una voce nel database dell'applicazione.

Ad esempio, creare un ordine, chiamare un oggetto PlaceOrderWF, impostare lo stato dell'ordine su DB su "Accettato". Il client può quindi eseguire qualsiasi cosa desideri mentre la WF sta eseguendo controlli, controlli, ecc., Impostando il valore finale dell'ordine su "Completato" o "Errore".

Mi aspetto che il client riceva risposta subito dopo il blocco SendResponse. In realtà non sembra funzionare in questo modo, ma attende un qualche tipo di "evento" per rilasciare il client. Sfortunatamente, non ho prove di eventi che attivano questo comportamento.

Per verificarlo, è sufficiente inserire un'attività di ritardo dopo l'attività di SendResponde e si dovrebbe essere in grado di riprodurre il comportamento di cui sto parlando.

Eventuali suggerimenti su come evitare questo errore indesiderato?

WF template -- Operation name left intentionally blank

risposta

5

Il flusso di lavoro continuerà ed eseguire tanto quanto possibile sul thread corrente e di conseguenza non restituisce al chiamante destra away.If si aggiunge un ritardo con un piccolo timeout, dicono 1 in secondo luogo, nel flusso di lavoro ciò causerà l'inattività del flusso di lavoro e la risposta WCF da inviare al client dopo il quale il flusso di lavoro continuerà.