Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Windows Workflow Foundation: "persistere" lo stato di un flusso

In Windows Workflow Foundation è possibile persistere, in maniera analoga alla serializzazione, lo stato di un workflow e richiamarlo poi successivamente. Questa tecnica si usa nel caso di flussi che rimangono in attesa di eventi esterni anche per lungo tempo. Questo è possibile grazie ad una classe chiamata SQLWorkflowPersistenceService, che permette di memorizzare in un database di SQL lo stato di un workflow.

Da codice Visual Basic, si interviene in questo modo nel codice che avvia il runtime di WF, solitamente nella Sub Main. Si aggiungono i riferimenti a due gestori degli eventi relativi al caricamento del flusso e alla sua persistenza, utilizzando in primo luogo le seguenti righe:

AddHandler workflowRuntime.WorkflowLoaded, AddressOf OnWorkflowLoaded

AddHandler workflowRuntime.WorkflowPersisted, AddressOf OnWorkflowPersisted

Dopodichè si specifica la stringa di connessione al database e si aggiunge al runtime di WF il servizio di persistenza:

Dim connectionString As String = "Data Source=PORTATILE\SQLEXPRESS;Initial Catalog=MioDatabase;Integrated Security=True"

Dim persistenza As New SqlWorkflowPersistenceService(connectionString, True, TimeSpan.MaxValue, New TimeSpan(0, 0, 2))

workflowRuntime.AddService(persistenza)

L'ultimo passaggio è quello di implementare i gestori degli eventi, che possono anche limitarsi a scrivere un messaggio:

Shared Sub OnWorkflowLoaded(ByVal sender As Object, ByVal e As WorkflowEventArgs)

       Console.WriteLine("Caricamento del workflow...")

End Sub

Shared Sub OnWorkflowPersisted(ByVal sender As Object, ByVal e As WorkflowEventArgs)

       Console.WriteLine("Persistenza eseguita...")

End Sub

In questo modo, lo stato del workflow può essere memorizzato in un database e recuperato successivamente. Anche questo è un argomento abbastanza nuovo per me, pertanto se c'è qualche esperto di WF che rileva delle imprecisioni e me le segnala ne sono ben lieto. :-)

Alessandro

Print | posted on venerdì 10 agosto 2007 15:58 | Filed Under [ Windows Workflow Foundation ]

Powered by:
Powered By Subtext Powered By ASP.NET