Check-out : LongTerm / ShortTerm

Si vous avez déjà manipulé les bibliothèques de documents, vous avez sans nul doute déjà utilisé la fonctionnalité de checkin/checkout (Extraction/Archivage en bon français) pour verrouiller l'accès en écriture d'un document.

Mais saviez-vous qu'il existe un check-out temporaire aussi appelé "Short Term" ? En effet, vous l'avez peut-être déjà remarqué, lorsque vous ouvrez un document Office déjà ouvert par quelqu'un d'autre un message d'avertissement apparaît :

CheckoutShortTerm01

Et si je demande d'avoir la notification de la disponibilité du document, j'obtiens alors ce message :

CheckoutShortTerm02

Mais comment Office sait-il qu'il y a déjà quelqu'un en train d'éditer le document ?

Si on commence par faire un tour dans l'API, on trouve différentes propriétés autour des problématiques de Check-out au niveau des fichiers gérés par SharePoint (classe "SPFile"):

CheckoutShortTerm03 

On peut remarquer qu'il y a une date d'expiration pour les check-out "short term". De plus, le status est une énumération dont les valeurs sont les suivantes :

CheckoutShortTerm04

Et bien en fait il existe un système de verrouillage à court terme utilisé par certaines applications et basé sur l'ajout de quelques méta données masquées. En effet, sachez qu'il existe un ensemble de propriétés attachées aux documents et qui ne sont pas forcément mappés aux colonnes de site. Ces propriétés sont accessibles au niveau de la class SPFile via la propriété "Properties" qui n'est rien d'autre qu'une HashTable.

Voici ce que donnent ces informations pour un fichier "normal" :

CheckoutShortTerm05 

Voici les informations pour un fichier en checkout standard ("long term") :

 CheckoutShortTerm06

Voici les informations pour un fichier en checkout temporaire ("short term") :

 CheckoutShortTerm07

Il existe donc une propriété stipulant la date d'expiration de mon checkout. Le temps de verrouillage diffère selon les applications, cf. http://blogs.technet.com/harikumh/archive/2008/05/28/check-out-feature-of-sharepoint-2007.aspx, soit 10mn pour Office 2003, soit 60mn pour Office 2007. De plus l'application régulièrement renvoyer le lock sans quoi celui-ci sera retiré arrivé à la date d'expiration (http://wss.collutions.com/Lists/FAQ/DispForm.aspx?ID=149).

Mais comment font donc ces applications pour utiliser ce mécanisme ? En effet, il n'existe rien de tel côté modèle objet (la méthode CheckOut() ne fait qu'un "long term" checkout)... Et bien la réponse vient du côté du protocole Remote Procedure Call.

En effet, SharePoint supporte 2 jeux de méthodes, celles propres aux Windows SharePoint Services et celles des extensions serveur FrontPage.

Et c'est dans ces dernières qu'on trouve la méthode "checkout document" : http://msdn.microsoft.com/en-us/library/ms437509.aspx

On y trouve plusieurs paramètres :

  • service_name : paramètre obsolète représentant l'url d'appel
  • document_name : l'url relative du document par rapport au site (par exemple "Shared Documents/MyDoc.docx")
  • force : 0 (valeur par défaut) ou 1, 1 permettant de déverrouiller un fichier (undo checkout)
  • timeout : valeur en minute du temps du checkout à court terme
  • validateWelcomePages : inutile ici

Pour l'utiliser, voici un petit bout de code. Tout d'abord se faire une méthode permettant l'appel en RPC de nos méthodes :

CheckoutShortTerm08

L'objectif ici est d'appeler l'url http://[server]/[sitename]/_vti_bin/_vti_aut/author.dll et de passer les bons paramètres en POST.

Ensuite on appelle cette méthode en passant les paramètres adéquats c'est-à-dire l'url du site contenant le fichier à verrouiller (webUrl) et l'url relative du fichier (fileUrl) :

CheckoutShortTerm09 

Le tour est joué !

Si vous voulez récupérer le code, voici un petit projet Console pour Visual Studio 2008 à télécharger.

Gat, SPRPC (mais comme le checkout, pas trop longtemps quand même ;))

 

Commentaires

Laisser un commentaire





Validation Image CAPTCHA