Partager via


Moteur d’approvisionnement PnP et bibliothèque principale

Le moteur d’approvisionnement Plug and Play est au cœur de l’infrastructure d’approvisionnement et s’appuie sur la bibliothèque OfficeDevPnP.Core. Le moteur d’approvisionnement fait partie de la bibliothèque principale et tire parti des extensions de celle-ci dans le cadre de l’implémentation de tâches d’approvisionnement.

Remarque

L’infrastructure d’approvisionnement PnP & moteur d’approvisionnement PnP sont des solutions open source avec une communauté active qui le prend en charge. Il n’existe pas de contrat SLA Microsoft pour le support technique relatif à cet outil open source.

Constituée de méthodes d’extension sur le modèle objet CSOM/REST SharePoint, la bibliothèque principale permet l’exécution de tâches d’approvisionnement, telles que l’énumération et l’obtention de modèles d’approvisionnement, ainsi que le stockage puis l’application de modèles à des sites nouveaux et existants. Elle permet également d’automatiser des tâches d’approvisionnement et d’introduire une logique codée dans vos routines d’approvisionnement.

Remarque

Pour voir la procédure pas à pas de création, de conservation et d’application d’un modèle d’approvisionnement, regardez la vidéo sur la prise en main du moteur d’approvisionnement PnP.

Moteur d’approvisionnement PnP

Le moteur d’approvisionnement PnP est l’implémentation structurée de classes dans la bibliothèque principale pour accomplir et automatiser des tâches d’approvisionnement à distance. Dans le nouveau paysage Microsoft qui met en avant le modèle de complément SharePoint, les solutions d’approvisionnement pour SharePoint Online, SharePoint et Office 365 utilisent désormais le modèle objet côté client (CSOM) et l’infrastructure d’approvisionnement pour approvisionner des artefacts de site.

Le moteur d’approvisionnement PnP vous permet de modéliser la conception des colonnes de site, des types de contenus, des définitions de liste, des présentations composées et des pages. Vous pouvez concevoir ces fonctionnalités, et bien plus encore, en pointant vers des fonctionnalités de conception de site existantes, en façonnant la conception ou en combinant les deux méthodes. Vous pouvez éventuellement ensuite conserver la conception en tant que modèle d’approvisionnement que vous pouvez enregistrer et réutiliser.

Vous pouvez utiliser l’une des deux approches pour extraire votre conception de site en tant que modèle d’approvisionnement. Utilisez des scripts Windows PowerShell (PnP.PowerShell) ou du code CSOM/REST qui implémente des méthodes d’extension fournies par la bibliothèque principale (OfficeDevPnP.Core).

Utilisation de scripts Windows PowerShell pour extraire un modèle d’approvisionnement

Pour utiliser des scripts Windows PowerShell avec le moteur d’approvisionnement, vous devez commencer par télécharger et installer les cmdlets PnP PowerShell. Tout ce dont vous avez besoin pour exécuter Windows PowerShell, y compris les instructions de téléchargement et d’installation, ainsi que la documentation sur les commandes Windows PowerShell, figure dans le référentiel PnP PowerShell Commands sur GitHub.

Remarque

Le référentiel PnP PowerShell Commands contient quatre versions : une pour SharePoint 2013, une pour SharePoint 2016, une autre pour SharePoint 2019 et encore une pour SharePoint Online.

Remarque

PnP PowerShell est une solution open source pour laquelle un support est assuré par la communauté active. Il n’existe pas de contrat SLA Microsoft pour le support technique relatif à cet outil open source.

La méthode recommandée pour installer la cmdlet consiste à utiliser la galerie PowerShell :

Install-Module -Name PnP.PowerShell

Si vous voulez installer une version locale de SharePoint, remplacez « online » par la version correspondante de SharePoint.

Voici les liens vers les versions les plus récentes :

Utilisation de code CSOM pour extraire un modèle d’approvisionnement

Pour utiliser du code CSOM/REST afin d’extraire un modèle d’approvisionnement, vous créez simplement un projet de développement à l’aide de Visual Studio ou d’un autre environnement de développement. Créez n’importe quel type de projet, par exemple une console ou une application Windows, ou un complément SharePoint. Après avoir créé un projet de développement, vous devez installer la bibliothèque principale, disponible sous forme de package NuGet.

