Sdílet prostřednictvím


Vytvoření aktivity za běhu pomocí funkce DynamicActivity

DynamicActivity je betonová, zapečetěná třída s veřejným konstruktorem. DynamicActivity lze použít k sestavení funkčnosti aktivity za běhu pomocí dom aktivity.

Funkce dynamicactivity

DynamicActivity má přístup k vlastnostem spuštění, argumentům a proměnným, ale nemá přístup ke službám za běhu, jako je plánování podřízených aktivit nebo sledování.

Vlastnosti nejvyšší úrovně lze nastavit pomocí objektů pracovního postupu Argument . V imperativním kódu jsou tyto argumenty vytvořeny pomocí vlastností CLR na novém typu. V JAZYCE XAML jsou deklarovány pomocí x:Class a x:Member značky.

Aktivity vytvořené pomocí DynamicActivity rozhraní s návrhářem pomocí ICustomTypeDescriptor. Aktivity vytvořené v návrháři lze dynamicky načíst pomocí Load, jak je znázorněno v následujícím postupu.

Vytvoření aktivity za běhu pomocí imperativního kódu

  1. OpenVisual Studio 2010.

  2. Vyberte Soubor, Nový, Projekt. V okně Typy projektů vyberte v části Visual C# pracovní postup 4.0 a vyberte uzel v2010. V okně Šablony vyberte konzolovou aplikacisekvenčního pracovního postupu. Pojmenujte nový projekt DynamicActivitySample.

  3. V projektu HelloActivity klikněte pravým tlačítkem myši na Workflow1.xaml a vyberte Odstranit.

  4. Otevřete soubor Program.cs. Na začátek souboru přidejte následující direktivu.

    using System.Collections.Generic;  
    
  5. Nahraďte obsah Main metody následujícím kódem, který vytvoří Sequence aktivitu, která obsahuje jednu WriteLine aktivitu a přiřadí ji k Implementation vlastnosti nové dynamické aktivity.

    //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. Spusťte aplikaci. Okno konzoly s textem "Hello World!" se zobrazí.

Vytvoření aktivity za běhu pomocí XAML

  1. Otevřete Visual Studio 2010.

  2. Vyberte Soubor, Nový, Projekt. V okně Typy projektů vyberte v části Visual C# pracovní postup 4.0 a vyberte uzel v2010. V okně Šablony vyberte konzolovou aplikaci pracovního postupu. Pojmenujte nový projekt DynamicActivitySample.

  3. Otevřete Workflow1.xaml v projektu HelloActivity. Klikněte na možnost Argumenty v dolní části návrháře. Vytvořte nový In argument s názvem TextToWrite typu String.

  4. Přetáhněte aktivitu WriteLine z části Primitives panelu nástrojů na plochu návrháře. Přiřaďte hodnotu TextToWrite vlastnosti Text aktivity.

  5. Otevřete soubor Program.cs. Na začátek souboru přidejte následující direktivu.

    using System.Activities.XamlIntegration;  
    
  6. Obsah metody Main nahraďte následujícím kódem.

    Activity act2 = ActivityXamlServices.Load(@"Workflow1.xaml");  
                    results = WorkflowInvoker.Invoke(act2, new Dictionary<string, object> { { "TextToWrite", "HelloWorld!" } });  
    Console.ReadLine();  
    
  7. Spusťte aplikaci. Zobrazí se okno konzoly s textem "Hello World!".

  8. Pravým tlačítkem myši klikněte na soubor Workflow1.xaml v Průzkumník řešení a vyberte Zobrazit kód. Všimněte si, že třída aktivity je vytvořena s x:Class a vlastnost je vytvořena pomocí x:Property.

Viz také