Vous êtes sur la page 1sur 78

Aspectos tcnicos de DSpace

sedici.unlp.edu.ar

Contenido

Arquitectura Modelo de datos Estructura del proyecto Maven como gestor de dependencias Comando dspace a XMLUI Introduccin D I! Cocoon! "emas! Aspectos
o

Arquitectura de DSpace

Arquitectura de DSpace

#uente$ %ttps$&&'i(i.duraspace.org&display&D)D*C+,&Arc%itecture

Arquitectura de DSpace
Cada capa o-rece servicios a la capa superior por medio de A.Is! y utili/a los servicios de la capa in-erior El cdigo -uente se organi/a en paquetes que representan esta arquitectura en capas$

org.dspace.app org.dspace org.dspace.storage

Capa de aplicacin Capa de lgica del negocio Capa de almacenamiento

Arquitectura de DSpace Capa de almacenamiento


Interaccin con la 0ase de datos Items y sus metadatos .ersonas y grupos In-ormacin de autori/acin "ra0a1os en curso 2'or(-lo'3 Indices de 04squeda y e5ploracin

Arquitectura de DSpace Capa de almacenamiento


Almacenamiento de 0itstreams Local$ el almacenamiento se reali/a en el sistema de arc%ivos local al servidor en el que -unciona la aplicacin )torage esource 6ro(er 2) 63$ permite tener un sistema de arc%ivos distri0uido

Arquitectura de DSpace Capa de lgica de negocios


*-rece Administracin 64squeda E5ploracin 7estin de usuarios y grupos Autori/acin Carga de documentos 8or(-lo' 9andle manager A0straccin en Comunidades! Colecciones e Items

Arquitectura de DSpace Capa de aplicacin


Con1unto de mdulos que permiten la interaccin con el mundo e5terior Aplicacin 'e0$ :).UI y XMLUI *AI;.M9 Data .rovider Estad<sticas Importar&E5portar Media#ilter

Modelo de datos

Modelo de Datos Organizacin de contenidos

#uente$ %ttps$&&'i(i.duraspace.org&display&D)D*C+,&#unctional=*vervie'

Modelo de datos Organizacin de contenidos


Caracter<sticas$ Las comunidades pueden contener su0; comunidades o colecciones! pero no <tems Las colecciones slo pueden contener <tems Un <tem pertenece a una sola coleccin! pero puede estar asociado a otras colecciones

Modelo de datos Organizacin del contenido


>enta1as$ .ermite esta0lecer restricciones de acceso y modi-icacin espec<-icos para cada nivel .ermite plantear un esquema navegacional de -orma simple Desventa1as$ *0liga a crear y mantener una estructura est?tica "iende a generar estructuras redundantes

Modelo de datos Archivos

#uente$ %ttps$&&'i(i.duraspace.org&display&D)D*C+,&#unctional=*vervie'

Modelo de datos Archivos


Los arc%ivos se representan como 6itstreams Los 6itstream contienen in-ormacin de validacin 2c%ec(sum3! descriptiva! y de preservacin 2-ormato y nivel de soporte del -ormato3

Modelo de datos Archivos


Los arc%ivos se agrupan en 6undles! seg4n su naturale/a * I7I@AL$ arc%ivos originales su0idos por el usuario "EX"$ arc%ivos de te5to e5tra<do de -orma autom?tica a partir de los arc%ivos cargados en el 6undle * I7I@AL LICE@)E$ arc%ivos de licencia asociados al <tem

Estructura del proyecto

Estructura del proyecto


Un proyecto principal 2dspace-parent3 con m4ltiples su0proyectos! en varios niveles$ Un su0proyecto por mdulo Un su0proyecto especial para la generacin del instalador$ dspace
o dspace;parent o dspace;5mlui o dspace;5mlui;api o dspace;5mlui;'e0app

Estructura del proyecto


La relacin entre proyectos se mantiene con Maven verticalmente entre proyectos y su0proyectos! con-igurando mdulos

%ori/ontalmente entre proyectos no emparentados! mediante dependendencias

Estructura del proyecto


"res tipos de proyectos y su0proyectos$ Agrupamiento de mdulos 2no genera arc%ivos3 Li0rer<as 2arc%ivos 1ar3 Aplicaciones 'e0 2arc%ivos 'ar3 )e usan en$ Directorio de li0rer<as 2usado en el classpat%3 *verlay de aplicaciones 'e0

Maven
7estin de dependencias

Maven
Maven es responsa0le de la compilacin y empaquetado 2generacin de 1ar o 'ar3 El Reactor de Maven es un componente que lista y ordena los proyectos a procesar. Este orden de procesamiento se determina seg4n las dependencias entre proyectos

Maven POM
Cada proyecto de-ine un arc%ivo descriptor denominado .*M 2pom.5ml3 En el .*M 2.ro1ect *01ect Model3 se especi-ica toda la in-ormacin asociada al proyecto$
Descriptiva$ grupo! id! descripcin! autores! etc Dependencias$ listado de proyectos y sus respectivas versiones O !etivos$ con-iguracin espec<-ica para cada etapa de procesamiento 2compilacin! pre; empaquetado! empaquetado! etc3

Maven POM
"am0iAn permite de-inir$ Plugins$ componentes independientes que agregan -unciones so0re los proyectos "epositorios$ u0icacin de respositorios para descarga de dependencias Per#iles$ permite esta0lecer par?metros de con-iguracin a demanda 2seg4n alg4n criterio de activacin3 Mdulos$ de-inicin de su0proyectos $icencia del proyecto

Maven %erencia
Los .*M %eredan algunos elementos de con-iguracin de un .*M )i no se de-ine padre! impl<citamente se %ereda de Super POM Esto permite centrali/ar in-ormacin como$ dependencias desarrolladores plugins %a0ilitados y su con-iguracin recursos 2de-ine como tratarlos3

