19 messaggi dal 06 settembre 2002
Salve a tutti

Ho da porvi un problema, che si è presentato durante
l'utilizzo di Microsoft Workflow Foundation, nel servizio di persistenza
SqlWorkflowPersistenceService (configurato e funzionante).

Nello specifico, ho realizzato un workflow di prova che invii sei e-mail una al minuto

Avviata l'istanza di workflow runtime, dopo l'arrivo della seconda e-mail, per verificare la ripresa della stessa in caso di spegnimento del computer, ho riavviato il sistema.

Al riavvio il workflow non ha ripreso l'esecuzione. Al ché, per ovviare a questo problema, ho pensato di creare un servizio windows, che all'avvio rimetta in esecuzione tutti i workflow interrotti, prendendoli dal database di persistenza.

Ma nel ricaricarli tramite il metodo GetWorflow() di WorflowRuntime è generata la seguente eccezione: "Il flusso di lavoro non appartiene a WorkflowRuntime. La proprietà di WorkflowRuntime è scaduta oppure il flusso di lavoro appartiene a un altro WorkflowRuntime.".

Vorrei sapere se questo è il modo per risolvere questo problema.
Ed inoltre come posso svincolare le istanze presenti sul
database di persistenza dall'istanza workflow runtime?.

Sto cercando di usare UnlockWorkflowInstanceState ma non saprei come intervenire.

Vi ringrazio anticipatamente...

Piero Geraci
Se hai configurato tutto correttamente il servizio di persistenza fa tutto il lavoro. Quando il runtime riparte riattiva le istanze in corso.
Fai quindi comunque un servizio windows che crea il WorkflowRuntime e chiama StartRuntime dopo aver configurato il servizio di persistenza, mentre nello stop del servizio assicurati di chiamare lo StopService così da chiamare l'unload delle istanze e la loro persistenza.
Per sicurezza guarda su sql se evvettivamente salva qualcosa

Ciao

Il mio blog
Homepage
19 messaggi dal 06 settembre 2002
Una precisazione....

Il workflow che creo è attivato a livello web, la persistanza la fa benissimo.

Quando eseguo lo spengimento della macchina i WorkflowRuntime che ho istanziato da web vanno perduti.

Se provo a riattivarli da servizio windows mi da arrore, poichè il WorkflowRuntime è diverso.


Forse posso fare così se faccio partire una istanza di runtime da servizo windows, la posso richiamare da web? (il server web e il servizio girano nella stessa macchina). Se si forse ho risolto il problema. ; Ma come faccio ha prendermi l'istanza di WorkflowRuntime creata da un servizio in una pagina web.


Grazie mille
Il runtime puoi metterlo a livello di appdomain web, non è un problema, ma ripeto, secondo me non chiami StopRuntime. Nel caso non lo chiami è previsto un timeout, ma è lungo.
Guarda questi post
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=822376&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2280470&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1067853&SiteID=1

Ciao

Il mio blog
Homepage

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.