Tutorial: Creación de una actividad de flujo de trabajo de sitio personalizada

En este tutorial se muestra cómo crear una actividad personalizada para un flujo de trabajo de nivel de sitio mediante Visual Studio. (Los flujos de trabajo de nivel de sitio se aplican a todo el sitio, no solo a una lista en el sitio). La actividad personalizada crea una lista Anuncios de copia de seguridad y, después, copia el contenido de esta lista en ella.

En este tutorial se muestran las siguientes tareas:

  • Creación de un flujo de trabajo de nivel de sitio

  • Creación de una actividad de flujo de trabajo personalizada

  • Creación y eliminación de una lista de SharePoint

  • Copia de elementos de una lista a otra

  • Muestra de una lista en la barra Inicio rápido

    Nota:

    Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Requisitos previos

Necesitará los componentes siguientes para completar este tutorial:

  • Ediciones compatibles de Microsoft Windows y SharePoint.

  • Visual Studio.

Creación de un proyecto de actividad personalizada de flujo de trabajo de sitio

En primer lugar, cree un proyecto para almacenar y probar la actividad de flujo de trabajo personalizada.

Creación de un proyecto de actividad personalizada de flujo de trabajo de sitio

  1. En la barra de menús, elija Archivo>Nuevo>Proyecto para mostrar el cuadro de diálogo Nuevo proyecto.

  2. Expanda el nodo SharePoint en Visual C# o Visual Basic y, a continuación, seleccione el nodo 2010.

  3. En el panel Plantillas, seleccione la plantilla Proyecto de SharePoint 2010.

  4. En el cuadro Nombre, escriba AnnouncementBackupy, después, elija el botón Aceptar.

    Aparece el Asistente para la personalización de SharePoint.

  5. En la página Especifique el sitio y el nivel de seguridad de la depuración, elija el botón de opción Implementar como solución de granja de servidores y, después, elija el botón Finalizar para aceptar el nivel de confianza y el sitio predeterminado.

    Este paso establece el nivel de confianza de la solución como solución de granja de servidores, la única opción disponible para los proyectos de flujo de trabajo.

  6. En Explorador de soluciones, elija el nodo del proyecto y, después, en la barra de menús, elija Proyecto>Agregar nuevo elemento.

  7. En Visual C# o Visual Basic, expanda el nodo SharePoint y, después, seleccione el nodo 2010.

  8. En el panel Plantillas, seleccione la plantilla Flujo de trabajo secuencial (solución de granja de servidores únicamente) y, después, el botón Agregar.

    Aparece el Asistente para la personalización de SharePoint.

  9. En la página Especifique el nombre del flujo de trabajo de depuración, acepte el nombre predeterminado (AnnouncementBackup - Workflow1). Cambie el tipo de plantilla de flujo de trabajo a Flujo de trabajo de sitio y, después, elija el botón Siguiente.

  10. Elija el botón Finalizar para aceptar la configuración predeterminada restante.

Incorporación de una clase de actividad de flujo de trabajo personalizada

A continuación, agregue una clase al proyecto para que contenga el código de la actividad de flujo de trabajo personalizada.

