SharePoint 2013 et l’agrégation de données provenant du SI puis exposition à une application mobile


Avez vous déjà penser à utiliser SharePoint en tant que serveur de médiation / serveur relai entre un SI et une application mobile ?

Pourquoi SharePoint pour ce usecase ?

Lorsque l’on créé une application mobile pour une entreprise, il est souvent nécessaire de récupérer des données provenant de divers systèmes (bases de données métier, applications spécifiques, AD, etc.). SharePoint offre nativement tous les outils pour ce type d’usage, se pose alors le coût de l’installation et de la mise en oeuvre d’une artillerie aussi lourde que SharePoint pour répondre à ce type de besoin. Dans certains cas, le client a déjà un serveur SharePoint pour d’autres usages, il suffit juste de valider qu’il est bien possible de créer une application web pour aller exposer des données à l’extérieur du réseau. Autrement un SharePoint Online (SAAS) ou une l’utilisation d’une plateforme hébergée via Azure ou autre solution d’hébergement peut parfaitement répondre au besoin et vous allez voir que la mise en oeuvre est relativement simple car tous les outils sont disponibles nativement.

Alimenter SharePoint en données

Business Connectivity Services permet de se connecter à une source de données tiers afin d’en exposer les données via SharePoint. Dès que la source de données est mise à jour, la (les) liste(s) externe(s) SharePoint sont mises à jour. On peut également bénéficier du système de notification présent dans SharePoint (alertes email ou SMS).

Un SPJob (tâche planifiée SharePoint) peut également être un très bon moyen de se connecter à une source de données tiers pour venir alimenter une structure de donnée SharePoint (mode PULL). Celui-ci sera déclenché à une fréquence définie, ce qui ne garantie pas autant de fraîcheur qu’avec le BCS.

La source de données tiers peut-elle même venir alimenter SharePoint (mode PUSH) via l’interface RESTful mise à disposition ou via l’API de webservice SharePoint. Ce mode est à privilégié afin de garantir la fraîcheur des données mais il faut que les équipes en charge de la source de données puissent implémenter ce type de solution, ce qui n’est pas toujours le cas.

Exposer des données en OData via SharePoint

