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 workflow au niveau du site à l’aide de Visual Studio. (Les workflows au niveau du site s’appliquent à l’ensemble du site, pas seulement à une liste sur le site.) L’activité personnalisée crée une liste d’annonces de sauvegarde, puis y copie le contenu de la liste Announcements.

Cette procédure pas à pas décrit les tâches suivantes :

  • Création d’un workflow au niveau du site.

  • Création d’une activité de workflow personnalisée.

  • Création et suppression d’une liste SharePoint.

  • Copie d’éléments d’une liste vers une autre.

  • Affichage d’une liste dans la barre Lancement rapide.

    Notes

    Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués 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 Personnaliser l’IDE.

Prérequis

Vous devez disposer des éléments suivants pour exécuter cette procédure pas à pas :

  • Éditions prises en charge de Microsoft Windows et SharePoint.

  • Visual Studio.

Créer un projet d’activité personnalisée de workflow de site

Tout d’abord, créez un projet pour contenir et tester l’activité de workflow personnalisée.

Pour créer un projet d’activité personnalisée de workflow de site

  1. Dans la barre de menus, choisissez Fichier>Nouveau>Projet pour afficher la boîte de dialogue Nouveau projet.

  2. Développez le nœud SharePoint sous Visual C# ou Visual Basic, puis sélectionnez le nœud 2010.

  3. Dans le volet Modèles, sélectionnez le modèle Projet SharePoint 2010.

  4. Dans la zone Nom, entrez AnnouncementBackup, puis choisissez le bouton OK.

    L'Assistant Personnalisation de SharePoint apparaît.

  5. Dans la page Spécifier le site et le niveau de sécurité pour le débogage, choisissez le bouton d’option Déployer en tant que solution de batterie de serveurs, puis le bouton Terminer pour accepter le niveau de confiance et le site par défaut.

    Cette étape définit le niveau de confiance de la solution en tant que solution de batterie de serveurs, la seule option disponible pour les projets de workflows.

  6. Dans l'Explorateur de solutions, choisissez le nœud de projet, puis, dans la barre de menus, choisissez Projet>Ajouter un nouvel élément.

  7. Sous Visual C# ou Visual Basic, développez le nœud SharePoint, puis sélectionnez le nœud 2010.

  8. Dans le volet Modèles, choisissez le modèle Flux de travail séquentiel (solution de batterie de serveurs uniquement), puis cliquez sur le bouton Ajouter.

    L'Assistant Personnalisation de SharePoint apparaît.

  9. Dans la page Spécifier le nom du workflow pour le débogage, acceptez le nom par défaut (AnnouncementBackup - Workflow1). Remplacez le type de modèle de workflow par Workflow de site, puis choisissez le bouton Suivant.

  10. Choisissez le bouton Terminer pour accepter les paramètres par défaut restants.

Ajouter une classe d’activité de workflow personnalisée

Ensuite, ajoutez une classe au projet pour contenir le code de l’activité de workflow personnalisée.

Pour ajouter une classe d’activité de workflow personnalisée

  1. Dans la barre de menus, choisissez Projet>Ajouter un nouvel élément pour afficher la boîte de dialogue Ajouter un nouvel élément.

  2. Dans l’arborescence Modèles installés, choisissez le nœud Code, puis le modèle Classe dans la liste des modèles d’élément de projet. Utilisez le nom par défaut Class1. Choisissez le bouton Ajouter.

  3. Remplacez tout le code dans Class1 par ce qui suit :

    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. Enregistrez le projet, puis, dans la barre de menus, choisissez Générer>Générer la solution.

    Class1 apparaît sous la forme d’une action personnalisée dans la Boîte à outils sous l’onglet Composants AnnouncementBackup.

Ajouter l’activité personnalisée au workflow de site

Ensuite, ajoutez une activité au workflow pour contenir le code personnalisé.

Pour ajouter une activité personnalisée au workflow de site

  1. Ouvrez Workflow1 dans le Concepteur de flux de travail en mode Création.

  2. Faites glisser Class1 à partir de la Boîte à outils pour qu’elle apparaisse sous l’activité onWorkflowActivated1, ou ouvrez le menu contextuel de Class1, choisissez Copier, ouvrez le menu contextuel de la ligne sous l’activité onWorkflowActivated1, puis choisissez Coller.

  3. Enregistrez le projet.

Tester l’activité personnalisée du workflow de site

Ensuite, exécutez le projet et démarrez le workflow de site. L’activité personnalisée crée une liste d’annonces de sauvegarde et y copie le contenu de la liste Announcements. Le code vérifie également si une liste de sauvegarde existe déjà avant d’en créer une. Si une liste de sauvegarde existe déjà, elle est supprimée. Le code ajoute également un lien à la nouvelle liste dans la barre Lancement rapide du site SharePoint.

Pour tester l’activité personnalisée du workflow de site

  1. Choisissez la clé F5 pour exécuter le projet et le déployer sur SharePoint.

  2. Dans la barre QuickLaunch, choisissez le lien Listes pour afficher toutes les listes disponibles dans le site SharePoint. Notez qu’il n’existe qu’une seule liste pour les annonces, nommée Announcements.

  3. En haut de la page web SharePoint, choisissez le lien Workflows de site.

  4. Dans la section Démarrer un nouveau workflow, choisissez le lien AnnouncementBackup - Workflow1. Cela démarre le workflow de site et exécute le code dans l’action personnalisée.

  5. Dans la barre de lancement rapide, choisissez le lien Sauvegarde des annonces. Notez que toutes les annonces contenues dans la liste Announcements ont été copiées dans cette nouvelle liste.