Vocabulary - Modélisation

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


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

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.

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.

RemoteVocabularyProviderManager

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

FileBrowserVocabularyProviderManager

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

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.

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_
SqlProvider

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

LdapVocabularyProvider

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

OOVRemoteVocabularyProvider

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

XmlStaticVocabularyProvider

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

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

(à étudier ...)

OriIndexerVocabularyProvider

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

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.

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 :

....
			<category id="A">
			    ....
			</category>
			<category id="B">
			    ....
			</category>
			    ....

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

  • No labels