Récupérer la liste des espaces de travail
Pour ce nouvel épisode de notre série sur l’utilisation des services Web dans Mezzoteam, nous allons apprendre comment récupérer la liste des espaces de travail de Mezzoteam auxquels l’utilisateur courant a accès. En effet, Mezzoteam fonde les principes de sa gestion de la sécurité et le calcul des droits des utilisateurs à l’intérieur d’un espace de travail. Toute action (récupération de liste de documents, création de document, attachement de fichiers, workflows…) s’effectue une fois que l’utilisateur a changé d’espace de travail et que Mezzoteam a pu calculer ses droits spécifiques.
La plupart clients riches Mezzoteam affichent donc, une fois la connexion établie, la liste des espaces de travail de l’utilisateur, afin que celui-ci puisse ensuite naviguer vers l’espace de travail souhaité.
Pour cet exercice, nous allons partir de l’exemple que nous avions créé à l’épisode précédent. Comme nous l’avions vu alors, après la connexion de l’utilisateur, Mezzoteam calcule une clé de session (SessionKey) qui va nous servir pour identifier la session de l’utilisateur courant dans toutes ses actions sur Mezzoteam.
Nous allons utiliser cette clé de session pour initialiser un nouveau service web, le service directory.
Le service web Directory
Le service web Directory permet au développeur de manipuler les objets suivants dans Mezzoteam :
- Espace de travail (objet Worksapce)
- Utilisateur (objet User)
- Groupe (objet Group)
- Organisation (objet Organization)
Pour chacun de ces objets, on trouve des méthodes pour en récupérer la liste, créer de nouveaux objets, en supprimer, etc.
Créons donc notre nouveau service web :
// Création d'un objet Directory
directory myDirectoryWs = new directory();
// On passe la clé de sécurité calculée lors de la connexion
myDirectoryWs.CredentialSoapHeaderValue = new CredentialSoapHeader();
myDirectoryWs.CredentialSoapHeaderValue.SecurityKey = myLogon.SecurityKey;
Pour récupérer la liste des espaces de travail, nous utiliserons la méthode WorkspaceGetList, qui récupère la collection d’espaces de travail de l’utilisateur dont on passe l’identifiant en paramètre.
// Création d'un objet Workspace[] pour récupérer la liste des espaces de travail
Workspace[] myWorkspaceList;
// La méthode de récupération de la liste des espaces de travail prend comme paramètre
// le login de l'utilisateur
myWorkspaceList = myDirectoryWs.WorkspaceGetList(myDirectoryWs.UserGetFromLogin(textBox1.Text));
Il existe d’autres méthodes pour récupérer une liste d’espaces de travail, et en particulier des méthodes retournant des objets DataSet plutôt qu’une collection d’objets Workspace. Ces méthodes sont à priori moins coûteuses lors de l’exécution, et ej vous encourage à les utiliser plutôt que celles qui retournent les objets métier de Mezzoteam. Néanmoins, pour ce premier exemple, nous irons à la facilité !
Nous afficherons ensuite certaines des propriétés des epsaces de travail sur les 5 premiers espaces de travail de l’utilisateur, en procédant de la manière suivante :
// On calcule le nombre d'espaces de travail récupérés
int rowCount = myWorkspaceList.Count();
// On limite a au plus 5
if (rowCount > 5)
{
rowCount = 5;
}
// On affiche les informations de titre et de volume des 5 premiers
// espaces de travail
for (int iCounter = 0; iCounter < rowCount - 1; iCounter++)
{
MessageBox.Show("Titre : " + myWorkspaceList[iCounter].Title + " Volume de fichiers :" + myWorkspaceList[iCounter].TotalFileSize.ToString());
}
Je vous encourage à explorer les propriétés d’un espace de travail en utilisant le mode pas à pas de Visual Studio. Dans le prochain épisode, nous verrons comment naviguer vers un espace de travail, et en récupérer la liste des documents.
Le code de cet épisode est disponible ici.