Remarque

Des instructions pour localiser et installer le package NuGet de la bibliothèque principale, ainsi qu’une procédure pas à pas pour un exemple d’application console d’approvisionnement à distance sont disponibles dans l’exemple d’application console d’approvisionnement. Notez que la bibliothèque principale est disponible en deux versions : l’une cible SharePoint Online et l’autre SharePoint en local.

Si des instructions détaillées sur l’utilisation du modèle CSOM figurent dans l’exemple d’application console d’approvisionnement, son aperçu général ressemble à ceci :

  1. Créez une connexion vers SharePoint Online.

  2. Créer une instance ClientContext et récupérer une référence à un objet Web.

  3. Utiliser la méthode d’extension de la bibliothèque principale, GetProvisioningTemplate, pour extraire un objet ProvisioningTemplate.

  4. Enregistrer l’instance de modèle d’approvisionnement dans un emplacement de fichier de votre choix à l’aide d’un fournisseur de modèle et d’un formateur de sérialisation.

Remarque

Les objets fournisseur de modèle et formateur de sérialisation pouvant être personnalisés, vous pouvez implémenter tout format d’espace de stockage persistant et de sérialisation de votre choix. Le moteur d’approvisionnement PnP prêt à l’emploi prend en charge le système de fichiers, SharePoint et les fournisseurs de modèle de Stockage Blob Azure. Il prend également en charge les formateurs de sérialisation XML et JSON.

Pour voir un exemple de sortie de sérialisation XML et en savoir plus sur le schéma de sérialisation XML, voir l’article Schéma d’approvisionnement PnP. Vous pouvez accéder au schéma et à sa documentation sur GitHub : SharePoint/PnP-Provisioning-Schema. La vidéo Channel 9 sur le schéma de moteur d’approvisionnement PnP présente et décrit le schéma.

Il est cependant important de noter que le moteur d’approvisionnement prend en charge un modèle de domaine indépendant du format de sérialisation. En fait, le moteur d’approvisionnement est totalement dissocié de tout format de sérialisation. Il vous appartient de définir manuellement l’instance ProvisioningTemplate.

Pointez sur un site modèle ou composez un document XML qui valide par rapport au schéma d’approvisionnement PnP, ou écrivez du code .NET et construisez la hiérarchie des objets. Vous pouvez même combiner ces approches. Vous pouvez également concevoir le modèle d’approvisionnement à l’aide d’un site modèle, puis l’enregistrer dans un fichier XML et opérer certaines personnalisations en mémoire lors de la gestion de l’instance ProvisioningTemplate dans votre code.

Exemple de code pour extraire un modèle à l’aide de la méthode GetProvisioningTemplate

L’exemple d’application console d’approvisionnement illustre l’utilisation de la méthode GetProvisioningTemplate. Dans cet exemple, le processus d’exportation le modèle d’approvisionnement a lieu dans le bloc de code suivant.

ProvisioningTemplateCreationInformation ptci = new ProvisioningTemplateCreationInformation(ctx.Web);

// Create FileSystemConnector, so that we can store composed files somewhere temporarily 
ptci.FileConnector = new FileSystemConnector(@"c:\temp\pnpprovisioningdemo", "");
ptci.PersistComposedLookFiles = true;
ptci.ProgressDelegate = delegate (String message, Int32 progress, Int32 total)
{

// Use this to simply output progress to the console application UI
Console.WriteLine("{0:00}/{1:00} - {2}", progress, total, message);
};

// Execute actual extraction of the tepmplate
ProvisioningTemplate template = ctx.Web.GetProvisioningTemplate(ptci);

Appliquer le modèle d’approvisionnement

Si vous appliquez le modèle d’approvisionnement à l’aide des méthodes d’extension de la bibliothèque principale, vous disposez d’un bloc de code similaire à l’exemple présenté ici. Dans l’exemple, le modèle est appliqué au site cible en utilisant la méthode d’extension ApplyProvisioningTemplate du type Web.

