Ritardo assoluto

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

Lo scenario principale di questo esempio è ritardare un flusso di lavoro fino a una DateTime specificata utilizzando timer durevoli in un'applicazione flusso di lavoro. Si tratta di uno scenario diverso rispetto all'utilizzo dell'attività Delay incorporata in quanto in questo caso sarà possibile ritardare un flusso di lavoro solo per un determinato TimeSpan (o numero di minuti/secondi).

Di seguito sono elencati alcuni scenari reali nei quali potrebbe essere necessario fare questa distinzione:

  1. Si desidera ritardare di 30 secondi l'invio di un messaggio di posta elettronica per verificare che non contenga errori.

  2. In caso di straordinari sul lavoro, si desidera ritardare l'invio di tutti i messaggi di posta elettronica fino al normale orario di lavoro (ad esempio 8 del mattino).

Dimostrazione

  1. DurableTimerExtension per l'implementazione del ritardo assoluto

  2. Configurazione della persistenza utilizzando WorkflowApplication per timer durevoli

  3. Utilizzo di NativeActivity per i punti di estensibilità

  4. Utilizzo di CodeActivity nell'attività SendEmail.

  5. Delay

  6. Flusso di lavoro solo XAML

Questo esempio dimostra come creare un'attività personalizzata che accetta una DateTime e utilizza timer durevoli per registrare la durata del ritardo. In caso di utilizzo di timer durevoli, è necessario utilizzare un'attività NativeActivity per creare un segnalibro, in quanto è necessario registrare questo segnalibro con l'estensione del timer. In questo esempio, quando il timer durevole scade, viene chiamato il metodo OnTimerExpired. Verificare che l'estensione del timer venga aggiunta all'evento CacheMetadata per garantire che venga fornito il runtime con queste informazioni. Come unico altro dettaglio di implementazione, sarà necessario implementare la logica per la conversione da DateTime a TimeSpan, in quanto i timer durevoli accettano solo DateTime. Notare la piccola perdita di precisione.

Ff522352.note(it-it,VS.100).gifNota:
La conversione da DateTime a TimeSpan determina una minima perdita di precisione.

Questo esempio dimostra inoltre come attivare la persistenza per una WorkflowApplication. Per questo particolare esempio, verranno utilizzati timer durevoli in cui i dati del flusso di lavoro verranno scaricati nel database di persistenza durante il tempo di inattività in attesa della scadenza del timer. Questa implementazione può essere utilizzata anche per altre azioni di persistenza. Questo esempio mostra come configurare la stringa di connessione della persistenza con SQL Server e come creare l'archivio di istanze per rendere persistenti i dati delle istanze del flusso di lavoro. Viene fornita la logica per riprendere il flusso di lavoro una volta generato un evento che rende eseguibile l'istanza del flusso di lavoro.

Nel corso di questo esempio verrà mostrato il momento di inizio e fine del ritardo incorporato, che a sua volta determina l'invio di un messaggio di posta elettronica. A questo punto, l'attività AbsoluteDelay verrà interrotta fino a una determinata DateTime (o 0 secondi se DateTime è scaduta), che a sua volta invierà un messaggio di posta elettronica alla scadenza. In questo modo verranno mostrati i due diversi casi di utilizzo della funzionalità Delay incorporata rispetto all'utilizzo di un'attività AbsoluteDelay.

Per impostare, compilare ed eseguire l'esempio

  1. Verificare che sul computer sia installato SQL Server Express (o versione successiva).

  2. Eseguire setup.cmd (da WF/Basic/Services/AbsoluteDelay/CS) in un prompt dei comandi di Visual Studio 2010 per creare il database AbsoluteDelaySampleDB, lo schema di persistenza e la logica di persistenza.

  3. Aprire la soluzione in Visual Studio 2010.

  4. Specificare Duration nell'attività Delay.

  5. Specificare ExpirationTime nell'attività AbsoluteDelay.

  6. Aggiornare i campi SendMailTo, SendMailFrom, SendMailSubject, SendMailBody e SmtpHost nell'attività SendMail.

    Ff522352.note(it-it,VS.100).gifNota:
    Se non si specifica un host SMTP valido, l'applicazione genera un'eccezione SMTP.

  7. Compilare la soluzione scegliendo Compila soluzione dal menu Compila.

  8. Eseguire la soluzione premendo F5.

Ff522352.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.

<InstallDrive>:\WF_WCF_Samples\WF\Basic\Services\AbsoluteDelay