Udostępnij za pośrednictwem


Tworzenie działania w czasie wykonywania za pomocą funkcji DynamicActivity

DynamicActivity jest betonową, zapieczętowaną klasą z publicznym konstruktorem. DynamicActivity można używać do tworzenia funkcji działania w czasie wykonywania przy użyciu działania DOM.

Funkcje DynamicActivity

DynamicActivity ma dostęp do właściwości wykonywania, argumentów i zmiennych, ale nie ma dostępu do usług czasu wykonywania, takich jak planowanie działań podrzędnych lub śledzenie.

Właściwości najwyższego poziomu można ustawić przy użyciu obiektów przepływu pracy Argument . W kodzie imperatywne te argumenty są tworzone przy użyciu właściwości CLR w nowym typie. W języku XAML są deklarowane przy użyciu tagów x:Class i .x:Member

Działania skonstruowane przy użyciu DynamicActivity interfejsu z projektantem przy użyciu polecenia ICustomTypeDescriptor. Działania utworzone w projektancie można ładować dynamicznie przy użyciu metody Load, jak pokazano w poniższej procedurze.

Aby utworzyć działanie w czasie wykonywania przy użyciu kodu imperatywnego

  1. OtwórzVisual Studio 2010.

  2. Wybierz pozycję Plik, Nowy, Projekt. Wybierz pozycję Przepływ pracy 4.0 w obszarze Visual C# w oknie Typy projektów i wybierz węzeł v2010 . Wybierz pozycję Aplikacja konsoli sekwencyjnego przepływu pracy w oknie Szablony . Nadaj nowej nazwie projekt DynamicActivitySample.

  3. Kliknij prawym przyciskiem myszy pozycję Workflow1.xaml w projekcie HelloActivity i wybierz polecenie Usuń.

  4. Otwórz plik Program.cs. Dodaj następującą dyrektywę na początku pliku.

    using System.Collections.Generic;  
    
  5. Zastąp zawartość Main metody następującym kodem, który tworzy Sequence działanie zawierające jedno WriteLine działanie i przypisuje go do Implementation właściwości nowego działania dynamicznego.

    //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. Wykonaj aplikację. Zostanie wyświetlone okno konsoli z tekstem "Hello World!".

Aby utworzyć działanie w czasie wykonywania przy użyciu języka XAML

  1. Otwórz program Visual Studio 2010.

  2. Wybierz pozycję Plik, Nowy, Projekt. Wybierz pozycję Przepływ pracy 4.0 w obszarze Visual C# w oknie Typy projektów i wybierz węzeł v2010 . Wybierz pozycję Aplikacja konsoli przepływu pracy w oknie Szablony . Nadaj nowej nazwie projekt DynamicActivitySample.

  3. Otwórz plik Workflow1.xaml w projekcie HelloActivity. Kliknij opcję Argumenty w dolnej części projektanta. Utwórz nowy In argument o nazwie TextToWrite typu String.

  4. Przeciągnij działanie WriteLine z sekcji Typy pierwotne przybornika na powierzchnię projektanta. Przypisz wartość TextToWrite do właściwości Text działania.

  5. Otwórz plik Program.cs. Dodaj następującą dyrektywę na początku pliku.

    using System.Activities.XamlIntegration;  
    
  6. Zastąp zawartość metody Main następującym kodem.

    Activity act2 = ActivityXamlServices.Load(@"Workflow1.xaml");  
                    results = WorkflowInvoker.Invoke(act2, new Dictionary<string, object> { { "TextToWrite", "HelloWorld!" } });  
    Console.ReadLine();  
    
  7. Wykonaj aplikację. Zostanie wyświetlone okno konsoli z tekstem "Hello World!".

  8. Kliknij prawym przyciskiem myszy plik Workflow1.xaml w Eksplorator rozwiązań i wybierz polecenie Wyświetl kod. Należy pamiętać, że klasa działania jest tworzona za pomocą x:Class polecenia , a właściwość jest tworzona za pomocą x:Propertypolecenia .

Zobacz też