Поделиться через


Разработка действий рабочих процессов с помощью класса CodeActivity

Действия, созданные путем наследования от CodeActivity, могут реализовывать базовое императивное поведение путем переопределения метода Execute.

Использование CodeActivityContext

Доступ к функциям среды выполнения рабочего процесса можно получить из метода Execute при помощи элементов параметра context типа CodeActivityContext. Функции, доступные посредством CodeActivityContext:

  • Возврат и задание значений аргументов и переменных.

  • Пользовательские функции отслеживания с использованием Track.

  • Доступ к свойствам выполнения действия с помощью GetProperty.

Создание настраиваемого действия, которое наследуется от CodeActivity

  1. Откройте Visual Studio 2010.

  2. Выберите "Файл", "Создать" и " Проект". Выберите рабочий процесс 4.0 в разделе Visual C# в окне "Типы проектов " и выберите узел версии 2010 . Выберите библиотекудействий в окне "Шаблоны ". Задайте имя для нового проекта HelloActivity.

  3. Щелкните правой кнопкой мыши Activity1.xaml в проекте HelloActivity и выберите "Удалить".

  4. Щелкните правой кнопкой мыши проект HelloActivity и выберите "Добавить " и " Класс". Задайте имя для нового класса HelloActivity.cs.

  5. В файле HelloActivity.cs добавьте следующие директивы using.

    using System.Activities;
    using System.Activities.Statements;
    
  6. Сделайте так, чтобы новый класс наследовал от действия CodeActivity путем добавления базового класса к объявлению класса.

    class HelloActivity : CodeActivity
    
  7. Добавьте функциональные возможности к классу путем добавления метода Execute.

    protected override void Execute(CodeActivityContext context)
    {
        Console.WriteLine("Hello World!");
    }
    
  8. Используйте объект CodeActivityContext для создания записи отслеживания.

    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);
    }