Domanda

nella parte superiore del mio modello di workflow ho messo un blocco ReceiveRequest / SendReply dove mi piacerebbe per eseguire operazioni sincrone, consentendo quindi il cliente all'utente di ricevere una risposta tempestiva del flusso di lavoro in fase di avvio. client chiama il WF tramite WCF.

Il cliente sa sullo stato della richiesta corrente con lo status di una voce sul mio database dell'applicazione.

Per esempio, ho creare un ordine, chiamare un PlaceOrderWF, impostare lo stato dell'ordine sul DB "Accettato". Il cliente può quindi eseguire quello che vuole, mentre la WF sta facendo controlli, controlli, ecc, ..., impostando il valore finale della fine di "Completato" o "Errore".

Mi aspetto che il cliente riceverà risposta solo dopo il blocco SendResponse. In realtà non sembra funzionare in questo modo, ma aspetta una sorta di "evento" per liberare il cliente. Purtroppo, non ho alcuna prova di eventi scatenanti questo comportamento.

Per provarlo, basta mettere un'attività di ritardo dopo l'attività SendResponde e si dovrebbe essere in grado di riprodurre il comportamento di cui sto parlando.

Eventuali suggerimenti su come evitare questo errore indesiderato?

modello WF - Operazione nome lasciata intenzionalmente blank

È stato utile?

Soluzione

Il flusso di lavoro continuerà ed eseguire tanto quanto possibile sul thread corrente e di conseguenza non restituisce alla destra chiamante away.If si aggiunge un ritardo con un piccolo timeout, diciamo 1 secondo al flusso di lavoro questo farà sì che il flusso di lavoro per andare al minimo e la risposta WCF da inviare al client dopo che il flusso di lavoro continuerà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top