Compartir a través de


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