SharePoint expose nativement les données des listes et des bibliothèques via le protocole OData (http://www.odata.org/). Donc, une fois les données stockées, peu importe leur type (documents, photos ou éléments de liste, voire même vidéos), elles peuvent être exposées via les interfaces OData natives SharePoint 2013. A partir du moment ou une donnée est stockée dans une liste ou une librairie SharePoint, elle peut être requetée en REST / JSON (format de communication à privilégié en cas de mobilité) par n’importe quel client authentifié (ex : interrogation de listdata.svc).

Une application mobile peut bien évidemment demander ses mises à jour à un serveur SharePoint en fonction de la date à laquelle elle a récupéré les dernières informations.

Construire et tester ses requêtes REST

Afin de construire des requêtes en REST, pas de mal d’éléments intéressants par ici avec des cas concrets : SharePoint REST interface with operators and functions.

Prenons un exemple : je veux récupérer tous les éléments mis à jour depuis une date donnée ainsi que les éléments associés via un lookupfield (ou champs de recherche). Voici une URL REST type : http://urldusite/_vti_bin/listdata.svc/VotreListe1?$expand=VotreLookUpField1,VotreLookUpField1/VotreLookUpField2,titre,description&$filter=Modifi%C3%A9%20gt%20datetime%272013-12-16T09%3A44%3A05%27

Côté client en HTML, pour tester votre requête une fois authentifié sur votre serveur SharePoint, le code donnerait ça :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
 <HEAD>
 <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js" type="text/javascript"/>
 </HEAD>

 <BODY>

 <script>
$(document).ready(function() {getdata(); });

function getdata() {
    $.ajax({
       type: "GET",
		url: "http://votresite/_vti_bin/listdata.svc/VotreListe(20)?$expand=LookUp1/Documents,titre,description",
		contentType: "application/json; charset=utf-8",
		accept: "application/json",
		success: function (xhr) {
		alert('ok');
		},
		error: function (xhr) {
		alert ('You are being redirect to the login page since you are not authenticated');
		window.location = "http://votresite";
		}
    });
}

</script>

</BODY>

</HTML>

Un super utilitaire pour avancer dans vos devs et valider/troubleshooter vos requêtes est SOAPUI qui sait très bien gérer les authent NTLM sur domaine différent, donc fonctionne parfaitement avec SharePoint.

Attention :   Il n’est pas possible de récupérer les éléments à la minute près, le webservice ne semble pas prendre en compte les heures ni les minutes indiquées dans le datetime (voir : Filter REST call on SharePoint with DateTime value). Il faut donc tout récupérer depuis la veille et refiltrer sur l’heure en local, ou si données trop volumineuses, il faut se créer un webservice WCF spécifique.

Envoi de fichiers

Afin d’envoyer des fichiers mis à jour depuis une date données, il est possible de continuer à utiliser le même principe :

  • interrogation de la bibliothèque de doc en REST par l’appli mobile
  • Envoi de la liste des docs mis à jour depuis une date donnée
  • lecture de cette liste et récupération des documents un à un grâce à leurs URLs par l’application mobile

Afin de faire un peu mieux en terme de performance dans un contexte de mobilité il est possible de créer un webservice WCF personnalisé à déployer sur votre ferme SharePoint qui prendra en entrée une date et une liste, et qui retournera un ZIP comprenant la dernière version de tous les documents mis à jour depuis cette date. Très sympa pour des populations nomades souvent en déplacement (mais ne vient pas remplacer un SkyDrive Pro qui offre une application mobile sur les grands OS mobiles et qui fera du bidirectionnel et du différentiel de version).

Exemple : Skydrive Pro pour iOS

Notifications PUSH

Plutôt que l’application cliente demande à chaque fois au serveur SharePoint de lui envoyer ses mises à jours, il est possible de programmer un système de notifications PUSH. Ce système permet au serveur d’informer l’application mobile qu’il y a eu des mises à jour. 

Le procédure est différente selon les OS mobiles ciblés mais en gros il faut suivre les étapes suivantes :

  • l’application doit s’inscrire auprès du site SharePoint et souscrire aux notifications push auprès du serveur. Lorsque la feature de notification est activée via les paramètres du site, un store de souscriptions est créé au niveau site afin de stocker toutes les informations des devices qui ont souscrits aux notifications push depuis ce site. Ceci correspond en fait à une liste cachée. Il peut y avoir maximum 2000 souscriptions par site, il est possible d’effacer celles qui ne sont plus d’actualité (Clear push notification registrations from the subscription store in SharePoint 2013)
  • il faut ensuite créer un event handler dédié à cet effet et utiliser des méthodes spécifiques à votre OS cible pour créer la notification lors la création / mise à jour / suppression de votre élément de liste. En effet il vous faudra interagir avec le système de notifications de votre OS (exemple :  Microsoft Push Notification Service -MPNS).
  • Une procédure très complète et détaillée pour Windows Phone par ici : « Procédure : configurer et utiliser les notifications push dans des applications SharePoint 2013 pour Windows Phone »

Autres features intéressantes dans un contexte de mobilité : 

Supports

Si vous désirez consulter un site, ou un simple élément SharePoint sur un device mobile, voici les OS / navigateurs supportés nativement par Microsoft.

OS

OS Version

navigateur

Smartphone Support

Tablet support

Windows Phone

Windows 7.5 or superior

Internet Explorer Mobile

Supported

NA

Windows

Windows 7 or superior

Internet Explorer

NA

Supported

iOS

5.0 or superior

(video playing needs iOS 6.0 or superior)

Safari

Supported

Supported

Android

4.0 or superior

(video playing needs Android 4.1 or superior)

Android Browser

Supported

Supported

Sources :

– Nouveautés pour les appareils mobiles dans SharePoint 2013

la bible pour commencer à développer des Apps pour SharePoint 2013 sur Windows Phone

Publicités

Une réflexion au sujet de « SharePoint 2013 et l’agrégation de données provenant du SI puis exposition à une application mobile »

  1. Ping : SharePoint 2013 et l'agrégation de donn&...

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s