Procédures pas à pas : création d'une activité de workflow de site personnalisée
Cette procédure pas à pas montre comment créer une activité personnalisée pour un flux de travail au niveau du site à l'aide de Visual Studio. Les flux de travail au niveau du site s'appliquent au site entier et pas uniquement à une liste du site. L'activité personnalisée crée une liste Annonces de sauvegarde, puis y copie le contenu de la liste Annonces.
Cette procédure pas à pas présente les tâches suivantes :
Création d'un flux de travail au niveau du site.
Création d'une activité de flux de travail personnalisée.
Création et suppression d'une liste SharePoint.
Copie des éléments d'une liste à une autre.
Affichage d'une liste dans la barre d'outils Lancement rapide.
Notes
Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.
Composants requis
Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :
Éditions de Microsoft Windows et de SharePoint prises en charge. Pour plus d'informations, consultez Configuration requise pour développer des solutions SharePoint.
Visual Studio 2010.
Création d'un projet d'activité de flux de travail personnalisée au niveau du site
Commencez par créer le projet réservé au stockage et au test de l'activité de flux de travail personnalisée.
Pour créer un projet d'activité de flux de travail personnalisée au niveau du site
Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Nouveau projet pour ouvrir la boîte de dialogue Nouveau projet.
Développez le nœud SharePoint sous Visual C# ou Visual Basic, puis cliquez sur 2010.
Dans le volet Modèles, sélectionnez Flux de travail séquentiel.
Dans la zone Nom, tapez SauvegardeAnnonces, puis cliquez sur OK.
L'Assistant Personnalisation de SharePoint s'affiche.
Dans la page Quel site local voulez-vous utiliser pour le débogage, cliquez sur Suivant pour accepter le site par défaut.
Cette étape définit également le niveau de confiance de la solution en considérant qu'il s'agit d'une solution de la batterie, la seule option disponible pour les projets de flux de travail.
Dans la page Spécifier le nom du flux de travail pour le débogage, acceptez le nom proposé par défaut (SauvegardeAnnonces - Workflow1). Remplacez le type de modèle de flux de travail par Flux de travail de site, puis cliquez sur Suivant.
Cliquez sur Terminer pour accepter les paramètres par défaut restants.
Ajout d'une classe d'activité de flux de travail personnalisée
Ajoutez ensuite une classe au projet afin d'y enregistrer le code de l'activité de flux de travail personnalisée.
Pour ajouter une classe d'activité de flux de travail personnalisée
Cliquez sur Ajouter un nouvel élément dans le menu Projet pour afficher la boîte de dialogue Ajouter un nouvel élément.
Dans l'arborescence Modèles installés, cliquez sur le nœud Code, puis sur Classe dans la liste des modèles d'élément de projet. Employez le nom par défaut Class1.
Remplacez l'intégralité du code dans Class1 par le code suivant :
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); } } }
Enregistrez le projet, puis cliquez sur Générer la solution dans le menu Générer.
Class1 s'affiche en tant qu'action personnalisée dans la Boîte à outils sous l'onglet Flux de travail SharePoint de la Boîte à outils.
Ajout de l'activité personnalisée au flux de travail de site
Ajoutez, à présent, une activité au flux de travail afin d'y inclure le code personnalisé.
Pour ajouter une activité personnalisée au flux de travail de site
Ouvrez Workflow1 dans le Concepteur de flux de travail en mode Design.
Faites glisser la classe Class1 de la Boîte à outils jusqu'à l'activité onWorkflowActivated1.
Enregistrez le projet.
Test de l'activité de flux de travail personnalisée au niveau du site
Exécutez le projet et démarrez le flux de travail de site. L'activité personnalisée crée une liste Annonces de sauvegarde, puis y copie le contenu de la liste Annonces actuelle. Le code vérifie, au préalable, s'il existe déjà une liste de sauvegarde avant d'en créer une et la supprime le cas échéant. Le code ajoute également un lien à la nouvelle liste dans la barre de lancement rapide du site SharePoint.
Pour tester l'activité de flux de travail personnalisée au niveau du site
Appuyez sur F5 pour exécuter le projet et le déployer sur SharePoint.
Cliquez sur Listes dans la barre de lancement rapide pour afficher toutes les listes disponibles sur le site SharePoint. Vous pouvez remarquer qu'il existe une seule liste pour les annonces appelée Annonces.
En haut de la page Web SharePoint, cliquez sur le bouton Actions du site, puis cliquez sur Flux de travail d'un site.
Dans la section Démarrer un nouveau flux de travail, cliquez sur le lien SauvegardeAnnonces - Workflow1 afin de lancer le flux de travail de site et d'exécuter le code de l'action personnalisée.
Cliquez sur le lien appelé SauvegardeAnnonces dans la barre de lancement rapide. Notez que toutes les annonces figurant dans la liste Annonces ont été copiées dans cette nouvelle liste.
Voir aussi
Tâches
Comment : créer un récepteur d'événements