Compartir a través de


Cómo: Crear una plantilla de actividad personalizada

Este tema es aplicable a Windows Workflow Foundation 4.

Las plantillas de actividad personalizadas se utilizan para personalizar la configuración de actividades, incluidas las actividades compuestas personalizadas, para que los usuarios no tengan que crear cada actividad de forma individual y configurar propiedades y otros valores manualmente. Estas plantillas personalizadas pueden ponerse a disposición de los usuarios en el cuadro de herramientas del Diseñador de flujo de trabajo de Windows o de un diseñador hospedado en otro host, desde el que los usuarios pueden arrastrarlas a la superficie de diseño preconfigurada. El Diseñador de flujo de trabajo incluye buenos ejemplos de estas plantillas: el SendAndReceiveReply Template Designer y el ReceiveAndSendReply Template Designer en la categoría Messaging Activity Designers.

El primer procedimiento de este tema describe cómo crear una plantilla de actividad personalizada para una actividad Delay y el segundo procedimiento describe brevemente cómo ponerla a disposición de los usuarios en un Diseñador de flujo de trabajo para comprobar que la plantilla personalizada funciona.

Las plantillas de actividad personalizadas deben implementar la IActivityTemplateFactory. La interfaz tiene un método Create único con el que puede crear y configurar las instancias de actividad utilizadas en la plantilla.

Para crear una plantilla para la actividad Delay

  1. Inicie Visual Studio 2010.

  2. En el menú Archivo, elija Nuevo y después seleccione Proyecto.

    Aparece el cuadro de diálogo Nuevo proyecto.

  3. En el recuadro Tipos de proyecto, seleccione Flujo de trabajo en los proyectos Visual C# o en las agrupaciones Visual Basic en función del lenguaje preferido.

  4. En el recuadro Plantillas, seleccione Biblioteca de actividades.

  5. En el cuadro Nombre, escriba DelayActivityTemplate.

  6. Acepte los valores predeterminados de los cuadros de texto Ubicación y Nombre de la solución y, a continuación, haga clic en Aceptar.

  7. Haga clic con el botón secundario en el directorio Referencias del proyecto DelayActivityTemplate en el Explorador de soluciones y elija Agregar referencia para abrir el Agregar referencia.

  8. Vaya a la pestaña .NET, seleccione PresentationFramework en la columna Nombre de componente de la izquierda y haga clic en Aceptar para agregar una referencia al archivo PresentationFramework.dll.

  9. Repita este procedimiento para agregar referencias a los archivos System.Activities.Presentation.dll y WindowsBase.dll.

  10. Haga clic con el botón secundario en el proyecto DelayActivityTemplate en el Explorador de soluciones y elija Agregar y a continuación Nuevo elemento para abrir el cuadro de diálogo Agregar nuevo elemento.

  11. Seleccione la plantilla Clase, denomínela MyDelayTemplate y, a continuación, haga clic en Aceptar.

  12. Abra el archivo MyDelayTemplate.cs y agregue las siguientes instrucciones.

    //Namespaces added
    using System.Activities;
    using System.Activities.Statements;
    using System.Activities.Presentation;
    using System.Windows;
    
  13. Implemente la interfaz IActivityTemplateFactory con la clase MyDelayActivity mediante el código siguiente. De esta manera configura el retraso para una duración de 10 segundos.

        public sealed class MyDelayActivity : IActivityTemplateFactory
        {
            public Activity Create(System.Windows.DependencyObject target)
            {
                return new System.Activities.Statements.Delay
                {
                    DisplayName = "DelayActivityTemplate",
                    Duration = new TimeSpan(0, 0, 10)
    
                };
            }
        }
    
  14. Seleccione Generar solución en el menú Generar para generar el archivo DelayActivityTemplate.dll.

Para que la plantilla esté disponible en un Diseñador de flujo de trabajo

  1. Haga clic con el botón secundario en la solución DelayActivityTemplate en el Explorador de soluciones y elija Agregar y a continuación Nuevo proyecto para abrir el cuadro de diálogo Agregar nuevo proyecto.

  2. Seleccione la plantilla Aplicación de consolas de flujo de trabajo, denomínela CustomActivityTemplateApp y, a continuación, haga clic en Aceptar.

  3. Haga clic con el botón secundario en el directorio Referencias del proyecto CustomActivityTemplateApp en el Explorador de soluciones y elija Agregar referencia para abrir el Agregar referencia.

  4. Vaya a la pestaña Proyectos, seleccione DelayActivityTemplate en la columna Nombre del proyecto de la izquierda y haga clic en Aceptar para agregar una referencia al archivo DelayActivityTemplate.dll que creó en el primer procedimiento.

  5. Haga clic con el botón secundario en el proyecto CustomActivityTemplateApp en el Explorador de soluciones y elija Generar para compilar la aplicación.

  6. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto CustomActivityTemplateApp y elija Establecer como proyecto de inicio.

  7. Seleccione Iniciar sin depurar en el menú Depurar y presione cualquier tecla para continuar cuando se pida confirmación en la ventana de cmd.exe.

  8. Abra el archivo Workflow1.xaml y abra el Cuadro de herramientas.

  9. Busque la plantilla MyDelayActivity en la categoría DelayActivityTemplate. Arrástrela a la superficie de diseño. Confirme en la ventana Propiedades que la propiedad Duration se ha establecido en 10 segundos.

Ejemplo

El archivo MyDelayActivity.cs debería contener el siguiente código.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//Namespaces added
using System.Activities;
using System.Activities.Statements;
using System.Activities.Presentation;
using System.Windows;

namespace DelayActivityTemplate
{
    public sealed class MyDelayActivity : IActivityTemplateFactory
    {
        public Activity Create(System.Windows.DependencyObject target)
        {
            return new System.Activities.Statements.Delay
            {
                DisplayName = "DelayActivityTemplate",
                Duration = new TimeSpan(0, 0, 10)

            };
        }
    }
}

Vea también

Referencia

IActivityTemplateFactory

Otros recursos

Personalizar la experiencia de diseño del flujo de trabajo