Archives du mot-clé Liste externe

Création d’une liste externe SharePoint 2013 en programmation


Cet article fait partie d’une série concernant la mise en oeuvre de liste externes et de workflows avec SharePoint. Les étapes seront passées en revue :

_______________________________________________________________________________________________

La liste externe va permettre d’exploiter le type de contenu externe précédemment créé dans SharePoint. Il existe différents moyens de la créer en programmation :

  • En mode déclaratif via une nouvelle instance de Liste (element.xml)
  • En utilisant le modèle objet et plus particulièrement SPListDatasource.BDCProperties

Comme nous l’avons déjà vu une liste externe peut également être créée via l’IHM SharePoint 2013 ainsi qu’avec SharePoint Designer 2013.

Le mode déclaratif

Créer une instance de liste externe via la Wizzard Visual Studio 2012 n’est pas possible. En effet le modèle de type « Liste externe » n’est pas disponible à la sélection, on peut rapidement en conclure que cette solution n’est pas celle privilégiée par Microsoft.

Nous allons tout de même voir comment y arriver en modifiant le fichier elements.xml correspondant à l’instance.

1 – Dans Visual Studio 2012 ajouter un nouvel élément de type Liste au projet.

liste externe SharePoint

2 – Choisir de créer uniquement une instance de liste basée sur n’importe quel modèle (« Annonces » par exemple) étant donné que nous allons le modifier par la suite.

liste externe SharePoint

liste externe SharePoint

3 – Une nouvelle feature ainsi qu’une nouvelle instance de liste viennent d’être créées. Trouver le fichier elements.xml correspondant à cette instance de liste.

liste externe SharePoint element.xml

4- Editer ce fichier et remplacer le code existant par la code suivant


<?xml version="1.0" encoding="utf-8"?>

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

<ListInstance Title="Personnes"

OnQuickLaunch="TRUE"

TemplateType="600"

FeatureId="00bfea71-d1ce-42de-9c63-a44004ce0104"

Url="Lists/Personnes"

Description="Liste Externe Personnes">

<DataSource>

<Property Name="LobSystemInstance" Value="AdventureWorksPerson" />

<Property Name="EntityNamespace" Value="SPAlex.Labs.ContentTypes.AdventureWorksPerson" />

<Property Name="Entity" Value="Personne" />

<Property Name="SpecificFinder" Value="ReadItem" />

</DataSource>

</ListInstance>

</Elements>

–          Il faudra noter le TemplateType qui est égal à 600 pour les listes externes

–          L’ajout d’un noeud DataSource avec un ensemble de propriétés que l’on peut facilement trouver via l’administration centrale si le type de contenu externe sur lequel se base cette liste a déjà été déployé une fois. Pour cela il faut se rendre sur l’application de service BDC et y trouver le type de contenu. Les informations dont vous avez besoin sont alors disponibles.

type de contenu externe administration centrale

Cliquer sur le type de contenu externe.

type de contenu externe sharepoint 2013

  • La valeur de « Nom » doit être utilisée pour « Entity ».
  • La valeur de « Espace de noms » pour « EntityNamespace »
  • La valeur de « Système externe » pour « LobSystemInstance »

5 – Déployer sur le site via Visual Studio et le tour est joué.

liste externe sharepoint

Modèle Objet

Cette solution semble privilégiée. Il est possible de créer une instance de liste via un feature receiver par exemple.

1 – dans Visual Studio 2012, ajouter une nouvelle fonctionnalité via clic droit sur l’élément « features ».

feature visual studio 2012

Nommer la feature.

feature sharepoint 2013 visual studio 2012

2 – Faire un clic droit sur la feature et lui ajouter un récepteur d’évènement (ou feature Receiver).

feature eceiver visual studio 2012 sharepoint

3 – Remplacer le code de la classe nouvellement créée par le code suivant :


using System;

using System.Runtime.InteropServices;

using System.Security.Permissions;

using Microsoft.SharePoint;

namespace SPAlex.Labs.Features.LissteExternePersonneDev

