Freigeben über


Optionen für die Aktivitätserstellung in WF

.NET Framework 4.6.1 bietet mehrere Optionen zum Erstellen benutzerdefinierter Aktivitäten. Die richtige Methode zum Erstellen einer bestimmten Aktivität hängt davon ab, welche Laufzeitfeatures erforderlich sind.

Entscheiden, welche Basisaktivitätsklasse für die Erstellung benutzerdefinierter Aktivitäten verwendet werden soll

In der folgenden Tabelle sind die Features aufgeführt, die in den benutzerdefinierten Aktivitätsbasisklassen verfügbar sind.

Basisaktivitätsklasse Verfügbare Funktionen
Activity Verfasst Gruppen von vom System bereitgestellten und benutzerdefinierten Aktivitäten in einer zusammengesetzten Aktivität.
CodeActivity Implementiert imperative Funktionen, indem eine Execute Methode bereitgestellt wird, die überschrieben werden kann. Bietet außerdem Zugriff auf Nachverfolgung, Variablen und Argumente..
NativeActivity Bietet alle Features von CodeActivity, plus Abbruch der Aktivitätsausführung, Abbrechen der Ausführung untergeordneter Aktivitäten, Verwenden von Lesezeichen und Planen von Aktivitäten, Aktivitätsaktionen und Funktionen.
DynamicActivity Bietet einen DOM-ähnlichen Ansatz zum Erstellen von Aktivitäten, die mit dem WF-Designer und den Laufzeitmaschinen über ICustomTypeDescriptorschnittstellen, wodurch neue Aktivitäten erstellt werden können, ohne neue Typen zu definieren.

Erstellen von Aktivitäten mithilfe von Aktivität

Aktivitäten, die von der Activity Verfassenfunktion abgeleitet werden, indem andere vorhandene Aktivitäten zusammengestellt werden. Diese Aktivitäten können vorhandene benutzerdefinierte Aktivitäten und Aktivitäten aus der .NET Framework 4.6.1-Aktivitätsbibliothek sein. Das Zusammenstellen dieser Aktivitäten ist die einfachste Möglichkeit zum Erstellen benutzerdefinierter Funktionen. Dieser Ansatz wird in der Regel bei Verwendung einer visuellen Entwurfsumgebung für die Erstellung von Workflows verwendet.

Erstellen von Aktivitäten mit CodeActivity oder AsyncCodeActivity

Aktivitäten, die von CodeActivity imperativen Funktionen abgeleitet oder AsyncCodeActivity implementiert werden können, indem die Execute Methode mit benutzerdefiniertem imperativem Code überschrieben wird. Der benutzerdefinierte Code wird ausgeführt, wenn die Aktivität von der Laufzeit ausgeführt wird. Während auf diese Weise erstellte Aktivitäten Zugriff auf benutzerdefinierte Funktionen haben, haben sie keinen Zugriff auf alle Features der Laufzeit, z. B. vollzugriff auf die Ausführungsumgebung, die Möglichkeit, untergeordnete Aktivitäten, Lesezeichenerstellung oder Unterstützung für eine Cancel- oder Abort-Methode zu planen. Wenn eine CodeActivity Ausführung ausgeführt wird, hat sie Zugriff auf eine eingeschränkte Version der Ausführungsumgebung (über die CodeActivityContext Oder AsyncCodeActivityContext Klasse). Mithilfe von Aktivitäten, die mithilfe von CodeActivity Argumenten und variablen Auflösungen, Erweiterungen und Nachverfolgung erstellt wurden, haben Zugriff. Die asynchrone Aktivitätsplanung kann mithilfe von AsyncCodeActivity.

Erstellen von Aktivitäten mithilfe von NativeActivity

Aktivitäten, die von NativeActivitysolchen abgeleitet werden, CodeActivityerstellen imperative Funktionen durch Außerkraftsetzung Execute, haben aber auch Zugriff auf alle Funktionen der Workflowlaufzeit über die Methode, die NativeActivityContext an die Execute Methode übergeben wird. Dieser Kontext unterstützt das Planen und Abbrechen von untergeordneten Aktivitäten, das Ausführen ActivityAction und ActivityFunc<TResult> Objekte, das Fließen von Transaktionen in einen Workflow, das Aufrufen asynchroner Prozesse, das Abbrechen und Abbrechen der Ausführung, den Zugriff auf Ausführungseigenschaften und Erweiterungen sowie Lesezeichen (Handles für das Fortsetzen angehaltener Workflows).

Erstellen von Aktivitäten mithilfe von DynamicActivity

Im Gegensatz zu den anderen drei Aktivitätstypen wird neue Funktionen nicht durch Ableiten neuer Typen DynamicActivity erstellt (die Klasse ist versiegelt), sondern durch Zusammensetzen von Funktionen in den Properties und Implementation Eigenschaften mithilfe eines Aktivitätsdokumentobjektmodells (DOM).

Dokumenterstellungsaktivitäten, die ein Ergebnis zurückgeben

Viele Aktivitäten müssen nach ihrer Ausführung ein Ergebnis zurückgeben. Obwohl es möglich ist, immer einen Benutzerdefinierten OutArgument<T> für eine Aktivität zu diesem Zweck zu definieren, wird empfohlen, stattdessen zu verwenden Activity<TResult>, oder von CodeActivity<TResult> oder NativeActivity<TResult>ableiten. Jede dieser Basisklassen verfügt über ein benanntes OutArgument<T> Ergebnis, das Ihre Aktivität für den Rückgabewert verwenden kann. Aktivitäten, die ein Ergebnis zurückgeben, sollten nur verwendet werden, wenn nur ein Ergebnis von einer Aktivität zurückgegeben werden muss; Wenn mehrere Ergebnisse zurückgegeben werden müssen, sollten stattdessen separate OutArgument<T> Member verwendet werden.