Erstellen von Workflowaktivitäten mit der CodeActivity-Klasse
Aktivitäten, die durch das Erben von CodeActivity erstellt werden, können das grundlegende imperative Verhalten implementieren, indem sie die Execute-Methode überschreiben.
Verwenden von CodeActivityContext
Innerhalb der Execute-Methode kann mithilfe von Membern des context
-Parameters vom Typ CodeActivityContext auf Funktionen des Workflows zugegriffen werden. Über CodeActivityContext sind unter anderem folgende Funktionen verfügbar:
Abrufen und Festlegen der Werte von Variablen und Argumenten
Benutzerdefinierte Überwachungsfunktionen mit Track
Zugreifen auf die Ausführungseigenschaften der Aktivität mithilfe von GetProperty
So erstellen Sie eine benutzerdefinierte Aktivität, die von CodeActivity erbt
Öffnen Sie Visual Studio 2010.
Wählen Sie Datei, Neu und dann Projekt aus. Wählen Sie unter Visual C# im Fenster Projekttypen die Option Workflow 4.0 und danach den Knoten v2010 aus. Wählen Sie im Fenster Vorlagen die Option Aktivitätsbibliothek aus. Geben Sie dem neuen Projekt den Namen "HelloActivity".
Klicken Sie mit der rechten Maustaste im HelloActivity-Projekt auf "Activity1.xaml", und wählen Sie Löschen aus.
Klicken Sie mit der rechten Maustaste auf das HelloActivity-Projekt, und wählen Sie Hinzufügen und danach Klasse aus. Nennen Sie die neue Klasse HelloActivity.cs.
Fügen Sie der Datei "HelloActivity.cs" die folgenden
using
-Direktiven hinzu.using System.Activities; using System.Activities.Statements;
Legen Sie fest, dass die neue Klasse von CodeActivity erben soll, indem Sie der Klassendeklaration eine Basisklasse hinzufügen.
class HelloActivity : CodeActivity
Fügen Sie der Klasse die Funktionalität hinzu, indem Sie eine Execute-Methode hinzufügen.
protected override void Execute(CodeActivityContext context) { Console.WriteLine("Hello World!"); }
Verwenden Sie die CodeActivityContext-Instanz, um einen Nachverfolgungsdatensatz zu erstellen.
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); }