Creazione di attività del flusso di lavoro tramite la classe CodeActivity
Le attività create ereditando dall'oggetto CodeActivity possono implementare il comportamento imperativo di base eseguendo l'override del metodo Execute.
Uso di CodeActivityContext
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 CodeActivityContext. Tra le funzionalità disponibili tramite l'oggetto CodeActivityContext sono incluse le seguenti:
Recupero e impostazione di valori di variabili e di argomenti.
Funzionalità di rilevamento personalizzate tramite Track.
Accesso alle proprietà di esecuzione dell'attività tramite il metodo GetProperty.
Per creare un'attività personalizzata che eredita da CodeActivity
Aprire Visual Studio 2010.
Scegliere File, Nuovo, quindi Progetto. Selezionare Workflow 4.0 sotto Visual C# nella finestra Tipi progetto, quindi selezionare 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 CodeActivity aggiungendo una classe base alla dichiarazione di classe.
class HelloActivity : CodeActivity
Aggiungere la funzionalità alla classe aggiungendo un metodo Execute.
protected override void Execute(CodeActivityContext context) { Console.WriteLine("Hello World!"); }
Usare l'oggetto CodeActivityContext per creare un record di rilevamento.
protected override void Execute(CodeActivityContext context) { Console.WriteLine("Hello World!"); CustomTrackingRecord record = new CustomTrackingRecord("MyRecord"); record.Data.Add(new KeyValuePair<String, Object>("ExecutionTime", DateTime.Now)); context.Track(record); }