Développer avec l’organiseur de contenu de SharePoint 2010 – 10 choses à savoir

Développer avec l’organiseur de contenu de SharePoint 2010 – 10 choses à savoir


Récemment, j’ai eu l’occasion de travailler avec la fonctionnalité d’organiseur de contenu SharePoint (Content Organizer). À titre de rappel, celle-ci permet de rediriger automatiquement des documents dans des bibliothèques SharePoint en fonction de leurs métadonnées. Pour cela, il est nécessaire de définir des règles qui orienteront les documents aux bons emplacements selon différentes conditions.

L’organisateur de contenu dans SharePoint (Content Organizer)

La fonctionnalité d’organiseur de contenu est activable au niveau d’un site SharePoint :

image1

image2

L’ajout de document se fera ainsi toujours par la même bibliothèque de document : la bibliothèque de remise ou en anglais la « Drop Off Library » :

image3

Pour chaque règle que vous définissez, vous avez la possibilité d’appliquer des traitements spécifiques. À la base, ceux-ci correspondent à l’envoi dans une destination x ou y et à la création ou non d’un répertoire automatique sur la base des métadonnées du document.

Cependant, qu’arrive-t-il si vous souhaitez appliquer des traitements propres à votre domaine?

Vous devrez implémenter un routeur via du code personnalisé vous permettant de contrôler totalement le document après que celui-ci ait rencontré une règle.

image4

Si tel est le cas voici les 10 éléments auxquels vous devez prêter attention :

10 choses à retenir

Champ de taxonomie dans les conditions


Si vous créez une règle impliquant un champ de type « métadonnée gérée », vous devrez utiliser la « ValidatedString » du champ de taxonomie comme valeur de votre condition. La méthode pour obtenir cette valeur est disponible dans le framework Dynamite.

Affichage d’un message d’erreur


Si vous souhaitez afficher un message d’erreur à l’utilisateur lors d’une erreur de traitement du routeur personnalisé, vous devrez utiliser la méthode
SPUtility.TransferToErrorPage

Formulaire d’édition


Le formulaire d’édition de la bibliothèque de remise remplace celui des bibliothèques de destinations à l’exception des ensembles de documents.

Ajout automatique des types de contenus


Les types de contenus impliqués dans des règles de l’organiseur de contenu sont ajoutés automatiquement à la bibliothèque de remise, vous n’avez pas à gérer l’ajout manuellement.

Forcer le routage d’un document


Le seul moyen de forcer le routage d’un document dans la bibliothèque de remise est d’exécuter le travail du minuteur de l’organiseur de contenu. La méthode ForceContentOrganizerTimerJobProcessing est disponible dans le framework Dynamite pour réaliser cela. Attention toutefois, des permissions au niveau du compte de pool d’application sont nécessaires sur la base de données de configuration de SharePoint.

Sauvegarder à même la bibliothèque de remise


Si lors du traitement de votre routeur personnalisé, vous devez sauvegarder le document en cours directement dans la bibliothèque de remise (par exemple suite à une erreur de logique métier) :

  • Vous ne pouvez pas utiliser le même nom que le document original (celui qui est en train d’être traité. Un exemple de gestion d’erreurs est disponible dans le code fourni.
  • Utiliser la méthode EcmDocumentRouter.SaveFileToFinalLocation plutôt que (SPList).Files.Add() pour sauvegarder un document dans la bibliothèque de remise pour éviter le message d’erreur suivant : « The settings for this list have been recently changed. Refresh your browser before editing this list »

Soumettre un document par code à l’organiseur


Pour soumettre un document à l’organiseur de contenu et qui se trouve déjà dans SharePoint, utilisez la méthode (SPListItem).File.SendToOfficialFile()

Modifier ou ajouter des propriétés à un document routé


Dans votre routeur, si vous souhaitez modifier ou ajouter une propriété au document actuellement traité dans la Hashtable « documentProperties», utiliser le GUID de la colonne plutôt que le nom interne. Une exception s’applique pour les colonnes de taxonomie qui sont accessibles par nom interne.

Suppression de routeurs personnalisés


Il n’est pas possible de supprimer deux routeurs personnalisés(RemoveCustomRouter()) à la suite (cela vous génère une erreur).

Déploiement des routeurs


Vous pouvez déployer plusieurs routeurs personnalisés à l’intérieur d’une seule et même assembly, SharePoint se chargera de les retrouver tout seul.

Projet SharePoint exemple avec Visual Studio 2010


Pour illustrer tout cela, je vous fournis un exemple de solution complète démontrant la plupart de ces points.

github_icon

Le tout est disponible ici :

https://github.com/GSoft-SharePoint/Dynamite-2010-Example-ContentOrganizer.git

La description et la procédure d’installation est disponible dans fichier README.txt à la racine de la solution.

Pour exécuter la solution vous aurez besoin de récupérer le Dynamite PowerShell Toolkit disponible ici : https://github.com/GSoft-SharePoint/Dynamite-PowerShell-Toolkit.git

De même, la solution utilise le Framework Dynamite 2010 disponible ici :
https://github.com/GSoft-SharePoint/Dynamite-2010.git

Note : à l’heure où j’écris cet article, il se peut que la branche « master » de GitHub ne soit pas à jour. Dans ce cas, récupérez la branche « develop ».

Description de l’exemple :

  • Création d’une règle simple impliquant des champs de taxonomie
  • Routeur personnalisé modifiant des champs pendant le traitement
  • Affichage de message d’erreur depuis un routeur
  • Utilisation des scripts de déploiement de solutions SharePoint avec le Framework Dynamite

BONUS:

  • Fonctionnalité permettant de re-router un ou plusieurs documents d’une bibliothèque de destination vers la bibliothèque de remise.

+ There are no comments

Add yours