La nouvelle version de SharePoint propose une grosse évolution du Business Data Catalog (BDC), avec les Business Connectivity Services (BCS). Ironiquement, le terme BDC est resté aussi mais pour désigner uniquement “Business Data Connectivity”, en bas dans cette diapo:

BCS

 

Maintenant, on peut se connecter à des sources externes diverses (dont des services WCF) en lecture / écriture, ce qui permet de relier SharePoint aux applications métier (il peut ) et de donner au portail un rôle d’interface utilisateurs unifiée vers diverses applications métier. Je reviendrai sans doute sur ce sujet plus tard.

Pour tester cela, on peut développer un service WCF qui expose une liste de clients. L’interface de ce service est la suivante:

code IService

Le service stocke cette liste en mémoire

code Service - stockage

et lors de son démarrage ajoute un client par défaut

code Service - constructeur

Lors de l’appel des méthodes du service, ce dernier affiche dans l’application console qui l’héberge ce qu’il fait. Voici deux exemples:

code Service - exemple de log

code Service - exemple de log

 

Maintenant que nous avons ce service, appelons-le depuis SharePoint pour voir les clients, et les manipuler.

Ouvrons le site SharePoint avec SharePoint Designer

SharePoint Designer pour aller à la définition d'un external content type

nouvel External Content type

On indique que les entités qu’on récupérera peuvent être assimilées à des contacts dans Office

image

puis on indique qu’on veut se connecter à un service WCF

choix de WCF

On peut ensuite renseigner les informations de metadonnées (WSDL dans notre cas) et URI du endpoint

URI de WSDL et endpoint

On retrouve alors les méthodes du contrat qu’on va pouvoir associer aux actions SharePoint pour définir l’external content type

Méthodes de WCF

Par exemple pour la méthode GetAllCustomers, qu’on associe à “New Read List Operation”, on retrouve le type Customer qui va permettre de créer les champs de l’External Content Type (ECT), et d’indiquer quel champ est l’identifiant

image

Pour GetCustomer, on peut aussi faire correspondre les champs à des champs d’un contact Office (puisque nous avons précisé plus haut que cet ECT pouvait correspondre à un contact dans Office, donc Outlook)

image

Toujours dans SharePoint Designer, quand toutes les méthodes ont été définies, on peut demander la création d’une external list qui s’appuie sur l’ECT qu’on vient de définir

image

Depuis le navigateur maintenant, on retrouve cette liste:

image

Ouvrons-là et observons comment se comporte le Web Service:

image

La méthode GetAllCustomers a bien été appelée.

De même, on peut ajouter un client

image

le modifier

image

image

image

Ou encore supprimer un client

image

image

 

Maintenant, nous allons voir ces contacts dans Outlook.

image

une définition de la liste externe s’installe dans Office

image

puis on peut ouvrir Outlook

image

On clique sur Update Now

En bas à droite, Windows indique qu’on doit fermer Outlook pour prendre en compte la modification

image

on clique sur la bulle

image

Close All

Puis Outlook s’ouvre avec notre liste vue comme des contacts

image

On peut effectuer les même opérations dans Outlook que dans la liste SharePoint. Dans l’exemple ci-dessous, on crée un deuxième contact

image

image

On notera en bas les deux champs qui n’ont pas été associés à des champs classiques de contact, et qui se présentent donc comme des champs génériques.

 

Conclusion

Nous avons donc vu comment connecter SharePoint et Outlook à un service WCF qui expose des clients.

On notera que le seul code développé est celui du service WCF lui-même.

Dans un scénario d’entreprise, si le service existe déjà, la consommation de ce service se fait sans aucun code.

:-)