Persistenza di un'applicazione flusso di lavoro

Le informazioni contenute in questo argomento sono valide per Windows Workflow Foundation 4.

In questo esempio viene illustrato come eseguire un oggetto WorkflowApplication, scaricarlo quando diventa inattivo, quindi ricaricarlo per continuare l'esecuzione.

Dettagli dell'esempio

WorkflowApplication è un host per una singola istanza del flusso di lavoro che fornisce un'interfaccia semplice e abilita alcuni degli scenari di hosting più comuni. Uno scenario di questo tipo è rappresentato da flussi di lavoro a esecuzione prolungata facilitati dalla persistenza. Il controllo host di persistenza viene eseguito chiamando un'operazione di persistenza sull'oggetto WorkflowApplication o gestendo un evento WorkflowApplication e indicando che l'oggetto WorkflowApplication deve essere persistente.

Il flusso di lavoro di esempio è un'attività WriteLine che richiede il nome dell'utente, un'attività ReadLine per ricevere il nome come input tramite la ripresa di un oggetto Bookmark e un altro oggetto WriteLine per la ripetizione di un saluto all'utente. Quando un flusso di lavoro è in attesa dell'input, fornisce un punto naturale per la persistenza. Spesso è definito punto Idle. L'oggetto WorkflowApplication genera l'evento Idle ogni volta che il programma del flusso di lavoro può essere reso persistente, è in attesa di una ripresa del segnalibro e non viene eseguito alcun altro lavoro. Nel flusso di lavoro di questo esempio, tale punto viene immediatamente dopo l'inizio dell'esecuzione dell'attività ReadLine.

Un oggetto WorkflowApplication viene impostato per eseguire la persistenza con un oggetto InstanceStore. In questo esempio viene utilizzato l'oggetto SqlWorkflowInstanceStore. L'oggetto InstanceStore deve essere assegnato alla proprietà InstanceStore prima che l'oggetto WorkflowApplication venga eseguito.

Nell'esempio viene aggiunto un gestore all'evento PersistableIdle. Il gestore per questo evento indica l'operazione che l'oggetto WorkflowApplication deve effettuare restituendo un oggetto PersistableIdleAction. Quando viene restituito il campo Unload, l'oggetto WorkflowApplication viene scaricato.

Nell'esempio viene quindi accettato l'input dall'utente e viene caricato il flusso di lavoro persistente in un nuovo oggetto WorkflowApplication. Per ottenere questo risultato, crea un nuovo oggetto WorkflowApplication, ricrea l'oggetto InstanceStoree associa gli eventi completati e scaricati all'istanza, quindi chiama il metodo Load con l'identificatore dell'istanza del flusso di lavoro di destinazione. Una volta acquisita l'istanza, viene ripreso il segnalibro dell'attività ReadLine. Il flusso di lavoro continua l'esecuzione dall'interno dell'attività ReadLine fino al completamento. Quando il flusso di lavoro viene completato e scaricato, l'oggetto InstanceStore viene chiamato un'ultima volta per eliminare il flusso di lavoro.

Per utilizzare questo esempio

  1. Aprire un prompt dei comandi di Visual Studio 2010.

    In questo esempio viene richiesto SQL Server Express, installato per impostazione predefinita con Visual Studio 2010.

  2. Passare alla directory di esempio (\WF\Basic\Persistence\InstancePersistence\CS) ed eseguire CreateInstanceStore.cmd.

    Dd807516.Caution(it-it,VS.100).gifAttenzione:
    Lo script CreateInstanceStore.cmd tenta di creare il database nell'istanza predefinita di SQL Server 2008 Express. Se si desidera installare il database in un'istanza diversa, modificare lo script.

  3. In Visual Studio 2010 aprire il file della soluzione Persistence.sln e premere F6 per compilarlo.

    Dd807516.Caution(it-it,VS.100).gifAttenzione:
    Se il database è stato installato in un'istanza non predefinita di SQL Server, aggiornare la stringa di connessione nel codice prima di compilare la soluzione.

  4. Eseguire l'esempio con privilegi di amministratore passando alla directory bin del progetto (\WF\Basic\Persistence\InstancePersistence\bin\Debug) in Esplora risorse, facendo clic con il pulsante destro del mouse su Workflow.exe e scegliendo Esegui come amministratore.

Per rimuovere il database dell'archivio di istanze

  1. Aprire un prompt dei comandi di Visual Studio 2010.

  2. Passare alla directory di esempio ed eseguire RemoveInstanceStore.cmd.

Dd807516.Important(it-it,VS.100).gif Nota:
È possibile che gli esempi siano già installati nel computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.

<UnitàInstallazione>:\WF_WCF_Samples

Se questa directory non esiste, andare alla sezione relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.

<UnitàInstallazione>:\WF_WCF_Samples\WF\Basic\Persistence\InstancePersistence