Page History

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

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).

Image Added

Quelques Explications sur certaines classes


Span
classterm
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
classterm
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
classterm
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
classterm
RemoteVocabularyProviderManager

Cette classe étend la classe de base VocabularyProviderManager : elle permet de se connecter à un VocabularyService pour en récupérer ses vocabulaires.

Span
classterm
FileBrowserVocabularyProviderManager

Cette classe étend la classe de base VocabularyProviderManager : elle permet d'exposer les vocabulaires présent dans un répertoire.

Span
classterm
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
classterm
SqlProvider

Chargé de récupérer un vocabulaire via une requête SQL sur une base de données.

Span
classterm
LdapVocabularyProvider

Chargé de récupérer un vocabulaire via des recherches Ldap (le contenu des vocabulaires même sera sous forme de VCard).

Span
classterm
OOVRemoteVocabularyProvider

Chargé de récupérer un vocabulaire en appelant un autre module ORI-OAI-Vocabulary distant.

Span
classterm
XmlStaticVocabularyProvider

Chargé de récupérer un vocabulaire depuis un fichier statitique sur le système (dans le classpath).

Span
classterm
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
classterm
OriIndexerVocabularyProvider

Chargé de récupérer un vocabulaire dynamiquement depuis un module ORI-OAI-Indexing.

Span
classterm
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
classterm
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).

...