Cómo: Crear una actividad
Este tema es aplicable a Windows Workflow Foundation 4.
Las actividades son la unidad básica de comportamiento en WF. La lógica de ejecución de una actividad se puede implementar en código administrado o mediante otras actividades. En este tema se muestra cómo crear una actividad simple usando el código para implementar la lógica de ejecución, así como una actividad cuya implementación se define mediante otras actividades. Estas actividades se usan en los siguientes temas, Cómo: Crear flujos de trabajo y Cómo: Ejecutar un flujo de trabajo.
Para crear el proyecto de biblioteca de actividades
Abra Visual Studio 2010 y elija Nuevo, Proyecto en el menú Archivo.
Expanda el nodo Otros tipos de proyectos en la lista Plantillas instaladas y seleccione Soluciones de Visual Studio.
Seleccione Solución en blanco en la lista Soluciones de Visual Studio. Asegúrese de que se haya seleccionado .NET Framework 4 en la lista desplegable correspondiente a la versión de .NET Framework. Escriba GettingStartedTutorial en el cuadro Nombre y, a continuación, haga clic en Aceptar.
Haga clic con el botón secundario en GettingStartedTutorial en el Explorador de soluciones y elija Agregar, Nuevo proyecto.
Sugerencia: Si la ventana Explorador de soluciones no se muestra, seleccione Explorador de soluciones en el menú Ver. En la lista Plantillas instaladas, seleccione Visual C#, Flujo de trabajo o Visual Basic, Flujo de trabajo. Asegúrese de que se haya seleccionado .NET Framework 4 en la lista desplegable correspondiente a la versión de .NET Framework. Seleccione Biblioteca de actividad en la lista Flujo de trabajo. Mantenga la configuración predeterminada y, a continuación, haga clic en Aceptar.
Nota: Dependiendo del lenguaje de programación que se configure como lenguaje primario en Visual Studio, el nodo Visual C# o Visual Basic puede estar bajo el nodo Otros lenguajes en la lista Plantillas instaladas. Haga clic con el botón secundario en Activity1.xaml en el Explorador de soluciones y seleccione Eliminar. Haga clic en Aceptar para confirmar.
Para crear la actividad ReadInt
Elija Agregar nuevo elemento en el menú Proyecto.
En la lista Plantillas instaladas, seleccione Flujo de trabajo. Seleccione Actividad de código en la lista Flujo de trabajo.
Escriba ReadInt en el cuadro Nombre y, a continuación, haga clic en Agregar.
Reemplace la definición de
ReadInt
existente con la siguiente.Public NotInheritable Class ReadInt Inherits NativeActivity(Of Integer) <RequiredArgument()> Property BookmarkName() As InArgument(Of String) Protected Overrides Sub Execute(ByVal context As NativeActivityContext) Dim name As String name = BookmarkName.Get(context) If name = String.Empty Then Throw New ArgumentException("BookmarkName cannot be an Empty string.", "BookmarkName") End If context.CreateBookmark(name, New BookmarkCallback(AddressOf OnReadComplete)) End Sub ' NativeActivity derived activities that do asynchronous operations by calling ' one of the CreateBookmark overloads defined on System.Activities.NativeActivityContext ' must override the CanInduceIdle property and return True. Protected Overrides ReadOnly Property CanInduceIdle As Boolean Get Return True End Get End Property Sub OnReadComplete(ByVal context As NativeActivityContext, ByVal bookmark As Bookmark, ByVal state As Object) Result.Set(context, Convert.ToInt32(state)) End Sub End Class
public sealed class ReadInt : NativeActivity<int> { [RequiredArgument] public InArgument<string> BookmarkName { get; set; } protected override void Execute(NativeActivityContext context) { string name = BookmarkName.Get(context); if (name == string.Empty) { throw new ArgumentException("BookmarkName cannot be an Empty string.", "BookmarkName"); } context.CreateBookmark(name, new BookmarkCallback(OnReadComplete)); } // NativeActivity derived activities that do asynchronous operations by calling // one of the CreateBookmark overloads defined on System.Activities.NativeActivityContext // must override the CanInduceIdle property and return true. protected override bool CanInduceIdle { get { return true; } } void OnReadComplete(NativeActivityContext context, Bookmark bookmark, object state) { this.Result.Set(context, Convert.ToInt32(state)); } }
Nota: La actividad ReadInt
deriva de NativeActivity en lugar de CodeActivity, que es el valor predeterminado para un proyecto de actividad basado en la actividad de código. Se puede usar CodeActivity si la actividad proporciona un resultado único, que se expone a través del argumento Result, aunque CodeActivity no admite el uso de marcadores, de modo que se usa NativeActivity.
Para crear la actividad Prompt
Presione F6 para compilar el proyecto. De esta forma se habilita la actividad
ReadInt
en este proyecto que se va a usar para compilar la actividad personalizada desde este paso.Elija Agregar nuevo elemento en el menú Proyecto.
En la lista Plantillas instaladas, seleccione Flujo de trabajo. Seleccione Actividad en la lista Flujo de trabajo.
Escriba Prompt en el cuadro Nombre y, a continuación, haga clic en Agregar.
Haga doble clic en Prompt.xaml en el Explorador de soluciones para que se muestre en el diseñador, si aún no aparece.
Haga clic en el botón Argumentos, situado en la parte inferior izquierda del diseñador de actividad, para mostrar el recuadro Argumentos.
Haga clic en Crear argumento.
Escriba BookmarkName en el cuadro Nombre, seleccione Entrada en la lista desplegable Dirección, elija Cadena en la lista desplegable Tipo de argumento y después presione ENTRAR para guardar el argumento.
Haga clic en Crear argumento.
Escriba Result en el cuadro Nombre que se encuentra debajo del argumento
BookmarkName
recién agregado, seleccione Salida en la lista desplegable Dirección, seleccione Int32 en la lista desplegable Tipo de argumento y, a continuación, presione ENTRAR.Haga clic en Crear argumento.
Escriba Text en el cuadro Nombre, seleccione Entrada en la lista desplegable Dirección, seleccione Cadena en la lista desplegable Tipo de argumento y, a continuación, presione Entrar para guardar el argumento.
Estos tres argumentos se enlazan a los argumentos correspondientes de las actividades WriteLine y
ReadInt
que se agregan a la actividadPrompt
en los siguientes pasos.Haga clic en el botón Argumentos en el lado inferior izquierdo del diseñador de actividad para cerrar el recuadro Argumentos.
Arrastre una actividad Sequence de la sección Flujo de control del cuadro de herramientas y colóquela en el diseñador de actividad.
Sugerencia: Si la ventana Cuadro de herramientas no se muestra, seleccione Cuadro de herramientas en el menú Ver. Arrastre una actividad WriteLine de la sección Primitivas del cuadro de herramientas y colóquela en la actividad Sequence.
Enlace el argumento Text de la actividad WriteLine al argumento Text de la actividad Prompt escribiendo Text en el cuadro Escriba una expresión de VB en la ventana Propiedades y, a continuación, presione dos veces la tecla TAB para descartar la ventana de la lista de miembros de IntelliSense y guarde el valor de propiedad moviendo la selección fuera de la propiedad. Esta propiedad también se puede establecer escribiendo Text en el cuadro Escriba una expresión de VB en la propia actividad.
Sugerencia: Si no se muestra la Ventana Propiedades, seleccione Ventana Propiedades en el menú Ver. Arrastre una actividad ReadInt de la sección ActivityLibrary1 del cuadro de herramientas y colóquela en la actividad Sequence para que siga la actividad WriteLine.
Enlace el argumento BookmarkName de la actividad ReadInt al argumento BookmarkName de la actividad Prompt escribiendo BookmarkName en el cuadro Escriba una expresión de VB a la derecha del argumento BookmarkName en la Ventana Propiedades y, a continuación, presione dos veces la tecla TAB para cerrar la ventana de lista de miembros de IntelliSense y guarde la propiedad.
Enlace el argumento Result de la actividad ReadInt al argumento Result de la actividad Prompt escribiendo Result en el cuadro Escriba una expresión de VB a la derecha del argumento Result en la Ventana Propiedades y, a continuación, presione la tecla TAB dos veces.
Presione F6 para compilar la solución.
Vea también
Tareas
Referencia
Conceptos
Diseñar e implementar actividades personalizadas