Udostępnij za pomocą


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

DynamicActivity jest ostateczną klasą z publicznym konstruktorem. DynamicActivity można używać do tworzenia funkcjonalności aktywności w czasie wykonywania przy użyciu modelu 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 środowiska uruchomieniowego, 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 współpracują z projektantem za pomocą 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órz Visual Studio 2010.

  2. Wybierz 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 Aplikację konsoli przepływu pracy sekwencyjnego 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 przy użyciu języka XAML w czasie wykonywania

  1. Otwórz program Visual Studio 2010.

  2. Wybierz 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 Aplikacja konsolowa 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ść Main metody 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 Eksploratorze rozwiązań i wybierz pozycję 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 także