Modélisation
Cette section présente une sorte de première analyse de
...
Ori-Oai-Vocabulary.
...
Même
...
si
...
par
...
rapport
...
à
...
l'implémentation
...
qui
...
en
...
a
...
été
...
faite,
...
cette
...
modélisation
...
reste
...
conceptuelle,
...
elle
...
permet
...
de
...
mieux
...
appréhender
...
l'architecture
...
de
...
Ori-Oai-Vocabulary.
...
Diagramme
...
de
...
classes
...
Ce
...
diagramme
...
de
...
classes
...
se
...
veut
...
simple
...
pour
...
une
...
bonne
...
compréhension
...
de
...
l'ensemble.
...
Il
...
ne
...
présente
...
pas
...
un
...
certain
...
nombres
...
d'attributs
...
et
...
surtout
...
de
...
classes
...
qui
...
sont
...
d'ordre
...
architectural
...
(provenant
...
notamment
...
de
...
Esup-Commons).
Quelques Explications sur certaines classes
Span | ||
---|---|---|
| ||
VocabularyService |
C'est cette classe qui est exposée via WebService aux autres modules afin de permettre la consultation les différents vocabulaires. L'exposition par WebService se fait par fichiers de configuration (XFire + Spring)
Elle a en attributs une liste de VocabularyProviderManager qu'elle consulte un par un dans l'ordre lorsqu'on lui demande un vocabulaire. Si aucun vocabularyProviderManager ne peut finalement répondre favorablement à la requête, une exception est levée.
C'est cet objet qu'on propose de brancher sur un système de cache via un fichier de configuration spring (cf implémentation).
Span | ||
---|---|---|
| ||
VocabularyProviderManager |
Cette classe construit les différents vocabulaires. Ces vocabulaires ainsi construits sont exposés par VocabularyService.
Cette classe correspond à la fois à la super classe des différents VocabularyProviderManager et à une implémentation simple d'un VocabularyProviderManager : elle fournit les vocabulaires proposés par les différents VocabularyProvider qu'elle a directement en attribut. Afin d'alléger les configurations, on préfèrera plutôt utiliser directement un DynamicVocabularyProviderManager.
Span | ||
---|---|---|
| ||
DynamicVocabularyProviderManager |
Cette classe étend la classe de base VocabularyProviderManager : elle permet simplement de ne pas spécifier les VocabularyProvider en tant qu'attribut. On spécifie simplement une targetClass (VocabularyProvider) et elle récupère dynamiquement tous les VocabularyProvider déclarés dans la configuration Spring.
Span | ||
---|---|---|
| ||
RemoteVocabularyProviderManager |
Cette classe étend la classe de base VocabularyProviderManager : elle permet de se connecter à un VocabularyService pour en récupérer ses vocabulaires.
Span | ||
---|---|---|
| ||
FileBrowserVocabularyProviderManager |
Cette classe étend la classe de base VocabularyProviderManager : elle permet d'exposer les vocabulaires présent dans un répertoire.
Span | ||
---|---|---|
| ||
VocabularyProvider |
Un VocabularyProvider est un fournisseur de vocabulaires, il propose une méthode getXmlStream qui renvoie le vocabulaire produit sous format XML. Au niveau du déploiement (configuration), il peut bien sûr y avoir plusieurs instances de chaque classe de VocabularyProvider.
Chaque VocabularyProvider doit implémenter une méthode getXmlStream qui doit retourner un InputStream.
Note On pourrait envisager de finalement modifier cela et demander à retourner un String plutôt qu'un InputStream afin que cela soit serializable et donc cacheable par une config spring/ehCache ... à voir ...
_Les différents VocabularyProvider
disponibles_
Span
class term SqlProvider
Chargé de récupérer un vocabulaire via une requête SQL sur une base de données.
Span
class term LdapVocabularyProvider
Chargé de récupérer un vocabulaire via des recherches Ldap (le contenu des vocabulaires même sera sous forme de VCard).
Span
class term OOVRemoteVocabularyProvider
Chargé de récupérer un vocabulaire en appelant un autre module ORI-OAI-Vocabulary distant.
Span
class term XmlStaticVocabularyProvider
Chargé de récupérer un vocabulaire depuis un fichier statitique sur le système (dans le classpath).
Span
class term XmlEditedVocabularyProvider (non implémenté)
Chargé de récupérer un vocabulaire qui est directement éditable/modifiable par des utilisateurs depuis un module Ori-Oai-Workflow configuré pour
Note |
---|
(à étudier ...) |
Span
class term OriIndexerVocabularyProvider
Chargé de récupérer un vocabulaire dynamiquement depuis un module ORI-OAI-Indexing.
Span
class term MergingVocabularyProvider
Utilise dom4j pour fusionner des vocabulaires en fonction d'un xpath spécifique au standard Vdex. VdexMergingService est donc capable de fusionner une liste de vocabulaires en un seul.
Span
class term AlphabetVocabularyProvider
Tri et catégorise (optionnel) par ordre alphabétique un vocabulaire. En fonction d'un paramètre treeDeep, les catégories seront données avec une profondeur donnée :
Code Block |
---|
!classes.dia.png|thumbnail! h3. Quelques Explications sur certaines classes \\ {span:class=term}VocabularyService {span} {quote} C'est cette classe qui est exposée via WebService aux autres modules afin de permettre la consultation les différents vocabulaires. L'exposition par WebService se fait par fichiers de configuration (XFire + Spring) Elle a en attributs une liste de VocabularyProviderManager qu'elle consulte un par un dans l'ordre lorsqu'on lui demande un vocabulaire. Si aucun vocabularyProviderManager ne peut finalement répondre favorablement à la requête, une exception est levée. C'est cet objet qu'on propose de brancher sur un système de cache via un fichier de configuration spring (cf implémentation). {quote} {span:class=term}VocabularyProviderManager {span} {quote} Cette classe construit les différents vocabulaires. Ces vocabulaires ainsi construits sont exposés par VocabularyService. Cette classe correspond à la fois à la super classe des différents VocabularyProviderManager et à une implémentation simple d'un VocabularyProviderManager : elle fournit les vocabulaires proposés par les différents VocabularyProvider qu'elle a directement en attribut. Afin d'alléger les configurations, on préfèrera plutôt utiliser directement un DynamicVocabularyProviderManager. {quote} {span:class=term}DynamicVocabularyProviderManager {span} {quote} Cette classe étend la classe de base VocabularyProviderManager : elle permet simplement de ne pas spécifier les VocabularyProvider en tant qu'attribut. On spécifie simplement une targetClass (VocabularyProvider) et elle récupère dynamiquement tous les VocabularyProvider déclarés dans la configuration Spring. {quote} {span:class=term}RemoteVocabularyProviderManager {span} {quote} Cette classe étend la classe de base VocabularyProviderManager : elle permet de se connecter à un VocabularyService pour en récupérer ses vocabulaires. {quote} {span:class=term}FileBrowserVocabularyProviderManager {span} {quote} Cette classe étend la classe de base VocabularyProviderManager : elle permet d'exposer les vocabulaires présent dans un répertoire. {quote} {span:class=term}VocabularyProvider {span} {quote} Un VocabularyProvider est un fournisseur de vocabulaires, il propose une méthode getXmlStream qui renvoie le vocabulaire produit sous format XML. Au niveau du déploiement (configuration), il peut bien sûr y avoir plusieurs instances de chaque classe de VocabularyProvider. Chaque VocabularyProvider doit implémenter une méthode getXmlStream qui doit retourner un InputStream. {note} On pourrait envisager de finalement modifier cela et demander à retourner un String plutôt qu'un InputStream afin que cela soit serializable et donc cacheable par une config spring/ehCache ... à voir ... {note} \_Les différents VocabularyProvider disponibles\_ {span:class=term}SqlProvider {span} {quote} Chargé de récupérer un vocabulaire via une requête SQL sur une base de données. {quote} {span:class=term}LdapVocabularyProvider {span} {quote} Chargé de récupérer un vocabulaire via des recherches Ldap (le contenu des vocabulaires même sera sous forme de VCard). {quote} {span:class=term}OOVRemoteVocabularyProvider {span} {quote} Chargé de récupérer un vocabulaire en appelant un autre module ORI-OAI-Vocabulary distant. {quote} {span:class=term}XmlStaticVocabularyProvider {span} {quote} Chargé de récupérer un vocabulaire depuis un fichier statitique sur le système (dans le classpath). {quote} {span:class=term}XmlEditedVocabularyProvider (non implémenté) {span} {quote} Chargé de récupérer un vocabulaire qui est directement éditable/modifiable par des utilisateurs depuis un module Ori-Oai-Workflow configuré pour {note} (à étudier ...) {note} {quote} {span:class=term}OriIndexerVocabularyProvider {span} {quote} Chargé de récupérer un vocabulaire dynamiquement depuis un module ORI-OAI-Indexing. {quote} {span:class=term}MergingVocabularyProvider {span} {quote} Utilise dom4j pour fusionner des vocabulaires en fonction d'un xpath spécifique au standard Vdex. VdexMergingService est donc capable de fusionner une liste de vocabulaires en un seul. {quote} {span:class=term}AlphabetVocabularyProvider {span} {quote} Tri et catégorise (optionnel) par ordre alphabétique un vocabulaire. En fonction d'un paramètre treeDeep, les catégories seront données avec une profondeur donnée : {code} .... <category id="A"> .... </category> <category id="B"> .... </category> .... {code} |
Catégoriser
...
des
...
vocabulaires
...
permet
...
par
...
exemple
...
de
...
lister
...
dans
...
le
...
moteur
...
de
...
recherche
...
les
...
auteurs
...
sous
...
une
...
forme
...
de
...
type
...
Annuaire
...
(liste
...
des
...
premières
...
lettres
...
des
...
auteurs
...
en
...
premier
...
niveau,
...
puis
...
listes
...
des
...
auteurs
...
en
...
deuxième
...
niveau
...
par
...
exemple).
...