Aktivitätserstellungsoptionen in WF
Dieses Thema gilt für Windows Workflow Foundation 4.
.NET Framework, Version 4 stellt mehrere Optionen zum Erstellen von benutzerdefinierten Aktivitäten bereit. Die richtige Methode zum Erstellen einer bestimmten Aktivität hängt davon ab, welche Laufzeitfunktionen erforderlich sind.
Festlegen der Basisaktivitätsklasse für das Erstellen von benutzerdefinierten Aktivitäten
In der folgenden Tabelle werden die Funktionen aufgeführt, die in den benutzerdefinierten Aktivitätsbasisklassen verfügbar sind.
Basisaktivitätsklasse | Verfügbare Funktionen |
---|---|
Kombiniert Gruppen von vom System bereitgestellten und benutzerdefinierten Aktivitäten in einer zusammengesetzten Aktivität. |
|
Implementiert imperative Funktionalität durch das Bereitstellen einer Execute-Methode, die überschrieben werden kann. Bietet außerdem Zugriff auf die Überwachung, Variablen und Argumente. |
|
Stellt alle Funktionen der CodeActivity sowie zum Abbrechen der Ausführung einer Aktivität oder einer untergeordneten Aktivität, zur Verwendung von Lesezeichen und zum Planen von Aktivitäten, Aktivitätsaktionen und Funktionen bereit. |
|
Stellt einen DOM-ähnlichen Ansatz für das Erstellen von Aktivitäten bereit, der eine Schnittstelle mit dem WF-Designer und den Laufzeitvorgängen über IcustomTypeDescriptor bietet. Damit können neue Aktivitäten ohne die Definition neuer Typen erstellt werden. |
Erstellen von Aktivitäten mit Activity
Bei Aktivitäten, die von Activity abgeleitet werden, wird die Funktionalität aus der Kombination anderer vorhandener Aktivitäten zusammengesetzt. Bei diesen Aktivitäten kann es sich um benutzerdefinierte Aktivitäten und Aktivitäten aus der .NET Framework, Version 4-Aktivitätsbibliothek handeln. Das Zusammenfügen dieser Aktivitäten stellt die grundlegenste Möglichkeit für das Erstellen benutzerdefinierter Funktionalität dar. Der Ansatz wird in der Regel angewendet, wenn eine visuelle Entwurfsumgebung zum Erstellen von Workflows verwendet wird.
Erstellen von Aktivitäten mit CodeActivity
Aktivitäten, die von der CodeActivity-Objekt abgeleitet werden, können imperative Funktionalität implementieren, indem sie die Execute-Methode mit benutzerdefiniertem imperativem Code überschreiben. Der benutzerdefinierte Code wird ausgeführt, wenn die Aktivität von der Laufzeit ausgeführt wird. Auf diese Weise erstellte Aktivitäten können auf benutzerdefinierte Funktionalität zugreifen, jedoch nicht auf sämtliche Funktionen der Laufzeit. So verfügen sie nicht auf den Vollzugriff auf die Ausführungsumgebung und unterstützen die Cancel-Methode und die Abort-Methode nicht. Wenn eine CodeActivity ausgeführt wird, verfügt diese über Zugriff auf eine eingeschränkte Version der Ausführungsumgebung (durch die CodeActivityContext-Klasse). Mit der CodeActivity erstellte Aktivitäten verfügen über Zugriff auf Argument- und Variablenauflösung, Erweiterungen und Überwachung. Asynchronen Aktivitäten können mit AsyncCodeActivity geplant werden.
Erstellen von Aktivitäten mit NativeActivity
Mit Aktivitäten, die von der NativeActivity abgeleitet werden (etwa von der CodeActivity abgeleitete Aktivitäten), wird eine imperative Funktionalität erzeugt, indem Execute überschrieben wird. Es besteht jedoch über den NativeActivityContext, der an die Execute-Methode weitergegeben wird, Zugriff auf die gesamte Funktionalität der Workflowlaufzeit. Dieser Kontext unterstützt das Planen und Abbrechen von untergeordneten Aktivitäten, die Ausführung von ActivityAction-Objekten und ActivityFunc-Objekten, das Abbrechen einer Ausführung, den Zugriff auf Ausführungseigenschaften und -erweiterungen sowie Lesezeichen (Handles zum Fortsetzen von angehaltenen Workflows).
Erstellen von Aktivitäten mit DynamicActivity
Im Gegensatz zu den anderen drei Aktivitätstypen wird Funktionalität nicht durch das Ableiten neuer Typen von der DynamicActivity erstellt (die Klasse ist versiegelt), sondern durch das Zusammenfügen von Funktionalität in der Properties-Eigenschaft und der Implementation-Eigenschaft mit einem Dokumentobjektmodell (DOM) für Aktivitäten.
Erstellen von Aktivitäten, die ein Ergebnis zurückgeben
Viele Aktivitäten müssen nach ihrer Ausführung ein Ergebnis zurückgeben. Es ist möglich, zu diesem Zweck ein benutzerdefiniertes OutArgument für eine Aktivität anzugeben, aber es empfiehlt sich, stattdessen die Activity oder eine Ableitung von der CodeActivity oder NativeActivity zu verwenden. Jede dieser Basisklassen verfügt über ein OutArgument mit dem Namen Result, das die Aktivität für den Rückgabewert verwenden kann.