Condividi tramite


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);
    }