Esercitazione: creare un'applicazione flusso di lavoro con ASP.NET
Quando si esegue l'hosting di un'applicazione flusso di lavoro in ASP.NET occorre considerare vari aspetti, in particolare la creazione del runtime del flusso di lavoro, la gestione del flusso della pagina, la persistenza e il recupero dei dati. In questa esercitazione vengono presentati i diversi passaggi necessari per creare una libreria flusso di lavoro di base e un sito Web in cui vengono eseguiti i flussi di lavoro e che interagisce con essi. Vengono illustrati gli argomenti seguenti:
Creazione del runtime del flusso di lavoro.
Aggiunta di servizi al runtime del flusso di lavoro.
Comunicazione tra il flusso di lavoro e l'applicazione host.
Archiviazione e recupero delle informazioni di rilevamento del flusso di lavoro.
Persistenza del flusso di lavoro.
Pianificazione del flusso di lavoro manuale.
In questa applicazione, il runtime del flusso di lavoro verrà creata all'avvio dell'applicazione e verrà archiviato nell'insieme Application. La pagina farà quindi riferimento al runtime tramite questo insieme; in questo modo l'intera applicazione Web utilizzerà la stessa istanza di runtime.
Quando il runtime viene creato nel gestore eventi Application_Start, vengono aggiunti i servizi per il rilevamento, la pianificazione, la persistenza e la comunicazione con l'host. L'accesso ai servizi di pianificazione e di comunicazione avverrà tramite il metodo GetService quando si rendono necessari, mentre i servizi di rilevamento e di persistenza operano senza ulteriore interazione con l'applicazione host.
La comunicazione tra l'applicazione host e i flussi di lavoro viene realizzata in tre modi:
I parametri vengono passati dall'applicazione nel flusso di lavoro al momento della creazione. Tali parametri vengono inviati come argomenti nella chiamata al metodo CreateWorkflow.
I messaggi vengono inviati dall'applicazione host ai flussi di lavoro in esecuzione mediante un servizio di comunicazione locale.
I messaggi vengono inviati dai flussi di lavoro all'applicazione host in modo indiretto tramite l'infrastruttura di rilevamento. Il flusso di lavoro archivia le informazioni su se stesso in un database SQL utilizzando il metodo TrackData. Questi dati di rilevamento vengono quindi recuperati dall'host tramite SqlTrackingQuery. Anziché il servizio di comunicazione, viene utilizzato questo metodo poiché in un'applicazione ASP senza stato non sarà presente alcun codice utente in esecuzione per gestire gli eventi generati dal flusso di lavoro.
Per rendere persistenti i flussi di lavoro inattivi, questa applicazione utilizza il servizio predefinito SqlWorkflowPersistenceService. Fatta eccezione per l'aggiunta del servizio di persistenza al runtime, non è necessario ulteriore codice utente; una volta presente il servizio, il runtime renderà persistenti, caricherà e ricaricherà i flussi di lavoro automaticamente secondo necessità.
A causa dei requisiti delle applicazioni ASP, è necessario che l'applicazione esegua i flussi di lavoro nel proprio processo. Non è possibile utilizzare il servizio di pianificazione dei flussi di lavoro predefinito poiché esegue i flussi di lavoro nel relativo processo. Per guidare l'esecuzione del flusso di lavoro, in questa esercitazione viene invece utilizzata la classe ManualWorkflowSchedulerService.
L'applicazione creata in questa esercitazione è un simulatore per l'approvazione di prestiti. La prima parte consente all'utente di creare una richiesta di prestito. Quando viene immessa una richiesta di prestito, viene creata e avviata un'istanza del flusso di lavoro. Una volta avviato, il flusso di lavoro registra le informazioni di rilevamento, diventa poi inattivo e viene salvato in un database e quindi scaricato, mentre il runtime resta in attesa di un messaggio dall'applicazione. La seconda parte dell'applicazione consente all'utente di visualizzare le richieste di prestito esistenti (tramite il recupero delle informazioni di rilevamento). L'utente può inoltre contrassegnare le richieste di prestito esistenti come approvate o rifiutate. Tale operazione genera l'invio di un messaggio al flusso di lavoro associato tramite il runtime del flusso di lavoro. Quando il runtime riceve il messaggio per il flusso di lavoro, il flusso di lavoro viene ricaricato e quindi riceve il messaggio mediante un'attività HandleExternalEventActivity. Il flusso di lavoro registra se il prestito è stato approvato o meno (tramite l'infrastruttura di rilevamento del flusso di lavoro) e viene quindi completato.
Per completare questa esercitazione è necessario che sia installato Internet Information Services. È inoltre necessario Microsoft SQL Server o MSDE per il rilevamento e la persistenza del flusso di lavoro.
Argomenti della sezione
Esercizio 1: creazione del progetto del flusso di lavoro
Esercizio 2: creare il sito Web
Sezioni correlate
Utilizzo di flussi di lavoro con ASP.NET
Vedere anche
Altre risorse
Esercitazioni di Windows Workflow Foundation
Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.