using (var context = new ClientContext(destinationUrl))
{
  context.Credentials = new SharePointOnlineCredentials(userName, password);
  Web web = context.Web;
  context.Load(web, w => w.Title);
  context.ExecuteQueryRetry();

  // Configure the XML file system provider
  XMLTemplateProvider provider =
  new XMLFileSystemTemplateProvider(
    String.Format(@"{0}\..\..\",
    AppDomain.CurrentDomain.BaseDirectory),
    "");

  // Load the template from the XML stored copy
  ProvisioningTemplate template = provider.GetTemplate(
    "<template name>.xml");

  // Apply the template to another site
  Console.WriteLine("Start: {0:hh.mm.ss}", DateTime.Now);

  // We can also use Apply-PnPProvisioningTemplate
  web.ApplyProvisioningTemplate(template);

  Console.WriteLine("End: {0:hh.mm.ss}", DateTime.Now);
}

Bibliothèque principale PnP

La bibliothèque principale (OfficeDevPnP.Core) est un modèle objet CSOM/REST qui prend en charge l’infrastructure d’approvisionnement PnP et active le moteur d’approvisionnement PnP. Elle est constituée de plusieurs espaces de noms, dont un ensemble de méthodes d’extension. Ces méthodes étendent le modèle objet SharePoint pour prendre en charge l’approvisionnement à distance, ainsi que des objets destinés à gérer des entités, des travaux du minuteur, des modèles d’approvisionnement et l’intégralité de l’infrastructure d’approvisionnement. Le Tableau 1 répertorie les espaces de noms dans la bibliothèque principale.


Tableau 1. Espaces de noms dans la bibliothèque OfficeDevPnP.Core

Espace de noms Description
OfficeDevPnP.Core
OfficeDevPnP.Core.AppModelExtensions Classes .NET qui étendent un type existant avec des méthodes supplémentaires.
OfficeDevPnP.Core.Entities Les classes utilisées pour fournir et récupérer des objets plus complexes à partir de méthodes d’extensions dans AppModelExtensions.
OfficeDevPnP.Core.Enums Un ensemble d’énumérations qui prennent en charge les opérations d’approvisionnement.
OfficeDevPnP.Core.Extensions Méthodes d’extension non liées à SharePoint, telles que des méthodes d’aide à la manipulation de chaînes.
OfficeDevPnP.Core.Framework.ObjectHandlers.TokenDefinitions Jetons utilisés pour remplacer du contenu spécifique d’un site dans l’objet modèle.
OfficeDevPnP.Core.Framework.Provisioning.Connectors Les connecteurs sont utilisés pour connecter différentes sources de données dans lesquelles des modèles et éléments sont stockés.
OfficeDevPnP.Core.Framework.Provisioning.Extensibility Code de fournisseur d’extensibilité. Des fournisseurs d’extensibilité permettent d’ajouter des fonctionnalités qui ne sont pas prises en charge en mode natif par le moteur.
OfficeDevPnP.Core.Framework.Provisioning.Model Objets modèles d’exemple de données. Les modèles sont extraits ou désérialisés en code C# réel. Cet espace de noms contient des classes pour cette structure.
OfficeDevPnP.Core.Framework.Provisioning.ObjectHandlers Gestionnaires pour différents éléments SharePoint prenant en charge l’extraction et la création de modèle.
OfficeDevPnP.Core.Framework.Provisioning.Providers Espace de noms pour la base du fournisseur de modèles. Des fournisseurs de modèles permettent de sérialiser ou désérialiser des modèles basés sur du code dans un format spécifique.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Json Fournisseur de modèles JSON pour la sérialisation ou la désérialisation de modèles basés sur du code vers ou à partir d’un format JSON.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml Fournisseur de modèles XML pour la sérialisation ou la désérialisation de modèles basés sur du code vers ou à partir d’un format XML.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201503 Fichiers de schéma générés automatiquement pour la version v201503 du schéma.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201505 Fichiers de schéma générés automatiquement pour la version v201505 du schéma.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201508 Fichiers de schéma générés automatiquement pour la version v201508 du schéma.

Voir aussi