Groupe 3 (services applicatifs)

Date de création : 16 octobre 2003
Dernière modification : 14 Janvier 2004
Diffusion : internet

Utilisatin du canal annuaire

Ce document décrit le fichier de configuration utilisé par le canal annuaire, donne une trame des écrans qui devraient être générés à partir d'un fichier de configuration exemple.

Les sources sont disponibles dans le zip : esup-canal-annuaire-1.0.6.zip

La version 2 est disponible en version : esup-canal-annuaire-2.1-RC-3.zip et la documentation spécifique ce cette version est sur https://www.esup-portail.org/consortium/espace/Comm_2D/annuaireV2/sommaire.html

 


Installation

Configuration

Utilisation

Limitation

Exemples


 

Installation

Les librairies utilisées

Ce canal utilise les librairie "commons-beanutils","commons-digester".

Mise en place du canal

Préparation du fichier de configuration CAnnuaire.xlm.: mettre les renseignements relatifs aux serveurs et aux attributs importants.

Préparation du déploiement : modifier le deploy.home du fichier build.properties.

Lancement de la commande "ant deploy", pour déployer le canal dans les bons répertoires.

L'administrateur peut maintenant publier les canaux dont il a besoin en fonction du paramètre d'instanciation : "serverView". Pour cela, il y a 2 méthodes :

La plus simple étant de publier le canal de manière normale, par l'interface WEB prévue à cet effet.

La seconde étant d'utiliser la commande "ant pubchan -Dchannel=CAnnuaireGlobal.xml". Ce fichier CAnnuaireGlobal.xml remplace toute la démarche de publication. Il faut le déposer dans le répertoire {uPortal}/properties/chanpub. Les informations nécessaires à la publication sont décrites dans des tags XML, vous permettant ainsi même spécifier l'attribut "serverView".

La configuration

Structure générale

La configuration de ce canal est décrite dans un fichier xml : CAnnuaire.xml. Une dtd lui est associée : CAnnuaire.dtd.

Le fichier CAnnuaire.xml décrit est bien sûr un exemple. Deux documents xml associés à cet exemple sont également disponible : ListeDisciplines.xml et ListeFormations.xml.

La dtd de l'annuaire contient de nombreux commentaires; il est recommandé de les consulter.

Le fichier CAnnuaire.xml décrit le paramétrage du ou des annuaire(s) qui sont accessibles à ce canal. Il est lu une seule fois au démarrage du portail.

Sa structure générale est la suivante (la cardinalité de chaque élément est indiquée) :

<directories> <!-- root element-->
    <tables> <!-- listes de tables a monter en memoire (0,1) -->
        <table> <!-- description d'une table (1,n) -->
            <item> <!-- description d'un item de la table (0,n) -->
    <directory> <!-- description d'un annuaire. (1,n) -->
        <server> <!-- serveur ldap a atteindre (1.1) -->
        <request> <!-- permet de batir la requete et d'afficher le formulaire de saisie (1,1) -->
            <elemOfRequest> <!-- un element de la requete (1,n) -->
        <card> <!-- decrit la fiche finale, et la liste intermediaire eventuelle (1,1) -->
            <line> <!-- une ligne de la fiche individu (1,n) -->

 

Description des éléments, et attributs

tables

Facultatif. Cet élément permet de décrire et de remplir des tables mémoire qui seront utilisées par le canal annuaire.

Les tables sont bien sûr constituées de plusieurs enregistrements (items).
Un item comprend une valeur (value) et éventuellement un code associé (code).

pas d'attributs

table

Décrit et donne les informations pour remplir une table.

Il existe 3 types de tables

Pour ces 2 derniers cas, les tables sont raffraichies périodiquement (paramètre ttl de directories). Ceci n'est pas encore traité.

attributs :

remarque :

Dans le cas d'une table xml : le format de celle-ci est figé (voir cet exemple) ; il est de la forme :

<list>
  <item code="CNU01" value="Droit Privé et Sciences Criminelles" /> 
  <item ...>
</list>

l'attribut 'code' est facultatif. S'il n'est pas présent, il ne doit l'être dans aucun 'item'.
L'attribut 'value' contient la valeur de cet item.

Voir l'élément 'item' du fichier CAnnuaire.xml : la structure est identique

item

C'est un enregistrement d'une table de type static.

attributs :

directories

C'est l'élément racine.

attributs :

directory

Décrit un annuaire particulier.

