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


Авторизация действий рабочего процесса с использованием класса 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);
    }