{

/// <summary>

/// Cette classe gère les événements déclenchés lors de l'activation, la désactivation, l'installation, la désinstallation et la mise à niveau de fonctions.

/// </summary>

/// <remarks>

/// Le GUID attaché à cette classe peut être utilisé lors de la compression et ne doit pas être modifié.

/// </remarks>

[Guid("e7c5fb55-26b4-43a1-8050-3d99c77e5f2b")]

public class LissteExternePersonneDevEventReceiver : SPFeatureReceiver

{

public override void FeatureActivated(SPFeatureReceiverProperties properties)

{

//défintion du datasource

SPListDataSource ds = new SPListDataSource();

ds.SetProperty(SPListDataSource.BDCProperties.LobSystemInstance, "AdventureWorksPerson");

ds.SetProperty(SPListDataSource.BDCProperties.EntityNamespace, "SPAlex.Labs.ContentTypes.AdventureWorksPerson");

ds.SetProperty(SPListDataSource.BDCProperties.Entity, "Personne");

ds.SetProperty(SPListDataSource.BDCProperties.SpecificFinder, "ReadItem");

//le scope de la feature est "web"

SPWeb currentWeb = (SPWeb) properties.Feature.Parent;

if (currentWeb != null)

{

currentWeb.Lists.Add("Personnes Dev", "Personnes Dev", "Lists/PersonnesDev", ds);

}

}

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)

{

//le scope de la feature est "web"

SPWeb currentWeb = (SPWeb)properties.Feature.Parent;

if (currentWeb != null)

{

SPList myList = currentWeb.Lists.TryGetList("Personnes Dev");

if (myList != null)

{

currentWeb.Lists.Delete(myList.ID);

}

}

}

}

}

L’ajout de l’instance de liste se fait au moment de l’activation de la feature, la suppression au moment de la désactivation. Les propriétés de la datasource sont les mêmes que celles décrites dans la méthode précédente.

4 – Déployer la solution avec Visual Studio, la feature est alors automatiquement activée.

Package et features

La feature correspondant au type de contenu externe est déployée globalement au niveau Ferme, ce qui signifie que ce type de contenu sera accessible à toutes les applications web liées au Business Connectivity Service. Le même type de contenu externe ne peut donc pas être déployé 2 fois par 2 WSP différents sur la même ferme. Il convient donc de réfléchir en amont à l’organisation des solutions déployées.Mon WSP comprend donc :

  • 1 feature qui déploie mon type de contenu externe niveau ferme
  • 2 features qui déploient mes listes externes niveau web

Il convient de toujours nommer ses features en respectant des conventions de nommage définies au niveau de votre ferme SharePoint cible. Une petite image pour l’illustrer est toujours la bienvenue.

sharepoint package et features visual studio 2012

Publicités

Configuration du Secure Store Service et ajout d’une application afin de créer un type de contenu externe


Cet article fait partie d’une série concernant la mise en oeuvre de liste externes et de workflows avec SharePoint. Les étapes seront passées en revue :

_______________________________________________________________________________________________

Le service de banque d’informations sécurisé dans SharePoint 2013

Le service Banque d’informations sécurisé est un service d’autorisation qui s’exécute sur un serveur d’applications. Il permet de stocker les informations d’identification requises pour   d’accéder à une ou plusieurs application(s) tierce(s) dans une base de données chiffrée. Il permet d’éviter, entre autres, les problèmes d’authentification dans un « double-hop » et parfois de s’affranchir d’une authentification Kerberos, bien que celle-ci soit souvent mise en oeuvre pour d’autres cas d’usage (utilisation du profil de l’utilisateur directement plutôt qu’un compte générique permettant l’impersonification).

La mise en oeuvre de ce service

  1. Il faut au préalable avoir identifié le compte géré (ex : spserviceapps) ainsi que le pool d’application qui seront utilisés pour exécuter cette application de service.
  2. Tout d’abord commencez par démarrer le service de Banque d’information sécurisé sur le serveur d’applications SharePoint 2013.
  3. Ensuite il faut créer l’application de services Banque d’informations sécurisé (procédure simple). 

Les procédures détaillées sont simples et visibles ici.

