Dela via


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

  1. OpenVisual Studio 2010.

  2. 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.

  3. Högerklicka på Workflow1.xaml i HelloActivity-projektet och välj Ta bort.

  4. Öppna Program.cs. Lägg till följande direktiv överst i filen.

    using System.Collections.Generic;  
    
  5. 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();  
    
  6. Kör programmet. Ett konsolfönster med texten "Hello World!" visas.

Så här skapar du en aktivitet vid körning med XAML

  1. Öppna Visual Studio 2010.

  2. 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.

  3. Öppna Workflow1.xaml i HelloActivity-projektet. Klicka på alternativet Argument längst ned i designern. Skapa ett nytt In argument med namnet TextToWrite av typen String.

  4. Dra en WriteLine-aktivitet från avsnittet Primitiver i verktygslådan till designerytan. Tilldela värdet TextToWrite till aktivitetens textegenskap.

  5. Öppna Program.cs. Lägg till följande direktiv överst i filen.

    using System.Activities.XamlIntegration;  
    
  6. 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();  
    
  7. Kör programmet. Ett konsolfönster med texten "Hello World!" visas.

  8. 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 med x:Property.

Se även