Classe di base NativeActivity
NativeActivity è una classe astratta con un costruttore protetto. Come l'oggetto CodeActivity, NativeActivity viene usato per la scrittura del comportamento imperativo implementando un metodo Execute. A differenza dell'oggetto CodeActivity, NativeActivity dispone di accesso a tutte le funzionalità esposte dell'esecuzione del flusso di lavoro tramite l'oggetto NativeActivityContext passato al metodo Execute.
Uso di NativeActivityContext
L'accesso a funzionalità dell'esecuzione del flusso di lavoro può essere eseguito dall'interno del metodo Execute tramite i membri del parametro context
, di tipo NativeActivityContext. Tra le funzionalità disponibili tramite l'oggetto NativeActivityContext sono incluse le seguenti:
Recupero e impostazione di argomenti e variabili.
Pianificazione delle attività figlio con il metodo ScheduleActivity
Interruzione dell'esecuzione di attività tramite il metodo Abort.
Annullamento dell'esecuzione di oggetti figlio tramite i metodi CancelChild e CancelChildren.
Accesso ai segnalibri delle attività tramite metodi come CreateBookmark, RemoveBookmark e ResumeBookmark.
Funzionalità di rilevamento personalizzate tramite Track.
Accesso alle proprietà di esecuzione e a quelle del valore dell'attività tramite i metodi GetProperty e GetValue.
Pianificazione di azioni e funzioni di attività tramite ScheduleAction e ScheduleFunc.
Per creare un'attività personalizzata che eredita da NativeActivity
Aprire OpenVisual Studio 2010.
Scegliere File, Nuovo, quindi Progetto. Selezionare Workflow 4.0 sotto Visual C# nella finestra Tipi progetto e scegliere il nodo v2010. Selezionare Libreria attività nella finestra Modelli. Assegnare al nuovo progetto il nome HelloActivity.
Fare clic con il pulsante destro del mouse su Activity1.xaml nel progetto HelloActivity e scegliere Elimina.
Fare clic con il pulsante destro del mouse sul progetto HelloActivity e scegliere Aggiungi, quindi Classe. Assegnare alla nuova classe il nome HelloActivity.cs.
Nel file HelloActivity.cs aggiungere le seguenti istruzioni
using
.using System.Activities; using System.Activities.Statements;
Assicurarsi che la nuova classe erediti dall'oggetto NativeActivity aggiungendo una classe base alla dichiarazione di classe.
class HelloActivity : NativeActivity
Aggiungere la funzionalità alla classe aggiungendo un metodo Execute.
protected override void Execute(NativeActivityContext context) { Console.WriteLine("Hello World!"); }
Eseguire l'override del metodo CacheMetadata e chiamare il metodo Add appropriato per inviare al runtime del flusso di lavoro le informazioni sulle variabili, gli argomenti, gli elementi figlio e i delegati dell'attività personalizzata. Per altre informazioni, vedere la classe NativeActivityMetadata.
Usare l'oggetto NativeActivityContext per pianificare un segnalibro. Per informazioni dettagliate sulla creazione, pianificazione e ripresa di un segnalibro, vedere Bookmarks.
protected override void Execute(NativeActivityContext context) { // Create a Bookmark and wait for it to be resumed. context.CreateBookmark(BookmarkName.Get(context), new BookmarkCallback(OnResumeBookmark)); }