L’ajout d’une application

1 – Générer une nouvelle clé pour le chiffrement / déchiffrement de la base données associée à l’application de service.

Génération clé banque de données sécurisées

2 – Cliquer sur « Nouveau » puis remplissez le formulaire avec les informations de votre application tiece

Création application secure store service

Formulaire application cible du magasin sécurisé

Image 059

Dans mon cas il s’agit de la base de données AventureWorks2012 avec une authentification Windows donc rien de plus simple.

3 – Il est ensuite possible de définir les informations d’authentification qui seront utilisées pour impersonifier l’utilisateur lorsqu’il accédera à l’application cible. J’ai ici donné les login/password de l’administrateur de la base données (sous la forme NDD\user). Un utilisateur qui n’a qu’un accès en lecture à la base serait suffisant, il est également possible d’utiliser un couple login/password pour une authentification SQL plutôt que Windows.

Secure store service

Secure store services

4 – il ne me reste plus qu’à vérifier que je peux accéder à ces informations en créant un type de contenu externe via SharePoint Designer. Pour cela ouvrir son site cible avec SharePoint Designer et créer un type de contenu externe comme suit.

Type de contenu externe SharePoint Designer

5 – Saisir le nom du type de contenu externe puis cliquer sur « découvrir les sources de données externes et définir les opérations » puis sur « ajouter une connexion ».

Type de contenu externe SharePoint Designer

type de contenu externe sharepoint designer

6 – Choisir SQL Server.

SharePoint Designer type de contenu externe

7 – Saisir le nom de votre serveur de base de données ainsi que le nom de la base. Sélectionner « Se connecter avec l’identité Windows empruntée » et saisir le nom de l’application tel qu’il apparaît dans le Magasin de données sécurisées.

Type de contenu externe SharePoint Designer

8 – La connexion à la base est créée il est ainsi possible de créer un ensemble d’opération sur une table définie. Sélectionner la table et cliquer, par exemple, sur « Créer toutes les opérations ».

type de contenu externe sharepoint designer

9 – Dans le Wizzard vérifier que l’ID unique de votre table est bien mappé sur l’identificateur comme suit pour le BusinessEntityID.

secure store service

10 – Sélectionner les colonnes dont la valeur devra être affichée dans le sélecteur (liste déroulante) et cliquer sur « afficher dans le sélecteur. Dans mon cas j’ai choisi FirstName et LastName.

type de contenu externe SharePoint 2013

11 – Si aucun filtre n’est ajouté et que la table à plus de 2000 lignes  l’erreur suivante apparaîtra lorsqu’on essaiera d’afficher notre liste « Le connecteur de base de données a limité la réponse. La réponse de la base de données contient plus de « 2000 » lignes. Le connecteur de base de données peut lire « 2000 » lignes au maximum. La limite peut être modifiée via l’applet de commande « Set-SPBusinessDataCatalogThrottleConfig ». » Il faut alors ajouter un filtre de type « limite » avec la limite par défaut.

Filtre type de contenu externe SharePoint 2013

type de contenu externe sharepoint designer 2013

Editer la valeur par défaut du filtre avec une valeur inférieure à 2000.

sharepoint designer 2013 type de contenu externe

12 – Sauvegarder le type de contenu externe et vérifier que celui-ci est bien créé dans le service Business Connectivity Service via l’administration centrale.

BDC SharePoint 2013

types de contenu externe sharepoint 2013

13 – Il est alors possible d’accorder les autorisations d’accès à ce type de contenu externe pour les utilisateurs cibles.

business connectivyt services sharepoint 2013

14 – Enfin, pour vérifier que ces données sont réellement accessibles depuis notre site SharePoint, créer une liste externe basée sur le type de contenu.

Liste externe SharePoint Designer 2013

Liste externe SharePoint Designer 2013

15 – Vérifier l’accès à cette liste dans votre site SharePoint en lecture et écriture si telles sont les opérations que vous avez autorisé.

SharePoint Designer 2013 liste externe

Liste externe SharePoint 2013

Dans les articles suivants nous verrons faire la même chose via un développement Visual Studio 2012.