Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
DynamicActivity ist eine konkrete, versiegelte Klasse mit einem öffentlichen Konstruktor. DynamicActivity kann zur Zusammenstellung von Aktivitätsfunktionen zur Laufzeit mit einem Aktivitäts-DOM verwendet werden.
DynamicActivity-Funktionen
DynamicActivity hat Zugriff auf Ausführungseigenschaften, Argumente und Variablen, aber keinen Zugriff auf Laufzeitdienste, z. B. das Planen von untergeordneten Aktivitäten oder die Nachverfolgung.
Eigenschaften der obersten Ebene können mithilfe von Workflowobjekten Argument festgelegt werden. Im imperativen Code werden diese Argumente mithilfe von CLR-Eigenschaften für einen neuen Typ erstellt. In XAML werden sie mithilfe x:Class
und x:Member
Tags deklariert.
Aktivitäten werden mit der DynamicActivity-Schnittstelle erstellt und interagieren mit dem Designer über ICustomTypeDescriptor. Im Designer erstellte Aktivitäten können dynamisch geladen werden mit Load, wie im folgenden Verfahren gezeigt.
So erstellen Sie eine Aktivität während der Ausführung mit imperativem Code
OpenVisual Studio 2010.
Wählen Sie "Datei", "Neu", "Projekt" aus. Wählen Sie "Workflow 4.0" unter Visual C# im Fenster "Projekttypen " und dann den Knoten "v2010 " aus. Wählen Sie im Vorlagenfenster die Sequenzielle Workflowkonsolenanwendung aus. Benennen Sie das neue Projekt DynamicActivitySample.
Klicken Sie im HelloActivity-Projekt mit der rechten Maustaste auf "Workflow1.xaml", und wählen Sie "Löschen" aus.
Öffnen Sie die Datei Program.cs. Fügen Sie die folgende Direktive am Anfang der Datei hinzu.
using System.Collections.Generic;
Ersetzen Sie den Inhalt der
Main
Methode durch den folgenden Code, der eine Aktivität erstellt, die eine Sequence einzelne WriteLine Aktivität enthält, und weist sie der Implementation Eigenschaft einer neuen dynamischen Aktivität zu.//Define the input argument for the activity var textOut = new InArgument<string>(); //Create the activity, property, and implementation Activity dynamicWorkflow = new DynamicActivity() { Properties = { new DynamicActivityProperty { Name = "Text", Type = typeof(InArgument<String>), Value = textOut } }, Implementation = () => new Sequence() { Activities = { new WriteLine() { Text = new InArgument<string>(env => textOut.Get(env)) } } } }; //Execute the activity with a parameter dictionary WorkflowInvoker.Invoke(dynamicWorkflow, new Dictionary<string, object> { { "Text", "Hello World!" } }); Console.ReadLine();
Führen Sie die Anwendung aus. Ein Konsolenfenster mit dem Text "Hello World!" wird angezeigt.
So erstellen Sie eine Aktivität während der Laufzeit mithilfe von XAML
Öffnen Sie Visual Studio 2010.
Wählen Sie "Datei", "Neu", "Projekt" aus. Wählen Sie "Workflow 4.0" unter Visual C# im Fenster "Projekttypen " und dann den Knoten "v2010 " aus. Wählen Sie im Vorlagenfenster die Workflowkonsolenanwendung aus. Benennen Sie das neue Projekt DynamicActivitySample.
Öffnen Sie Workflow1.xaml im HelloActivity-Projekt. Klicken Sie unten im Designer auf die Option "Argumente ". Erstellen Sie ein neues
In
-Argument mit dem NamenTextToWrite
und dem TypString
.Ziehen Sie eine WriteLine-Aktivität aus dem Abschnitt Primitives der Toolbox auf die Designeroberfläche. Weisen Sie den Wert
TextToWrite
der Text-Eigenschaft der Aktivität zu.Öffnen Sie die Datei Program.cs. Fügen Sie die folgende Direktive am Anfang der Datei hinzu.
using System.Activities.XamlIntegration;
Ersetzen Sie die Inhalte der
Main
-Methode durch den folgenden Code.Activity act2 = ActivityXamlServices.Load(@"Workflow1.xaml"); results = WorkflowInvoker.Invoke(act2, new Dictionary<string, object> { { "TextToWrite", "HelloWorld!" } }); Console.ReadLine();
Führen Sie die Anwendung aus. Ein Konsolenfenster mit dem Text "Hello World!" wird angezeigt.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei "Workflow1.xaml", und wählen Sie "Code anzeigen" aus. Beachten Sie, dass die Aktivitätsklasse mit
x:Class
erstellt wird und die Eigenschaft mitx:Property
.