Clase base NativeActivity
NativeActivity es una clase abstracta con un constructor protegido. Al igual que ocurre con CodeActivity, NativeActivity se usa para escribir el comportamiento imperativo al implementar un método Execute. A diferencia de CodeActivity, NativeActivity tiene acceso a todas las características expuestas del tiempo de ejecución del flujo de trabajo a través del objeto NativeActivityContext pasado al método Execute.
Usar NativeActivityContext
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 NativeActivityContext. Las características disponibles mediante NativeActivityContext incluyen lo siguiente:
Obtener y definir los argumentos y variables.
Programar las actividades secundarias con ScheduleActivity
Anular la ejecución de la actividad con Abort.
Cancelar la ejecución secundaria con CancelChild y CancelChildren.
Obtener acceso a los marcadores de actividad usando dichos métodos como CreateBookmark, RemoveBookmark y ResumeBookmark.
Características de seguimiento personalizadas con Track.
Acceso a las propiedades de ejecución de la actividad y a las propiedades de los valores con GetProperty y GetValue.
Programar las acciones de la actividad y las funciones mediante ScheduleAction y ScheduleFunc.
Para crear una actividad personalizada que herede de NativeActivity
OpenVisual Studio 2010.
Seleccione Archivo, Nuevo y, luego, 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 secundario en el proyecto HelloActivity, seleccione Agregar y, luego, 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 NativeActivity al agregar una clase base a la declaración de clase.
class HelloActivity : NativeActivity
Agregue la funcionalidad a la clase agregando un método Execute.
protected override void Execute(NativeActivityContext context) { Console.WriteLine("Hello World!"); }
Invalide el método CacheMetadata y llame al método Add adecuado para que el tiempo de ejecución del flujo de trabajo conozca las variables, los argumentos, los elementos secundarios y los delegados personalizados de la actividad. Para obtener más información, vea la clase NativeActivityMetadata.
Utilice el objeto NativeActivityContext para programar un marcador. Vea Bookmarks para obtener detalles sobre cómo crear, programar y reanudar un marcador.
protected override void Execute(NativeActivityContext context) { // Create a Bookmark and wait for it to be resumed. context.CreateBookmark(BookmarkName.Get(context), new BookmarkCallback(OnResumeBookmark)); }