Compartir a través de


Tutorial: Crear una actividad de flujo de trabajo personalizada

En este tutorial se muestra cómo crear una actividad personalizada para un flujo de trabajo de nivel de sitio con Visual Studio.(Los flujos de trabajo de nivel de sitio se aplican al sitio entero, no solo a una lista del sitio.) La actividad personalizada crea una lista Anuncios auxiliar y copia el contenido de la lista Anuncios en ella.

En este tutorial se muestran las siguientes tareas:

  • Crear un flujo de trabajo de nivel de sitio.

  • Crear una actividad de flujo de trabajo personalizada.

  • Crear y eliminar una lista de SharePoint.

  • Copiar los elementos de una lista en otra.

  • Mostrar una lista en la barra de inicio rápido.

[!NOTA]

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. 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 Valores de configuración de Visual Studio.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

Crear un proyecto de actividad personalizada de flujo de trabajo del sitio

Primero, cree un proyecto para hospedar y probar la actividad de flujo de trabajo personalizada.

Para crear un proyecto de actividad personalizada de flujo de trabajo del sitio

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

  2. Expanda el nodo de SharePoint en *** Visual C# *** o Visual Basicy, a continuación el nodo de *** 2010 *** .

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

  4. En el cuadro de Nombre , entre en AnnouncementBackup, y elija el botón de Aceptar .

    Aparece el Asistente para la personalización de SharePoint.

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

    Este paso también establece el nivel de confianza para la solución como una 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 de proyecto y, a continuación, en la barra de menús, elija Proyecto, Agregar nuevo elemento.

  7. En *** Visual C# *** o Visual Basic, expanda el nodo de SharePoint y, a continuación el nodo de *** 2010 *** .

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

    Aparece el Asistente para la personalización de SharePoint.

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

  10. Elija el botón de Finalizar para aceptar los valores predeterminados restantes.

Agregar una clase de actividad de flujo de trabajo personalizada

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

Para agregar una clase de actividad de flujo de trabajo personalizada

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

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

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

    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Text
    Imports 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
            Inherits System.Workflow.ComponentModel.Activity
            Public Sub New()
                MyBase.New()
            End Sub
    
            ' Triggers when the activity is executed.
            Protected Overrides Function Execute(ByVal executionContext As System.Workflow.ComponentModel.ActivityExecutionContext) As System.Workflow.ComponentModel.ActivityExecutionStatus
                Try
                    ' Get a reference to the SharePoint site.
                    Dim site As SPSite = New SPSite(("http://" + System.Environment.MachineName))
                    Dim web As SPWeb = site.OpenWeb("/")
                    ' Reference the original Announcements list.
                    Dim aList As SPList = web.GetList("/Lists/Announcements")
                    ' If the Announcements Backup list already exists, delete it.
                    Try
                        Dim bList As SPList = web.GetList("/Lists/Announcements Backup")
                        bList.Delete()
                    Catch
                    End Try
                    ' Create a new backup Announcements list and reference it.
                    Dim newAnnID As Guid = web.Lists.Add("Announcements Backup", "A backup Announcements list.", SPListTemplateType.Announcements)
                    Dim bakList As SPList = web.Lists(newAnnID)
                    ' Copy announcements from original to backup Announcements list.
                    For Each item As SPListItem In aList.Items
                        Dim newAnnItem As SPListItem = bakList.Items.Add
                        For Each field As SPField In aList.Fields
                            If Not field.ReadOnlyField Then
                                newAnnItem(field.Id) = item(field.Id)
                            End If
                        Next
                        newAnnItem.Update()
                    Next
                    ' Put the Backup Announcements list on the QuickLaunch bar.
                    bakList.OnQuickLaunch = True
                    bakList.Update()
                Catch errx As Exception
                    System.Diagnostics.Debug.WriteLine(("Error: " + errx.ToString))
                End Try
                Return MyBase.Execute(executionContext)
            End Function
        End Class
    End Namespace
    
    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, a continuación, en la barra de menú, elija Compilación, Compilar solución.

    Class1 aparece como una acción personalizada en Cuadro de herramientas en la pestaña de *** componentes de AnnouncementBackup *** .

Agregar 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.

Para agregar la actividad personalizada al flujo de trabajo de sitio

  1. Abra el Workflow1 en el diseñador de flujos de trabajo en la Vista de diseño.

  2. Arrastre Class1 de Cuadro de herramientas para que aparezca bajo la actividad de onWorkflowActivated1 , o abra el menú contextual para Class1, elija Copiar, abra el menú contextual para la línea bajo la actividad de onWorkflowActivated1 , y elija Pegar.

  3. Guarde el proyecto.

Probar la actividad personalizada de flujo de trabajo de sitio

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

Para probar la actividad personalizada de flujo de trabajo del sitio

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

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

  3. En la parte superior de la página Web de SharePoint, elija el vínculo de *** Busque los flujos de trabajo *** .

  4. Bajo la sección iniciar un de nuevo flujo de trabajo, elija el vínculo de *** AnnouncementBackup – Workflow1 *** .Esto inicia el flujo de trabajo del sitio y ejecuta el código de la acción personalizada.

  5. En la barra de inicio rápido, elija el vínculo de *** avisos auxiliares *** .Observe que todos los anuncios que contiene la lista Anuncios se han copiado en esta nueva lista.

Vea también

Tareas

Cómo: Crear un receptor de eventos

Otros recursos

Desarrollar soluciones de SharePoint