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.
[!REMARQUE]
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.
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 la barre de menus, sélectionnez Fichier, Nouveau, Projet pour afficher la boîte de dialogue Nouveau projet .
Développez le nœud SharePoint sous Visual C# ou Visual Basic, puis sélectionnez le nœud 2010 .
Dans le volet Modèles , choisissez le modèle Projet SharePoint 2010 .
Dans la zone Nom , entrez Sauvegardeannonces, puis choisissez le bouton OK .
L'Assistant Personnalisation de SharePoint s'affiche.
Dans la page Spécifier le site et le niveau de sécurité pour le débogage , sélectionnez la case d'option Déployer en tant que solution de batterie , puis choisissez le bouton Terminer pour accepter le site de niveau de confiance et valeur par défaut.
Cette étape définit 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 Explorateur de solutions, sélectionnez le nœud de projet, puis, dans le menu, choisissez Projet, Ajouter un nouvel élément.
Sous Visual C# ou Visual Basic, développez le nœud SharePoint , puis sélectionnez le nœud 2010 .
Dans le volet Modèles , choisissez le modèle Flux de travail séquentiel (solution de batterie uniquement) , puis choisissez le bouton Ajouter .
L'Assistant Personnalisation de SharePoint s'affiche.
Dans la page Spécifier le nom du flux de travail pour le débogage , acceptez le nom par défaut (Sauvegardeannonces - Workflow1).Modifiez le type de modèle de flux de travail par Flux de travail de site, puis choisissez le bouton Suivant .
Choisissez le bouton 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
Dans la barre de menus, sélectionnez Projet, Ajouter un nouvel élément pour afficher la boîte de dialogue Ajouter un nouvel élément .
Dans l'arborescence Modèles installés , sélectionnez le nœud Code , puis choisissez le modèle Classe dans la liste des modèles d'élément de projet.Employez le nom par défaut Class1.Choisissez le bouton Ajouter .
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, dans la barre de menus, sélectionnez Générer, Générer la solution.
Class1 s'affiche en tant qu'action personnalisée dans Boîte à outils sur Composants de Sauvegardeannonces tableau.
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 Class1 Boîte à outils afin qu'il apparaisse dans l'activité de onWorkflowActivated1 , ou ouvrez le menu contextuel pour Class1, choisissez Copier, ouvrez le menu contextuel pour la ligne dans l'activité de onWorkflowActivated1 , puis choisissez Coller.
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 uneet 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
Choisissez la touche F5 pour exécuter le projet et le déployer sur SharePoint.
Dans la barre de lancement rapide, cliquez sur le lien Listes pour afficher toutes les listes disponibles dans 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 lien Flux de travail d’un site .
Sous le début un nouveauté de 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.
Dans la barre de lancement rapide, cliquez sur le lien annonces de sauvegarde .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