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:
Ediciones compatibles de Microsoft Windows y SharePoint.Para obtener más información, vea Requisitos para desarrollar soluciones de SharePoint.
Visual Studio.
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
En la barra de menú, elija Archivo, Nuevo, Proyecto para mostrar el cuadro de diálogo de Nuevo proyecto .
Expanda el nodo de SharePoint en *** Visual C# *** o Visual Basicy, a continuación el nodo de *** 2010 *** .
En el panel de Plantillas , elija la plantilla de Proyecto de SharePoint 2010 .
En el cuadro de Nombre , entre en AnnouncementBackup, y elija el botón de Aceptar .
Aparece el Asistente para la personalización de SharePoint.
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.
En Explorador de soluciones, elija el nodo de proyecto y, a continuación, en la barra de menús, elija Proyecto, Agregar nuevo elemento.
En *** Visual C# *** o Visual Basic, expanda el nodo de SharePoint y, a continuación el nodo de *** 2010 *** .
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.
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 .
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
En la barra de menú, elija Proyecto, Agregar nuevo elemento para mostrar el cuadro de diálogo de Agregar nuevo elemento .
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 .
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); } } }
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
Abra el Workflow1 en el diseñador de flujos de trabajo en la Vista de diseño.
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.
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
Elija la tecla F5 para ejecutar el proyecto e implementarlo en SharePoint.
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.
En la parte superior de la página Web de SharePoint, elija el vínculo de *** Busque los flujos de trabajo *** .
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.
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