Maven E!emplo con &M$'()*e app


Identi-icacin y descripcin del proyecto
BgroupIdCorg.dspaceB&groupIdC Barti-actIdCdspace;5mlui;'e0appB&arti-actIdC Bpac(agingC'arB&pac(agingC BnameCD)pace XML;UI 2Mana(in3 $$ 8e0 Application esourcesB&nameC BurlC%ttp$&&pro1ects.dspace.org&dspace;5mlui&dspace;5mlui;'e0appB&urlC BdescriptionC D)pace&Mana(in XML;UI 6ased 8e0 Application using t%e Cocoon and 8ing -rame'or(s B&descriptionC

Maven E!emplo con &M$'()*e app


De-inicin del .*M padre BparentC BgroupIdCorg.dspaceB&groupIdC Barti-actIdCdspace;5mluiB&arti-actIdC BversionC+.,.DB&versionC Brelative.at%C..B&relative.at%C B&parentC

Maven E!emplo con &M$'()*e app


Listado de dependencias BdependenciesC <!-- DSpace XMLUI API --> BdependencyC BgroupIdCorg.dspaceB&groupIdC Barti-actIdCdspace;5mlui;apiB&arti-actIdC B&dependencyC B&dependenciesC

Maven Compilacin y empaquetado


Compilar y empaquetar$ mvn package )e anali/a el pom.5ml u0icado en el directorio de tra0a1o y se agrega al Reactor )i %ay mdulos de-inidos! se incluyen en la lista de proyectos del Reactor Luego de revisados todos los su0proyectos! el Reactor esta0lece el orden de compilacin 0asado en la de-inicin de las dependencias

Maven Compilacin y empaquetado


)e e1ecuta el empaquetado so0re cada uno de los proyectos del Reactor! en el orden esta0lecido. .ara cada proyecto se descargan todas las dependencias necesarias desde alg4n repositorio de Maven .ara cada proyecto se crea un directorio target que contiene los arc%ivos compilados y el empaquetado 2arc%ivos 1ar o 'ar3

Maven Overlay de proyectos


9ay overlay cuando una aplicacin 'e0 2se empaqueta como ar3 tiene dependencia de otra aplicacin 'e0. *verlay es la !me"cla! de los arc%ivos y directorios entre dos aplicaciones 'e0! respetando un orden de prioridades 2con-igura0le3

