sdx-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sdx-developers] SDX 3 : approche conceptuelle


From: Pierrick Brihaye
Subject: [sdx-developers] SDX 3 : approche conceptuelle
Date: Wed, 05 Mar 2003 12:19:17 +0100
User-agent: Mozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.0.1) Gecko/20020823 Netscape/7.0

Salut,

Pour les archives :-)

Je pense que vous avez tous lu, au moins les grandes lignes, les échanges du thread "Qu'est-ce que SDX ?" dans [sdx-users]. Du point de vue du développement, voici ce que ça donnerait.

Note importanten : je ne préjuge en rien d'une compatibilité/incompatiblité avec le code existant ; cette préoccupation est, pour moi, prématurée pour l'instant, en tout cas, dans son aspect global.

Voilà :

A) SDX est un gestionnaire de vues sur des documents (essentiellement XML mais pas seulement).

B) Ces vues sont générées par des transformateurs tels que les entend Cocoon (fichiers XSLT mais pas seulement).

C) J'ai, pour l'instant, identifié 5 types de vues (en fait, la 3ème vient de Fred :-) :

1) vue native des documents (stockage)
2) vue d'indexation
3) vue de jeu de résultats
4) vue de résultat
5) vue de publication

D) Toutes ces vues doivent idéalement être accessibles en lecture/écriture

E) Toutes ces vues doivent idéalement pouvoir être :

1) statiques
2) dynamiques

F) Si je me place pour l'instant dans une perspective entièrement statique, toutes ces vues doivent pouvoir prendre place dans des repositories.

En dynamique, on est assez proche du concept de générateurs Cocoon (à ceci près qu'un générateur sert a priori à lire plutôt qu'à écrire). Ci après veuillez considérer que les vues dynamiques sont confiées à des repositories... en mémoire.

G) Evidemment, on aurait un repository supplémentaire pour stocker les relations entre vues.

H) Le nombre de relations inter-vues est potentiellement illimité. On peut donc avoir N indexations pour un même document natif.

I) En principe, SDX devra savoir gérer la combinatoire relationnelle entre entre les vues "canoniques". Si un utilisateur utilise une vue, il devra s'engager à mettre en place les relations dont il a besoin. On peut bien sûr lui faciliter la tâche en lui proposant des API ad hoc.

J) il est à noter que les relations, au moins certaines d'entre elles, doivent pouvoir être *typées*. Actuellement, on a un typage "document attaché" ou "sous-document" dans les repositories de stockage. On peut imaginer des tas d'autres types : ancien état CVS, réplication DBMS, URL alternative...

K) la taglib devra proposer des API génériques de gestion du contenu des repositories. Typiquement, on pourrait avoir des trucs comme ça :

<sdx:insert>
  <sdx:from id="stockage"/>
  <sdx:pipeline src="indexation.xsl"/>
  <sdx:to id="indexation" />
</sdx:insert>

ou

<sdx:update>
  <sdx:from url="http://server/documents/mydoc.xml"/>
  <sdx:to id="stockage">
    <sdx:pipeline src="idgenerator.xsl"/>
  <sdx:to>
</sdx:update>

Note : exemples provocateurs. En fait, on a là de beaux pipelines Cocoon n'est-ce pas ?

Bien sûr, on peut aussi aliaser. Le deuxième exemple pourrait par exemple s'aliaser en <sdx:uploadDocument> ;-)

L) Les fichers de config pourraient ressembler à çà :

<sdx:application>
  <sdx:storagerepository id="storage" type="JDBC"/>
  <!-- ;-)) -->
  <sdx:indexationrepository id="indexation" type="LUCENE">
    <sdx:pipeline src="indexation.xsl" default="true"/>
  </sdx:indexationrepository>
  <sdx:resultsrepository id="results" type="MEMORY"/>
  <sdx:resultrepository id="results" type="XMLDB"/>
  <sdx:publishingrepository id="result" type="FS">
    <sdx:pipeline src="doc2html.xsl" default="true"/>
    <sdx:pipeline id="pdf" src="doc2pdf.xsl"/>
  </sdx:publishingrepository id="result" type="FS">
  <sdx:relationsrepository id="relations" type="JDBC"/>
</sdx:application>

Note : les pipelines de publication ne sont qu'une proposition. Il n'est a priori pas question de refaire une sitemap Cocoon quand on peut en profiter.

M) Ces repositories devront autant que faire se peut être génériques. idéalement, il devraient pouvoir stocker/exploiter de la structure sinon on lance une TooMuchStructuredException :-) Au développeur d'applications de fournir du contenu gérable par le type de repository qu'il aura choisi.

Les repositories auraient donc impérativement une interface insert/update/delete. Certains, en particulier le resultsrepository pourraient bénéficier d'une méhode search... et cette méthode pourrait s'interfacer avec des QueryParsers dont le rôle serait de transcrire une requête (utilisateur ou système) dans le langage de requête natif du repository (SQL, XPath, Lucene...)

Voilà. Qu'en pensez-vous ?

--
Pierrick Brihaye, informaticien
Service régional de l'Inventaire
DRAC Bretagne
mailto:address@hidden





reply via email to

[Prev in Thread] Current Thread [Next in Thread]