Crear actividad de flujo de trabajo mediante la clase CodeActivity
Las actividades creadas al heredar de CodeActivity pueden implementar el comportamiento imperativo básico al invalidar el método Execute.
Usar 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 mediante CodeActivityContext incluyen lo siguiente:
Obtener y establecer los valores de variables y argumentos.
Características de seguimiento personalizadas con Track.
Obtenga acceso a las propiedades de ejecución de la actividad con GetProperty.
Para crear una actividad personalizada que herede de CodeActivity
Abra Visual Studio 2010.
Seleccione Archivo, Nuevo y después Proyecto. Seleccione Workflow 4.0 en Visual C# en la ventana Tipos de proyecto y seleccione el nodo v2010. Seleccione Biblioteca de actividad en la ventana Plantillas. Dé al nuevo proyecto el nombre "HelloActivity".
Haga clic con el botón derecho en Activity1.xaml en el proyecto HelloActivity y seleccione Eliminar.
Haga clic con el botón derecho en el proyecto HelloActivity, seleccione Agregar y después Clase. Dé a la nueva clase el nombre "HelloActivity.cs".
En el archivo HelloActivity.cs, agregue las siguientes directivas
using
.using System.Activities; using System.Activities.Statements;
Haga que la nueva clase herede de CodeActivity al agregar una clase base a la declaración de clase.
class HelloActivity : CodeActivity
Agregue la funcionalidad a la clase agregando un método Execute.
protected override void Execute(CodeActivityContext context) { Console.WriteLine("Hello World!"); }
Use 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); }