Maven Overlay de proyectos


My*e App inde5.1sp image.png

Depende de

+ase*e App inde5.1sp ot%er;image.png

,inal*e App inde5.1sp image.png ot%er;image.png

Maven Overlay de proyectos


.ermite Ee5tenderE una aplicacin 'e0! creando o rede-iniendo slo los elementos de interAs Maven permite con-igurar e5pl<citamente el orden en el que se reali/ar? el overlay y quA recursos de0en considerarse en el proceso

Comando dspace

Comando dspace
)cript s%ell 2#!$%&n$s'3 Inicia una nueva instancia de la :>M Invoca el mAtodo ma&n() de la clase org*dspace*app*launc'er*Scr&ptLaunc'er eenv<a los par?metros de la l<nea de comandos a la clase )criptLaunc%er Utili/a sus propios par?metros de tamaFo de pila y .erm7en )e incluye el directorio Gdspace.dirH&li0 en el classpat%

Comando dspace Ordenes disponi les


El primer par?metro que se pasa es la rden que de0e e1ecutarse 2e1.$ curate! create; administrator! dsrun! etc.3 Los siguientes par?metros dependen de la rden invocada Las rdenes se con-iguran desde el arc%ivo launc%er.5ml! donde se especi-ican$

nom0re de la orden clase que de0e invocarse

Comando dspace Orden- curate


E1ecuta una Ecuration tas(E para reali/ar alg4n tipo de an?lisis o modi-icacin so0re los <tems .uede aplicarse so0re$ epositorio completo Una comunidad espec<-ica Una coleccin espec<-ica Un <tem espec<-ico

Comando dspace Orden- curate


E1emplos de curation tas(s >eri-icacin de lin(s muertos >alidaciones de integridad de datos An?lisis de -ormatos de arc%ivos usados An?lisis de los arc%ivos en 0usca de virus

Comando dspace Orden- create)administrator


)e usa para crear un usuario Administrador en el sistema De0e invocarse luego de la instalacin para crear el primer usuario en el sistema 2no puede %a0er ning4n administrador %asta que no se %alla e1ecutado esta orden al menos una ve/3

Comando dspace Orden- dsrun


E1ecuta una clase parametri/a0le en el momento de la invocacin

La clase a invocar de0e de-inir un mAtodo main23

.ermite de-inir cualquier tipo de clase para luego e1ecutarlas desde la l<nea de comandos

Comando dspace Orden- em argo)li#ter


evisa los <tems que tienen -ec%a de -in de em0argo y levanta el em%argo

El metadato con la -ec%a de -in de em0argo es con-igura0le


De0e e1ecutarse con cierta -recuencia

Comando dspace Ordenes para estad.sticas


)e utili/an para recopilar in-ormacin estad<stica de acceso! descargas! etc.

)e reali/a un an?lisis de los logs de D)pace

E5isten m4ltiples comandos asociados$ stat; general! stat;initial! stat;mont%ly! stat;report; general! stats;utils! etc

Comando dspace Orden- update)discovery)inde/

Actuali/a el <ndice de Apac%e )olr )e utili/a cuando es necesario reinde5ar todo el repositorio