attributs :

server

Précise les paramètres de connexion LDAP pour cet annuaire.

attributs :

request

Cet élément permet de définir la requête LDAP à générer pour la recherche dans l'annuaire.
Il permet également de construire le formulaire d'interrogation.

Il est composé d'elemOfRequest. La requête sera composée d'un et (&) avec chaque élément de requête non vide généré.

attributs :

elemOfRequest

C'est un élément d'une requête. Il permet d'une part, de construire éventuellement un champ du formulaire de saisie, et d'autre part, un élément de la requête finale.

Il existe 4 types d'éléments :

attributs :

card

Permet de définir la fiche finale de l'utilisateur, et éveuellement, le tableau intermédiaire si plusieurs utilisateurs répondent au critére de la recherche.

attributs :

line

C'est une ligne de la fiche finale.

2 types :

attributs :

Utilisation

Lors de la déclaration du canal par l'administrateur, celui-ci peut saisir le 'code' (cf name dans la configuration) de l'annuaire concerné dans le parametre "serverView". Il peut éventuellement saisir une liste de code,séparés par des virgules, voire "*" pour tous les annuaires. Dans ces cas, un menu déoulant permet à l'utilisateur de choisir l'annuaire de travail. Par défaut, si le paramètre n'est pas saisi, cela équivaut à mettre "*".

Le menu déroulant s'affiche dans le même ordre que celui saisi par l'administrateur. Le premier annuaire est celui par défaut.

Limitations

Dans un premier temps, afin de limiter la complexité, nous ne traitons pas les requêtes sur l'appartenance à un groupe LDAP.

Exemples

1/Résultats sous forme de fiches

On part du fichier CAnnuaire.xml passé en exemple.

L'affichage initial, dans le cas de l'annuaire du personnel ressemblerait à celà (le stype à part, bien sûr) :

Ici, nous avons supposé que l'utilisateur a saisi 'ma', choisi 'CRI' comme composante et n'a pas utilisé la discipline comme critère de recherche.
On suppose également qu'il n'y a pas d'élément de requête ayant l'attribut 'approx' à la valeur true.

La requête générée serait celle-ci :

La fiche résultat serait la suivante :

 

On voit qu'il y a un lien actif sur l'affichage au bas de chaque fiche ; c'est un lien vers un annuaire externe plus complet.

2/Résultat sous forme de tableau

S'il y avait eu trop de résultats à la requête, ici strictement plus que 3 (cf maxCard de la config), une liste intermédiaire aurait été générée. Pour celà, recherchons les personnes dont le nom commence par "ma" mais sans se limiter à la composante CRI :


Depuis cette liste, il est possible, selon l'attribut "tabToCard" de la configuration, de passer à la fiche détaillée d'un personne. Dans notre exemple, c'est en cliquant sur le nom de la personne.

3/ Utilisation de textTable

Dans le fichier de configuration, si on modifie l'attribut "type" de l'"ElemOfRequest" composante du serveur du personnel en "textTable", le formulaire obtenu sera :

On peut remarquer que la liste déroulante des composantes est devenu un zone de texte. Cela permet de laisser la saisie libre. Au lieu de chercher une valeur (dans notre exemple : "CRI") das une liste avec beaucoup d'options, il suffit de saisir le nom ou une partie du nom de la valeur que l'on cherche (par exemple "cri").
Alors la recherche compte une étape de plus. En effet, dans un premier temps, le canal va rechercher les entrées de la table dont les valeurs correspondantes à la zone de texte (suivant l'attribut searchValue). Puis le filtre est généré avec un "OU" global sur chacun des codes trouvés. Et enfin, la recherche continue normalement, pour afficher les résultats :

4/ Idées d'utilisations

La possibilité de déclarer plusieurs "directory" permet de nombreuses utilisations. Rappellons que chaque "directory" possède ses propres caractéristiques de connexion, de formulaire, d'affichage de réponse. Alors il est tout à fait possible (ce cas est fournit en exemple ici) d'avoir un "directory" pointant sur le serveur du personnel avec dans les champs du formulaire un "ElemOfRequest" type "direct" spécifiant une recherche dans les personnes n'étant pas en liste rouge et un autre "directory" sans ce champ. De là vous pouvez publier un canal avec le paramètre "serverView = persPublic" pour rechercher dans l'annuaire public et publier un canal avec le paramètre "serverView = persPrive" pour les personnes authentifiées.