Incorporación de una clase de actividad de flujo de trabajo personalizada

  1. En la barra de menús, elija Proyecto>Agregar nuevo elemento para mostrar el cuadro de diálogo Agregar nuevo elemento.

  2. En la vista de árbol Plantillas instaladas, elija el nodo Código y, después, elija la plantilla Clase en la lista de plantillas de elemento del proyecto. Use el nombre predeterminado Class1. Elija el botón Agregar.

  3. Reemplace todo el código de Class1 por lo siguiente:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.SharePoint;
    
    namespace AnnouncementBackup
    {
        // This custom activity will back up all of the announcements in 
        // the Announcements list on the SharePoint site.
        public class Class1 : System.Workflow.ComponentModel.Activity
            {
            public Class1()
            { }
            
            // Triggers when the activity is executed.
            protected override System.Workflow.ComponentModel.ActivityExecutionStatus Execute(System.Workflow.ComponentModel.ActivityExecutionContext executionContext)
            {
                try
                {
                    // Get a reference to the SharePoint site.
                    SPSite site = new SPSite("http://" + System.Environment.MachineName);
                    SPWeb web = site.OpenWeb("/");
    
                    // Reference the original Announcements list.
                    SPList aList = web.GetList("/Lists/Announcements");
    
                    // If the Announcements Backup list already exists, delete it.
                    try
                    {
                        SPList bList = web.GetList("/Lists/Announcements Backup");
                        bList.Delete();
                    }
                    catch
                    { }
    
                    // Create a new backup Announcements list and reference it.
                    Guid newAnnID = web.Lists.Add("Announcements Backup", "A backup Announcements list.", SPListTemplateType.Announcements);
                    SPList bakList = web.Lists[newAnnID];
    
                    // Copy announcements from original to backup Announcements list.
                    foreach (SPListItem item in aList.Items)
                    {
                        SPListItem newAnnItem = bakList.Items.Add();
                        foreach (SPField field in aList.Fields)
                        {
                            if (!field.ReadOnlyField)
                                newAnnItem[field.Id] = item[field.Id];
                        }
                        newAnnItem.Update();
                    }
    
                    // Put the Backup Announcements list on the QuickLaunch bar.
                    bakList.OnQuickLaunch = true;
                    bakList.Update();
    
                }
    
                catch (Exception errx)
                {
                    System.Diagnostics.Debug.WriteLine("Error: " + errx.ToString());
                }
                
                return base.Execute(executionContext);
            }
    
    
        }
    }
    
  4. Guarde el proyecto y, después, en la barra de menús, elija Compilar>Compilar solución.

    Class1 aparece como una acción personalizada en el Cuadro de herramientas en la pestaña AnnouncementBackup Components (Componentes de AnnouncementBackup).

Incorporación de la actividad personalizada al flujo de trabajo del sitio

A continuación, agregue una actividad al flujo de trabajo para que contenga el código personalizado.

Incorporación de una actividad personalizada al flujo de trabajo del sitio

  1. Abra Workflow1 en el diseñador de flujo de trabajo en la vista de diseño.

  2. Arrastre Class1 desde el Cuadro de herramientas para que aparezca en la actividad onWorkflowActivated1, o bien abra el menú contextual de Class1, elija Copiar, abra el menú contextual de la línea situada debajo de la actividad onWorkflowActivated1 y, después, elija Pegar.

  3. Guarde el proyecto.

Prueba de la actividad personalizada del flujo de trabajo del sitio

A continuación, ejecute el proyecto e inicie el flujo de trabajo del sitio. La actividad personalizada crea una lista Anuncios de copia de seguridad y copia el contenido de esta lista actual en ella. El código también comprueba si ya existe una lista de copia de seguridad antes de crear una. Si ya existe una lista de copia de seguridad, se elimina. El código también agrega un vínculo a la nueva lista de la barra Inicio rápido del sitio de SharePoint.

Prueba de la actividad personalizada del flujo de trabajo del sitio

  1. Elija la tecla F5 para ejecutar el proyecto e implementarlo en SharePoint.

  2. En la barra Inicio rápido, elija el vínculo Listas para mostrar todas las listas disponibles en el sitio de SharePoint. Observe que solo hay una lista para los anuncios denominados Anuncios.

  3. En la parte superior de la página web de SharePoint, elija el vínculo Flujos de trabajo del sitio.

  4. En la sección Iniciar un nuevo flujo de trabajo, elija el vínculo AnnouncementBackup - Workflow1. Esta acción inicia el flujo de trabajo del sitio y ejecuta el código en la acción personalizada.

  5. En la barra Inicio rápido, elija el vínculo Copia de seguridad de anuncios. Tenga en cuenta que todos los anuncios incluidos en la lista Anuncios se han copiado en esta nueva lista.