Udostępnij za pomocą


Tworzenie działań przepływu pracy przy użyciu klasy CodeActivity

Działania utworzone przez dziedziczenie z CodeActivity mogą implementować podstawowe zachowanie imperatywne przez zastąpienie metody Execute.

Używanie elementu CodeActivityContext

Dostęp do funkcji środowiska uruchomieniowego przepływu pracy można uzyskać z poziomu metody Execute przy użyciu członków parametru context z typu CodeActivityContext. Dostępne przez CodeActivityContext funkcje obejmują następujące:

  • Pobieranie i ustawianie wartości zmiennych i argumentów.

  • Niestandardowe funkcje śledzenia przy użyciu Track.

  • Dostęp do właściwości wykonywania działania przy użyciu polecenia GetProperty.

Aby utworzyć działanie niestandardowe, które dziedziczy po CodeActivity

  1. Otwórz program Visual Studio 2010.

  2. Wybierz pozycję Plik, Nowy, a następnie Projekt. Wybierz pozycję Przepływ pracy 4.0 w obszarze Visual C# w oknie Typy projektów i wybierz węzeł v2010 . Wybierz Bibliotekę aktywności w oknie Szablony. Nadaj nowej nazwie projekt HelloActivity.

  3. Kliknij prawym przyciskiem myszy plik Activity1.xaml w projekcie HelloActivity i wybierz polecenie Usuń.

  4. Kliknij prawym przyciskiem myszy projekt HelloActivity i wybierz polecenie Dodaj , a następnie pozycję Klasa. Nadaj nowej klasie nazwę HelloActivity.cs.

  5. W pliku HelloActivity.cs dodaj następujące polecenia using.

    using System.Activities;
    using System.Activities.Statements;
    
  6. Spraw, aby nowa klasa dziedziczyła po CodeActivity poprzez dodanie klasy bazowej do deklaracji klasy.

    class HelloActivity : CodeActivity
    
  7. Dodaj funkcjonalność do klasy, dodając metodę Execute .

    protected override void Execute(CodeActivityContext context)
    {
        Console.WriteLine("Hello World!");
    }
    
  8. Użyj CodeActivityContext aby utworzyć rekord śledzenia.

    protected override void Execute(CodeActivityContext context)
    {
        Console.WriteLine("Hello World!");
        CustomTrackingRecord record = new CustomTrackingRecord("MyRecord");
        record.Data.Add(new KeyValuePair<String, Object>("ExecutionTime", DateTime.Now));
        context.Track(record);
    }