Skapa en aktivitet vid körning med DynamicActivity
DynamicActivity är en betong, förseglad klass med en offentlig konstruktor. DynamicActivity kan användas för att sätta ihop aktivitetsfunktioner vid körning med hjälp av en aktivitets-DOM.
DynamicActivity-funktioner
DynamicActivity har åtkomst till körningsegenskaper, argument och variabler, men ingen åtkomst till körningstjänster som schemaläggning av underordnade aktiviteter eller spårning.
Egenskaper på den översta nivån kan anges med hjälp av arbetsflödesobjekt Argument . I imperativ kod skapas dessa argument med hjälp av CLR-egenskaper på en ny typ. I XAML deklareras de med hjälp av x:Class
och x:Member
taggar.
Aktiviteter som skapats med hjälp av DynamicActivity gränssnittet med designern med hjälp av ICustomTypeDescriptor. Aktiviteter som skapas i designern kan läsas in dynamiskt med hjälp av Load, vilket visas i följande procedur.
Skapa en aktivitet vid körning med imperativ kod
OpenVisual Studio 2010.
Välj Arkiv, Nytt, Projekt. Välj Arbetsflöde 4.0 under Visual C# i fönstret Projekttyper och välj noden v2010 . Välj Sekventiellt arbetsflödeskonsolprogram i fönstret Mallar . Ge det nya projektet namnet DynamicActivitySample.
Högerklicka på Workflow1.xaml i HelloActivity-projektet och välj Ta bort.
Öppna Program.cs. Lägg till följande direktiv överst i filen.
using System.Collections.Generic;
Ersätt innehållet i
Main
metoden med följande kod, som skapar en Sequence aktivitet som innehåller en enskild WriteLine aktivitet och tilldelar den Implementation till egenskapen för en ny dynamisk aktivitet.//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();
Kör programmet. Ett konsolfönster med texten "Hello World!" visas.
Så här skapar du en aktivitet vid körning med XAML
Öppna Visual Studio 2010.
Välj Arkiv, Nytt, Projekt. Välj Arbetsflöde 4.0 under Visual C# i fönstret Projekttyper och välj noden v2010 . Välj Arbetsflödeskonsolprogram i fönstret Mallar . Ge det nya projektet namnet DynamicActivitySample.
Öppna Workflow1.xaml i HelloActivity-projektet. Klicka på alternativet Argument längst ned i designern. Skapa ett nytt
In
argument med namnetTextToWrite
av typenString
.Dra en WriteLine-aktivitet från avsnittet Primitiver i verktygslådan till designerytan. Tilldela värdet
TextToWrite
till aktivitetens textegenskap.Öppna Program.cs. Lägg till följande direktiv överst i filen.
using System.Activities.XamlIntegration;
Ersätt innehållet i metoden
Main
med följande kod.Activity act2 = ActivityXamlServices.Load(@"Workflow1.xaml"); results = WorkflowInvoker.Invoke(act2, new Dictionary<string, object> { { "TextToWrite", "HelloWorld!" } }); Console.ReadLine();
Kör programmet. Ett konsolfönster med texten "Hello World!" visas.
Högerklicka på filen Workflow1.xaml i Solution Explorer och välj Visa kod. Observera att aktivitetsklassen skapas med
x:Class
och att egenskapen skapas medx:Property
.