Creación de actividad de flujo de trabajo mediante la clase CodeActivity

Las actividades creadas mediante la herencia de CodeActivity pueden implementar un comportamiento imperativo básico invalidando el Execute método .

Uso de CodeActivityContext

Se puede tener acceso a las características del tiempo de ejecución del flujo de trabajo desde dentro del método Execute usando los miembros del parámetro context, del tipo CodeActivityContext. Las características disponibles a través de CodeActivityContext incluyen las siguientes:

  • Obtención y establecimiento de los valores de variables y argumentos.

  • Características de seguimiento personalizadas mediante Track.

  • Acceso a las propiedades de ejecución de la actividad mediante GetProperty.

Para crear una actividad personalizada que herede de CodeActivity

  1. Abre Visual Studio 2010.

  2. Seleccione Archivo, Nuevo y, a continuación, Proyecto. Seleccione Flujo de trabajo 4.0 en Visual C# en la ventana Tipos de proyecto y seleccione el nodo v2010 . Seleccione Biblioteca de actividad en la ventana Plantillas. Asigne al nuevo proyecto el nombre HelloActivity.

  3. Haga clic con el botón derecho en Activity1.xaml en el proyecto HelloActivity y seleccione Eliminar.

  4. Haga clic con el botón derecho en el proyecto HelloActivity y seleccione Agregar y, después, Clase. Nombre la nueva clase HelloActivity.cs.

  5. En el archivo HelloActivity.cs, agregue las siguientes using directivas.

    using System.Activities;
    using System.Activities.Statements;
    
  6. Haga que la nueva clase herede de CodeActivity agregando una clase base a la declaración de clase.

    class HelloActivity : CodeActivity
    
  7. Agregue funcionalidad a la clase agregando un Execute método .

    protected override void Execute(CodeActivityContext context)
    {
        Console.WriteLine("Hello World!");
    }
    
  8. Utiliza el CodeActivityContext para crear un registro de seguimiento.

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