Creazione di attività del flusso di lavoro tramite la classe CodeActivity

Le attività create ereditando da CodeActivity possono implementare un comportamento imperativo di base eseguendo l'override del Execute metodo .

Uso di CodeActivityContext

È possibile accedere alle funzionalità del runtime del flusso di lavoro dall'interno del Execute metodo usando i membri del context parametro , di tipo CodeActivityContext. Le funzionalità disponibili tramite CodeActivityContext includono quanto segue:

  • Ottenere e impostare i valori delle variabili e degli argomenti.

  • Funzionalità di rilevamento personalizzate che usano Track.

  • Accesso alle proprietà di esecuzione dell'attività tramite GetProperty.

Per creare un'attività personalizzata che eredita da CodeActivity

  1. Aprire Visual Studio 2010.

  2. Selezionare File, Nuovo e quindi Progetto. Selezionare Flusso di lavoro 4.0 in Visual C# nella finestra Tipi di progetto e selezionare il nodo v2010 . Selezionare Libreria attività nella finestra Modelli . Assegnare al nuovo progetto il nome HelloActivity.

  3. Fare clic con il pulsante destro del mouse su Activity1.xaml nel progetto HelloActivity e scegliere Elimina.

  4. Fare clic con il pulsante destro del mouse sul progetto HelloActivity e scegliere Aggiungi e quindi Classe. Assegnare alla nuova classe il nome HelloActivity.cs.

  5. Nel file HelloActivity.cs aggiungere le direttive seguenti using .

    using System.Activities;
    using System.Activities.Statements;
    
  6. Fare in modo che la nuova classe erediti da CodeActivity aggiungendo una classe base alla dichiarazione di classe.

    class HelloActivity : CodeActivity
    
  7. Aggiungere funzionalità alla classe aggiungendo un Execute metodo .

    protected override void Execute(CodeActivityContext context)
    {
        Console.WriteLine("Hello World!");
    }
    
  8. Utilizzare il 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);
    }