(ntroduccin a &M$'(
D I! cocoon! temas y aspectos

(ntroduccin a &M$'(
XMLUI 2a(a Mana(in3 es la inter-a/ de usuario 0asada en Cocoon #rame'or( Modelo en capas$ Estilos$ loo( I -eel 2css e im?genes3 0emas$ X)L" para generar X9"ML Aspectos$ uso de clases 1ava 2o X)L"3 para manipular el contenido de una p?gina

(ntroduccin a &M$'(
Modelo en capas .ermite personali/ar la aplicacin en distintos niveles seg4n$ @ecesidad Capacidad tAcnica En la mayor<a de los casos solo se personali/a la capa de Estilos

(ntroduccin a &M$'(
"res componentes principales$ Documentos D I Aspectos "emas Los Aspectos modi-ican el documento D I! luego el "ema lo trans-orma al X9"ML -inal

(ntroduccin a &M$'( Principales componentes


D"( Schema es una representacin a0stracta de una p?gina del repositorio Contiene toda la in-ormacin 2en XML3 necesaria para renderi/ar una p?gina 2estructura y metadatos3 Es la EsalidaE de los aspectos 2en la capa de Aspectos3 y la EentradaE para el "ema 2en la capa de "emas3

(ntroduccin a &M$'( Principales componentes


D"( Schema- estructura 0ien de-inida
o +OD1$

cuerpo de la p?gina a renderi/ar. Los temas procesan el 0ody para generar el X9"ML -inal o OP0(O2S$ opciones de men4 disponi0les. .ermite que los aspectos agreguen opciones de men4. .arte del tema tam0iAn procesa esta seccin o ME0A$ meta;in-ormacin so0re la p?gina o userMeta$ in-ormacin so0re el usuario logueado 2o annimo3 o pageMeta$ in-ormacin so0re la p?gina a renderi/ar 2%o1as de estilos! 1avascripts! varia0les de control3 o repositoryMeta$ in-ormacin so0re el repositorio

(ntroduccin a &M$'( Principales componentes


Aspectos .ueden ser clases :ava o arc%ivos X)L" Los aspectos son independientes entre si se usan para manipular el D I eci0en un documento D I como entrada y generan un documento D I como salida "ienen acceso a la A.I de D)pace y otras dependencias )on el mecanismo pensado para agregar -uncionalidad a la inter-a/ de usuario

(ntroduccin a &M$'( Principales componentes


0emas esponsa0le de trans-ormar el D I -inal a un X9"ML para enviarlo al cliente .ermiten cam0iar la estructura de la inter-a/ de usuario Incluye los C)) y :ava)cript necesarios para el loo(I-eel deseado )e puede aplicar so0re todo el sitio o so0re una U L espec<-ica

(ntroduccin a &M$'( Con#iguracin- /mlui3/con#


Con-iguracin de aspectos
Baspect nameJEAdministrationE pat%JEresource$&&aspects&Administrative&E &C

)e indica$ name$ nom0re asociado al aspecto pat'$ u0icacin del arc%ivo sitemap.5map del aspecto resource$&& indica que se encuentra en el classpat% El orden en el que los aspectos aparecen en el arc%ivo determina el orden de e1ecucin

(ntroduccin a &M$'( Con#iguracin- /mlui3/con#


Con-iguracin de temas
Bt%eme nameJE"est "%eme +E %andleJE+DKLMNO,P&+E pat%JEt%eme+&E&C Bt%eme nameJE"est "%eme DE rege5JEcommunity;listE pat%JEt%emeD&E&C Bt%eme nameJEAtmire Mirage "%emeE rege5JE.QE pat%JEMirage&E &C

Los par?metros %andle y rege5 permiten aplicar un tema espec<-ica so0re algunas U Ls Cuando rege5 vale E.QE indica que se aplica a todas las U L )i m?s de un tema aplican! se considera el que aparece primero pat% indica el directorio del tema

(ntroduccin a &M$'( Cocoon


#rame'or( para la construccin de aplicaciones 'e0 )e 0asa en la e1ecucin componentes individuales organi/ados en secuencia 2pipelines3 E5isten distintos tipos de componentes y su uso de0e seguir ciertas reglas La con-iguracin de los pipelines se reali/a so0re XML 2arc%ivos sitemap3/map3

(ntroduccin a &M$'( Cocoon


En el root de la 'e0app est? el root sitemap3/map$ el punto de entrada para todos los requests Cada sitemap.5map tiene la capacidad de EmontarE otros arc%ivos sitemap.5map. Esto permite la modulari/acin Los arc%ivos sitemaps de-inen los distintos posi0les pipelines a e1ecutar para un request determinado

(ntroduccin a &M$'( Cocoon

De e1ecucin di-erida
o 7enerator o "rans-ormers o )eriali/ers

De e1ecucin inmediata
o Matc%ers o )electors o eaders o Actions

(ntroduccin a &M$'( Cocoon


)ecuencia 0?sica de procesamiento$ )e 4E2E"A un documento de 0ase )e aplican 0"A2S,O"MAC(O2ES so0re el documento )e SE"(A$(5A el documento luego de todas las trans-ormaciones Esta secuencia presenta tres componentes 0?sicos$ generators! trans#ormers! serializers

(ntroduccin a &M$'( Cocoon


E!ecucin di#erida )e encolan para ser procesados al -inali/ar el an?lisis del sitemap )e valida que se respete el orden$ +.Un 7enerator D.M4ltiples "rans-ormers K.Un )eriali/er

(ntroduccin a &M$'( Cocoon


4enerators$ 7eneran un documento ase 2temporal3 so0re el cual se tra0a1ar? en el resto del pipeline. )olo puede %a0er '2 generator por pipieline. El caso m?s -recuente es la generacin del documento D"( vac.o 2slo contiene los elementos de nivel superior3

(ntroduccin a &M$'( Cocoon


0rans#ormers$ Modi-ican el D I de un documento Los trans-ormer se e1ecutan seg4n el orden de aparicin en el pipeline Cada trans-ormer reali/a una EpequeFaE modi-icacin so0re el D I .ermite la modulari/acin y separacin de concerns

(ntroduccin a &M$'( Cocoon


Serializers$ 9asta a%ora todo el documento D I temporal es en realidad una estructura en memoria El seriali/er genera una representacin concreta. )eriali/a los o01etos de memoria a una representacin en te5to La seriali/acin m?s -recuente es la generacin del documento D I en XML

(ntroduccin a &M$'( Cocoon


Serializers$ Es el 4ltimo elemento de un pipeline El procesamiento del pipeline -inali/a cuando se encuentra un seriali/er

"odos los componentes que aparecen luego de un seriali/er son descartados

(ntroduccin a &M$'( Cocoon


E!ecucin inmediata )e e1ecutan al momento de encontrarse en el sitemap

Modi-ican el curso de evaluacin del sitemap

.ermiten incluir componentes al pipeline de -orma din?mica! seg4n distintos criterios

(ntroduccin a &M$'( Cocoon


Matchers Aplican alg4n tipo de matc%ing so0re alg4n par?metro .ermiten decidir si una parte del sitemap de0e procesarse u omitirse )i el Matc%er determina que 9AR matc%ing! su contenido se procesa .ueden devolver datos para ser usados dentro del 0loque del matc%er M4ltiples implementaciones

(ntroduccin a &M$'( Cocoon


Matchers e1emplo 8ildcardU IMatc%er
Bmap$matc% patternJE-eed&Q&QQEC Bmap$generate typeJED)pace#eed7eneratorEC Bmap$parameter nameJE-eed#ormatE valueJEG+HE&C Bmap$parameter nameJE%andleE valueJEGDHE&C B&map$generateC Bmap$seriali/e typeJE5mlE&C B&map$matc%C

(ntroduccin a &M$'( Cocoon


Selectors .ermite incluir dentro del sitemap uno de entre varios grupos de instrucciones! seg4n alguna condicin Es an?logo a una instruccin case de un lengua1e de programacin .ermite de-inir un caso por de-ault M4ltiples implementaciones

(ntroduccin a &M$'( Cocoon


Selectors
Bmap$select typeJErequest;parameterEC Bmap$parameter nameJEparameter;nameE valueJE-ormatE&C Bmap$'%en testJErssEC Bmap$seriali/e typeJErssE&C B&map$'%enC Bmap$'%en testJEatomEC Bmap$seriali/e typeJEatomE&C B&map$'%enC Bmap$ot%er'iseC Bmap$seriali/e typeJE%tmlE&C B&map$ot%er'iseC B&map$selectC

(ntroduccin a &M$'( Cocoon


"eaders )e utili/a para retornar arc%ivos que no requieren procesamiento 2im?genes! arc%ivos 0inarios! etc.3 Cumple los roles de generator! trans-ormer y seriali/er Cuando se encuentra un eader! se descarta todo lo encontrado %asta el momento y se -inali/a el procesamiento del sitemap

(ntroduccin a &M$'( Cocoon


"eaders
Bmap$matc% patternJE0itstream&%andle&Q&Q&QQEC Bmap$matc% typeJErequest;parameterE patternJEsequenceEC Bmap$select typeJE0ro'serEC Bmap$'%en testJEspiderEC Bmap$read typeJE6itstream eaderEC Bmap$parameter nameJEuserAgentE valueJEspiderE&C Bmap$parameter nameJE%andleE valueJEG..&+H&G..&DHE&C Bmap$parameter nameJEnameE valueJEG..&KHE&C Bmap$parameter nameJEsequenceE valueJEG+HE&C B&map$readC B&map$'%enC .....

(ntroduccin a &M$'( Cocoon


Actions eali/an acciones que indirectamente pueden a-ectar el comportamiento de otros componentes 2por e1emplo! seteando alguna varia0le en la sesin3 @o modi-ican el D I ni generan derivaciones en el procesamiento del sitemap .uede retornar valores para ser usados como par?metros en otros componentes

(ntroduccin a &M$'( Cocoon


Actions
Bmap$act typeJElocaleEC Bmap$trans-orm typeJEi+,nEC Bmap$parameter nameJElocaleE valueJEGlocaleHE&C B&map$trans-ormC B&map$actC

(ntroduccin a &M$'( Cocoon


Otros elementos 6tiles
mount$ EmontaE otro sitemap para su procesamiento. .ermite dividir un sitemap muy grande en porciones m?s c%icas! montando cada una seg4n alg4n criterio 2usando un matc%er o un selector3 handle)errors$ cuando se genera una e5cepcin sin mane1ar en cualquier parte del cdigo invocado como parte del procesamiento del pipeline! Asta es capturada por este elemento! permitiendo mostrar alg4n error amiga0le al usuario

(ntroduccin a &M$'( Cocoon


El uso de los componentes 2matc%ers! selectors! actions! readers! generators! trans-ormers y seriali/ers3 permite generar pipelines din?micos en -uncin de distintos par?metros Listado de todos los componentes que Cocoon incluye en su distri0ucin$
%ttp$&&cocoon.apac%e.org&D.D&+KLOS+S+.%tml

(ntroduccin a &M$'( Procesamiento de un request


El request es atendido y se comien/a la evaluacin del root sitemap 2el punto de entrada para todos los requests3 )i se trata de la descarga de alg4n documento! el request es procesado por un eader en el root sitemap y termina el procesamiento )i es una p?gina! el root sitemap monta el sitemap que gestiona los temas 2&t%emes&t%emes.5map3

(ntroduccin a &M$'( Procesamiento de un request


)e determina quA tema de0e aplicarse y monta el sitemap.5map correspondiente al mismo La primer instruccin en este nuevo pipeline es Bmap$generate typeJE-ileE srcJEcocoon$&&D I&G+HE&C

El pre-i1o cocoon$ indica que se trata de un request interno

El procesamiento de este sitemap termina cuando se encuentra el seriali/er adecuado

(ntroduccin a &M$'( Procesamiento de un request


)e comien/a la e1ecucin del p&pel&ne pr&mar&o armado! el cual comien/a con el generate Ese generate dispara el request interno! el cual es mane1ado nuevamente desde el root sitemap Dado que la U L de dic%o request comien/a con ED I&E! se monta el sitemap para la gestin de aspectos 2aspects&aspects.5map3

(ntroduccin a &M$'( Procesamiento de un request


)e determinan los aspectos a e1ecutar! en el orden en el que -ueron con-igurados Cada aspecto en la lista se carga y se procesa su sitemap.5map. Esto genera un pipeline independiente para cada aspecto )e e1ecutan los pipelines de cada aspecto! con lo que se manipula el D I As< -inali/a la e1ecucin del generate inicial

(ntroduccin a &M$'( Procesamiento de un request


Contin4a la e1ecucin del pipeline primario! a%ora con el documento D I generado luego de la e1ecucin de todos los aspectos )e aplican los trans-ormers correspondientes

o inclusin de arc%ivos css y 1avascripts o e!ecucin del &S$0 principal del tema7

a #in de

generar el &%0M$ #inal

#inalmente! se seriali/a a X9"ML y se retorna el resultado al navegador del usuario