Date: Fri, 29 Mar 2024 16:22:36 +0100 (CET) Message-ID: <1814534874.83.1711725756592@orioai-1.uphf.fr> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_82_1156651258.1711725756591" ------=_Part_82_1156651258.1711725756591 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Tous les composants d=C3=A9velopp=C3=A9s dans ORI-OAI reposent sur les m= =C3=AAmes technologies:
Java
Comme langage de programmation
http://www.java.com
Spring
Spring est un framework de d=C3=A9veloppement de haut niveau dans la mes= ure o=C3=B9 il environnemente et dirige l'architecture g=C3=A9n=C3=A9rale d= e l'ensemble de l'application. On notera quelques carct=C3=A9ristiques de S= pring qui nous ont fait choisir Spring comme Framework principal de l'appli= cation.
Il est le choix de toute la communaut=C3=A9 ESUP pour les pr=C3=A9sents = et futurs d=C3=A9veloppements. Il est pens=C3=A9 pour int=C3=A9grer directe= ment un certain nombre d'autres frameworks comme hibernate (mais aussi OSWo= rkflow, Compass/Luc=C3=A8ne, ...). Il rend les applications souples et para= m=C3=A9trables. Il permet de s=C3=A9parer les t=C3=A2ches de d=C3=A9veloppe= ment via un d=C3=A9veloppement par couche. Il permet d'impl=C3=A9menter des= architectures de type Objet mod=C3=A9lisable usuellement via UML. Il propo= se de tirer parti de la programmation par aspect pour la gestion des transa= ctions de BD, via des modules tr=C3=A8s sophistiqu=C3=A9s comme EhCache pou= r le cache, Acegi pour la s=C3=A9curit=C3=A9 (autentification et autorisati= on), et enfin directement en ins=C3=A9rant du code m=C3=A9tier suppl=C3=A9m= entaire (pour r=C3=A9aliser un outil de statistiques par exemple ...).
<= a href=3D"http://www.springframework.org" class=3D"external-link" rel=3D"no= follow">http://www.springframework.org
XML
Comme norme d'=C3=A9change
http://www.w3.org/XML
Subversion
Pour le t=C3=A9l=C3=A9chargement des sources des modules
http= ://subversion.tigris.org/
http://fr.wik= ipedia.org/wiki/Subversion_(logiciel)
Certains composants utilisent des technologies sp=C3=A9cifiques:
OsWorkflow
OSWorkflow est un produit OpenSource d'OpenSymphony.
OSWorkflow est une bonne solution de Workflow dans le monde de l'OpenSou= rce. On constate qu'il est utilis=C3=A9 dans diff=C3=A9rents produits et qu= 'il est choisi par des projets +/- similaires =C3=A0 ORI.
Une de ses principales sp=C3=A9cificit=C3=A9s est de fonctionner de mani= =C3=A8re autonome. La servlet d'exemple fournie par d=C3=A9faut et qui tour= ne sans aucune configuration le montre bien, OSWorkflow peut fonctionner se= ul. Il est ais=C3=A9 de pluguer OSWorkflow =C3=A0 une application d=C3=A9j= =C3=A0 existante. OSWorkflow peut ainsi =C3=AAtre vu comme un composant r= =C3=A9ellement ind=C3=A9pendant dans ORI-OAI-Workflow. La possibilit=C3=A9 = qu'il offre de le commander via de simples appels WEBService (SOAP) le prou= ve =C3=A9galement.
OSWorkflow g=C3=A8re de mani=C3=A8re autonome tout ce qui concerne le Wo= rkflow. Les Workflows (diagrammes =C3=A9tats-transitions) se configurent vi= a un fichier XML. Une Application Graphique Java peut permettre de cr=C3=A9= er/modifier des Workflows (attention : cela reste cependant avant tout exp= =C3=A9rimental). Les Workflows peuvent =C3=AAtre relativement complexes. Il= s permettent d'appeller des scripts Java BeanShells lors d'une transition (= ou mieux encore des m=C3=A9thodes d=C3=A9finies dans des "beans spring", et= c'est ce qui nous int=C3=A9resse ici), de faire des splits/joins, de mettr= e des conditions de tous types sur des transitions (par exemple des conditi= ons sur l'appartenance d'un utilisateur =C3=A0 un r=C3=B4le), de d=C3=A9fin= ir des permissions en fonction des =C3=A9tats, etc.
Ind=C3=A9pendant, OSWorkflow peut s'utiliser avec sa propre base de donn= =C3=A9es (en tout cas, il g=C3=A8re ses propres tables). L'=C3=A9dition des= workflows se fait de mani=C3=A8re ind=C3=A9pendante du reste de l'applicat= ion, en =C3=A9ditant le fichier XML OSWorkflow avec un simple =C3=A9diteur = texte. L'ind=C3=A9pendance de OsWorkflow ne g=C3=AAne pas son int=C3=A9grat= ion compl=C3=A8te dans le module ORI-OAI-Workflow : on utilise OsWorkflow c= onjointement =C3=A0 spring, ce qui permet d'utiliser des m=C3=A9thodes sp= =C3=A9cifiques au module ORI-OAI-Workflow en tant que fonctions et conditio= ns dans des workflows OsWorkflow. Aussi les possibilit=C3=A9s du module ORI= -OAI-Workflow en mati=C3=A8re de conditions ou de fonctions =C3=A0 appeler = lors de transitions sont facilement extensibles et cela fait partie des= gros points forts de ce module.
Esup-Commons
Esup-Commons permet de mettre en place (et de fa=C3=A7on standard par ra= pport aux d=C3=A9veloppements Esup) une architecture bas=C3=A9e sur Spring-= Hibernate-JSF (le framework g=C3=A9n=C3=A9ral de l'application =C3=A9tant S= pring : conteneur l=C3=A9ger), packag=C3=A9e au mieux, pens=C3=A9e pour les= mises =C3=A0 jours futures, pouvant tourner =C3=A0 la fois (avec le m=C3= =AAme code) en mode portlet et en mode standalone.
Esup Commons est, au vue d'une application comme Ori-Oai-Workflow, une pro= position d'architecture repr=C3=A9sentant des facilit=C3=A9s de d=C3=A9velo= ppement et d=C3=A9ploiement. Nous utilisons dans Ori-Oai-Workflow certaines= fonctionnalit=C3=A9s de Esup Commons.Ainsi la gestion des exceptions et l'utilisation de Hibernate sont g=C3= =A9r=C3=A9es via Esup Commons, tout comme les envois de message via SMTP. P= ar contre l'authentification est par exemple g=C3=A9r=C3=A9e par Acegy Secu= rity et non Esup Commons.
http://www.esup-port= ail.org/display/PROJCOMMONS
JSF
Bien que l'accent concernant l'ergonomie et l'IHM soit d'abord mis sur l= es formulaires d'=C3=A9dition, on souhaite avoir une IHM efficace tout le l= ong de l'application. JSF se couple parfaitement avec Spring.
L'impl=C3=A9mentation choisi de JSF est MyFaces qui semble =C3=AAtre l'imp= l=C3=A9mentation OpenSource de r=C3=A9f=C3=A9rence. On utilise cependant d'= autres librairies JSF comme Jenia par exemple.L'utilisation de JSF via Esup Commons nous permet d'avoir un code unique= pour les 2 versions d''Ori-Oai-Workflow : mode portlet et mode standalone.=
http://java.sun.com/javaee/javaserverfaces/http://myfaces.apache.org/
http://www.jenia.org/
Base de donn=C3=A9es SQL
Le choix a =C3=A9t=C3=A9 fait d'utiliser une Base de Donn=C3=A9es SQL tr= ansactionnelle unique pour l'ensemble de l'application. Pour manipuler la b= ase de donn=C3=A9es depuis l'application, le choix s'est port=C3=A9 sur Hib= ernate qui s'int=C3=A8gre bien dans Spring. Il est simple =C3=A0 configurer= et =C3=A0 utiliser notamment lorsqu'il n'y a pas de BD pr=C3=A9-existante = (c'est =C3=A0 dire lorsque la structuration de la base de donn=C3=A9es est = con=C3=A7ue pour les besoins de l'application d=C3=A9velopp=C3=A9e, comme c= 'est le cas ici).
Hibernate
Framework de mapping objet-relationnel (MySql)
http://www.hiberna= te.org/
http://www-fr.mysql.com/
Acegi Security
Acegi Security est la solution en terme de s=C3=A9curit=C3=A9 int=C3=A9g= r=C3=A9e dans une application Spring.
Acegi Security est un produit complexe qui couvre un grand nombre d'aspe= cts autour de la s=C3=A9curit=C3=A9 : "authentication " + "authorisation". = Il permet surtout de s=C3=A9curiser en fonction des r=C3=B4les de l'utilisa= teur les appels =C3=A0 des m=C3=A9thodes, les urls.
ORI-OAI-Workflow utilise Acegi Security pour :
- la gestion de l'authentification.,
- la gestion de RBAC (Role Based Access Control) qui est le Design Patter= n d=C3=A9crivant le fait que l'on assigne les permissions =C3=A0 des r=C3= =B4les et non directement aux "Principals" (~ Groupes et Utilisateurs), cf = la
- et donc la gestion des autorisations.
Ainsi Acegi a =C3=A9t=C3=A9 utilis=C3=A9 comme base pour impl=C3=A9menter = une solution de RBAC.
http://www.acegisecurity.org/
XFire
Pour la communication entre Spring et Orbeon OPS, ainsi que la communica= tion inter-modules
http://xfire.codehaus.org
Conteneur - uPortal
ORI-OAI-Workflow peut fonctionner dans un ESUP-Portail. Il est d=C3=A9cl= in=C3=A9 sous forme de JSR168. ORI-OAI-Workflow peut =C3=A9galement fonctio= nner sans ESUP, il fonctionne alors de mani=C3=A8re "standalone" en tant qu= e servlet.
Ldap - CAS - Shibboleth
Dans ORI-OAI-Workflow, la gestion d'utilisateurs/groupes peut se faire v= ia un ldap (et donc via un openldap/phpldapadmin local par exemple si le sy= st=C3=A8me d'information dans lequel ORI-OAI-Workflow se d=C3=A9ploie n'a p= as de syst=C3=A8me de gestion de son ldap) ou via shibboleth.
La r=C3=A9cup=C3=A9ration des utilisateurs et des groupes par ORI-OAI-Work= flow sur le ldap ou via shibboleth est =C3=A0 configurer dans des fichiers = de configuration. Il est =C3=A0 noter que ORI-OAI-Workflow est capable de d= =C3=A9finir des nouveaux groupes "virtuels" via des filtres Ldap configur= =C3=A9es dans le module ORI-OAI-Workflow (ce qui peut s'av=C3=A9rer pratiqu= e).
L'authentification peut se faire via LDAP, CAS ou Shibboleth.
Compass
Technologies communes
Ainsi que toutes les technologies communes =C3=A0 tous les modules.
ORI-OAI-Workflow est g=C3=A9r=C3=A9 par le framework Spring et r=C3=A9po=
nd en JSR168 (Portlet) ou mode standalone (Servlet). Il contient toute la l=
ogique applicative. Il fait appel =C3=A0 OSWorkflow pour afficher les infor=
mations relatives aux =C3=A9tats dans lesquels se trouvent les workflows et=
pour proc=C3=A9der =C3=A0 des actions sur les =C3=A9tats (transitions). Il=
propose ainsi =C3=A0 l'utilisateur certaines actions sur les entr=C3=A9es =
de M=C3=A9taDonn=C3=A9es qu'il liste : faire une transition sur le workflow=
correspondant =C3=A0 l'entr=C3=A9e, =C3=A9diter la fiche XML de l'entr=C3=
=A9e (et donc appeler un formulaire Orbeon Forms), etc. Il int=C3=A8gre =C3=
=A9galement compl=C3=A8tement OSWorkflow.
OSWorkflow g=C3=A8re tout ce qui est relatif au Workflow a proprement parl=
=C3=A9. il contient et propose les informations relatives aux =C3=A9tats de=
s workflows, les transitions possibles, les permissions que l'utilisateur c=
ourant a par rapport au r=C3=B4le dans lequel il est, etc. Il appelle la pa=
rtie principale lors des conditions et fonctions param=C3=A9tr=C3=A9es dans=
les workflow.
Les formulaires d'=C3=A9dition propos=C3=A9s =C3=A0 l'utilisateur dans O= RI-OAI-Workflow correspondent =C3=A0 une partie tr=C3=A8s importante de ORI= -OAI-Workflow dans le sens o=C3=B9 c'est la partie la plus visible de ORI-O= AI-Workflow pour l'utilisateur final. Ces formulaires peuvent se d=C3=A9cli= ner selon les diff=C3=A9rents sch=C3=A9mas (DC, LOM, LOM-FR, ...), selon le= s diff=C3=A9rents r=C3=B4les des diff=C3=A9rents utilisateurs. Tr=C3=A8s so= uples, ils acceptent un certain nombre de param=C3=A8tres qui diff=C3=A8ren= t selon les usages. On pense notamment aux taxonomies/vocabulaires utilis= =C3=A9s lors de la saisie via des widgets =C3=A0 choix multiple. Enfin ils = sont ergonomiques et permettent une saisie efficace des fiches XML de m=C3= =A9tadonn=C3=A9es : auto-compl=C3=A9tion, ajout/suppresion instantan=C3=A9 = de champs, bref les forumlaires sont des formulaires dynamiques (Ajax).
Le choix a =C3=A9t=C3=A9 d'opter pour un standard W3C XForms qui permet = de cr=C3=A9er des formulaires ergonomiques, dynamiques, .... cela via un la= ngage XML. Vu que XForms n'est pas support=C3=A9 nativement par les navigat= eurs et que les impl=C3=A9mentations de plugins sur les navigateurs ne sont= pas encore tout =C3=A0 fait au point, et enfin pour des questions de soupl= esse, la solution propos=C3=A9e par Orbeon, Orbeon Forms a =C3=A9t=C3=A9 re= tenue. Celle-ci permet entre autre de g=C3=A9n=C3=A9rer =C3=A0 partir de fo= rmulaires XForms une interface Html/Ajax interpr=C3=A9table par les princip= aux navigateurs clients du march=C3=A9.
Orbeon est =C3=A0 l'image de Cocoon un framework complet de d=C3=A9velop= pement qui tire parti, de mani=C3=A8re extr=C3=AAmement ing=C3=A9nieuse, de= la technique de transformation XML pour concevoir des applications complex= es de mani=C3=A8re efficace. On a choisi de retenir Orbeon Forms pour la sa= isie des m=C3=A9tadonn=C3=A9es et donc pour sa qualit=C3=A9 premi=C3=A8re e= t sp=C3=A9cifique de technologie de formulaires.
http://www.orbeon.com/=
http://fr.wikipedia.org/wiki= /Asynchronous_JavaScript_And_XML
http://www.w3.org/MarkUp/= Forms/
Technologies communes
Ainsi que toutes les technologies communes =C3=A0 tous les modules.
Le module ORI-OAI-MD-Editor correspond =C3=A0 un XForms interpr=C3=A9t= =C3=A9 par Orbeon Forms pour g=C3=A9n=C3=A9rer une interface Ajax =C3=A0 l'= utilisateur. Il ne contient pas de logique applicative. Il recoit un XML et= en renvoie un. Pour ce faire un protocole de communication sp=C3=A9cifique= (s'appuyant sur des Web Services SOAP) est cependant mis au point pour per= mettre =C3=A0 Orbeon et ori-oai-workflow (spring) d'interagir ensemble.
Protocole d'=C3=A9change des fiches de m=C3=A9tadonn=C3=A9es
http://www.openarchives.org/OAI/openarchivespr= otocol.html
OCLC OAIHarvester2
Cette application est bas=C3=A9e sur le projet OAIHarvester2 d'OCLC Onli= ne Computer Library Center, qui fournit les fonctions de requ=C3=AAtes OAI-= PMH.
Notes :
- limites et adaptation de l'API OAICat :=20
- org.oclc.oai.server.verb.ListRecords : Les champs from et until sont va= lid=C3=A9s pour une longueur entre 0 et 10, ce qui force =C3=A0 utiliser un= e granularit=C3=A9 YYYY-MM-DD.
http:/= /www.oclc.org/research/software/oai/harvester2.htm
Quartz
La gestion des t=C3=A2ches programm=C3=A9es est r=C3=A9alis=C3=A9e gr=C3= =A2ce au projet open source Quartz d'OpenSymphony.
http://= www.opensymphony.com/quartz/
Struts-Tiles
Pour les interfaces graphiques
http://struts.apa= che.org/1.x/struts-tiles/
Codehaus XFire
Pour l'interaction entre les modules, des Web Services sont mis en oeuvr= e =C3=A0 l'aide du framework Codehaus XFire.
http://xfire.codehaus.= org/
Technologies communes
Ainsi que toutes les technologies communes =C3=A0 tous les modules.
Protocole d'=C3=A9change des fiches de m=C3=A9tadonn=C3=A9es
http://www.openarchives.org/OAI/openarchivespr= otocol.html
OCLC OAICAT
Le module utilise l'API OAICat d'OCLC, qui fournit une servlet r=C3=A9po= ndant aux six verbes OAI. Cet API permet de constituer des enregistrements = OAI depuis diff=C3=A9rents types de resources : JDBC, XML, etc... Elle offr= e un Framework qui aide =C3=A9galement =C3=A0 g=C3=A9rer le controle de flu= x par resumptionToken.
http://www.oclc.org/r= esearch/software/oai/cat.htm
Technologies communes
Ainsi que toutes les technologies communes =C3=A0 tous les modules.
Lucene est un moteur de recherche appartenant =C3=A0 la fondation apache= permettant l'indexation et la recherche de texte. Il est enti=C3=A8rement = =C3=A9crit en langage Java. La version utilis=C3=A9e dans cette version du = module d'indexation est la 2.3.2.
http://lucene.= apache.org/java/docs/index.html
LIUS
LIUS, qui signifie Lucene Index Update and Search, est un framework d'in= dexation bas=C3=A9 sur le projet Jakarta Lucene. Il a =C3=A9t=C3=A9 d=C3=A9= velopp=C3=A9 =C3=A0 partir d'un ensemble de technologies JAVA et d'applicat= ions enti=C3=A8rement "open source".
LIUS ajoute =C3=A0 Lucene plusieurs fonctionnalit=C3=A9s d'indexation de t= ype de documents tel que : Ms Word, Ms Excel, Ms PowerPoint, RTF, PDF, XML,= HTML, TXT, la suite Open Office et les JavaBeans. Cet outil permet =C3=A9g= alement d'effectuer une indexation mixte, qui a pour but d'int=C3=A9grer to= ut le contenu d'un r=C3=A9pertoire sous la m=C3=AAme occurrence. Ceci est t= r=C3=A8s utile lorsque l'utilisateur veut indexer des m=C3=A9tadonn=C3=A9es= en XML et le texte int=C3=A9gral en PDF ou dans un autre format. Ceci perm= et par la suite d'effectuer par exemple des recherches sur le titre, auteur= et le texte int=C3=A9gral en m=C3=AAme temps.
Toute la configuration de l'indexation, telle que le type de fichiers =C3= =A0 indexer ou encore les champs par exemple, ainsi que la recherche sont d= =C3=A9finies dans un fichier XML, il ne reste plus qu'=C3=A0 =C3=A9crire le= code pour ex=C3=A9cuter l'indexation ou la recherche.
http://= www.bibl.ulaval.ca/lius/
http://sourceforge.net/proj= ects/lius/
Luke
Luke est une interface graphique permettant de visualiser un index. Il p= eut =C3=AAtre utile en tant qu'outil de diagnostic de ce dernier.
= http://www.getopt.org/luke/
Ehcache
Il s'agit d'un gestionnaire de cache en Java. Il est capable de stocker = des donn=C3=A9es en m=C3=A9moire vive ou sur le disque. Ehcache est utlis= =C3=A9 dans le cadre du projet ORI-OAI-Indexing en ce qui concerne la gesti= on des diff=C3=A9rents caches utiles =C3=A0 l'optimisation de la recherche = dans l'index. La version de la librairie utilis=C3=A9e dans le module d'ind= exation est la 1.3.
http://ehcache.sourceforge.net/
Quartz
Cette application cr=C3=A9=C3=A9e par OpenSymphony est utilis=C3=A9e dan= s le cadre d'Ori-Oai-Indexing pour la t=C3=A2che planifi=C3=A9e de gestion = des liens morts qui se d=C3=A9roule g=C3=A9n=C3=A9ralement la nuit. Quartz = permet de cr=C3=A9er des t=C3=A2ches planifi=C3=A9es tr=C3=A8s simples ou p= lus complexes.
http://www.opensymphony.com/quartz/
Crawler web
Le crawler utilis=C3=A9 par Ori-Oai-Indexing permet de visiter les pages= web contenant des liens vers des documents plein texte. Il s'agit d'un cra= wler d=C3=A9velopp=C3=A9 par Java qui pr=C3=A9sente divers avantages : il e= st facile d'utilisation, son int=C3=A9gration est simple. Il est =C3=A9gale= ment possible de limiter le nombre de liens visit=C3=A9s ou la profondeur d= u crawling. Enfin ce crawler g=C3=A8re les redirections.
La version de crawler web utilis=C3=A9e par Ori-Oai-indexing est la 1.3 da= tant de juin 2009.
https://crawler.dev.java.net/
Technologies communes
Ainsi que toutes les technologies communes =C3=A0 tous les modules.
Utilis=C3=A9 pour la pr=C3=A9sentation
http://www.springfram= ework.org
Lucene
Pour le format de requ=C3=AAtes
http://lucene= .apache.org/java/docs/index.html
XSLT
Pour la pr=C3=A9sentation des fiches de m=C3=A9tadonn=C3=A9es
htt= p://www.w3.org/TR/xslt
Technologies communes
Ainsi que toutes les technologies communes =C3=A0 tous les modules.
Comme norme utilis=C3=A9 pour la gestion des vocabulaires et l'=C3=A9cha= nge des vocabulaires entre modules
http://www.imsglob= al.org/vdex/index.html
Esup-Commons
Framework principal pour Ori-Oai-Vocabulary (ce qui induit diff=C3=A9ren= ts choix technologiques comme Spring bien s=C3=BBr, mais aussi XFire, EhCac= he, etc.)
http://www.esup-portail.org/display/= PROJCOMMONS
Technologies communes
Ainsi que toutes les technologies communes =C3=A0 tous les modules.
Ce composant est int=C3=A9gr=C3=A9 =C3=A0 la solution Open Source d'ECM = (Enterprise Content Management) Nuxeo DM
http://www.nuxeo.com/
Technologies communes
Ainsi que toutes les technologies communes =C3=A0 tous les modules.