-
Notifications
You must be signed in to change notification settings - Fork 0
Arquitectura
DSpace es un proyecto Maven escrito mayoritariamente en el lenguaje de programación JAVA. Se divide en varios subproyectos, y generalmente cada uno se corresponde con una aplicación en DSpace.
DSpace se divide en varias capas donde se alojan distintas aplicaciones que implementan sus funcionalidades.
-
Capa de Aplicación:
- Incluye todas las herramientas que permiten al exterior (usuarios u otros sistemas) hacer uso del repositorio; por ejemplo XMLUI, JSPUI, módulo OAI, SWORD Server, entre otros.
-
Capa de lógica de negocios:
- Mantiene la lógica transversal a todas las aplicaciones y que rige el funcionamiento interno del repositorio, estando representada por la API de DSpace.
-
Capa de almacenamiento:
- Se encarga de todas las tareas específicas de guardado y recuperación desde almacenamiento secundario, es decir, bases de datos y sistema de archivos.
A partir de DSpace 6.X se realizó un refactoring de toda su API de tal forma de integrar Hibernate transformando la API de DSpace en una API basada en Servicios, dividiéndola en las siguientes partes:
-
Capa de Servicios: esta capa es totalmente pública y puede ser utilizada por la Capa de Aplicación. Se divide en 2 subcapas:
- Servicios basados en la base de datos: servicios que darán acceso a operaciones CRUD sobre los objetos en base de datos y a operaciones propias de la lógica de cada objeto.
- Servicios de la capa de negocios: servicios que se corresponden a los antiguos Managers en DSpace (p.e. AuthorizationManager).
- Capa de acceso a la base de datos: esta capa sólo puede ser accedida únicamente desde alguna de los servicios anteriores, y está habitada para acceder a la base de datos.
- Objetos de base de datos: estos son objetos que se corresponden unívocamente con las tablas en la base de datos, y sólo tienen métodos getters y setters sobre las columnas de las tablas.
El repositorio se organiza en una o más comunidades de nivel base que se organizan jerárquicamente en subcomunidades, que son como espacios de trabajo. Las colecciones son los “estantes” dentro de las comunidades, que agrupan contenido relacionado. Los ítems son las obras que van en los estantes y que se pretende que el público encuentre. Los metadatos describen al recurso almacenado. Los bitstreams son la representación digital del recurso.
A nivel relacional podemos decir que las comunidades poseen subcomunidades y colecciones, las colecciones poseen ítems, los ítems se componen de bundles, y cada bundle posee bitstreams (archivos).
Intefaz gráfica: actualmente, DSpace posee dos alternativas para la implementación de la GUI: XMLUI y JSPUI. A comienzos del 2016 se comenzó a desarrollar la nueva interfaz de DSpace, basada en Angular2.
Base de datos: Se puede utilizar alguno de los siguientes DBMS:
En la base de datos creada por DSpace se guardan todos los datos correspondientes al modelo de DSpace
Indexación: DSpace ofrece la posibilidad de usar un motor de indexación para realizar búsquedas sobre el repositorio. Estos son:
- Apache Solr
- ElasticSearch (deprecated en DSpace 6.X).
Cualquiera de estos motores ofrece características como búsquedas a texto completo (full-text search), resaltado de búsquedas (hit highlighting), búsquedas facetadas (faceted search), indexación en tiempo real, caché, así como una interfaz para su administración y una API REST.
Compilación e instalación: Para compilar los distintos proyectos que componen a DSpace, es necesario disponer de Apache Maven, el cual se encarga de resolver las dependencias de librerías y módulos, de ordenar los proyectos a compilar y de armar los paquetes finales, como WAR o JAR.
Luego, se usan estos paquetes creados por maven para efectuar los procedimientos sobre la instalación final usando Apache Ant. Ant se ocupa de tareas como migración de base de datos, test, instalación, actualización, entre otras tareas.
En SEDICI se decidió utilizar la siguiente combinación de tecnologías para trabajar con DSpace:
- XMLUI para la interfaz gráfica.
- PostgreSQL como DBMS.
- Apache Solr como motor de indexación.
Para saber más acerca de las distintos componentes en DSpace leer el capítulo Architechture en la wiki de DSpace.
DSpace es una plataforma escrita en JAVA y dividido en una jerarquía de proyectos Maven.
Básicamente se tienen 3 directorios principales:
- directorio de código fuente
- directorio de instalación
- directorio de aplicaciones o webapps
Se puede encontrar una descripción detallada de éstos en la sección Directory and Files en la documentación oficial.
DSpace es un proyecto maven compuesto de otros subproyectos maven.
Cada proyecto maven tiene un archivo pom.xml asociado, que define la configuración del proyecto: nombre, propiedades, dependencias a librerias, dependencias a otros subproyectos, etc...
Los overlays permiten reutilizar y sobreescribir con cambios propios el código de otro proyecto maven. Esto sucede, por ejemplo, entre los proyectos dspace-xmlui y dspace/modules/xmlui en DSpace.
- Permiten "extender" una aplicación web (war), agregando nuevos elementos o redefiniendo los existentes.
- En maven, se hace overlay siempre que una aplicación web depende de otra aplicación web.
- Maven permite configurar explícitamente el orden en el que se realizará el overlay y qué recursos deben considerarse en el proceso
A modo ilustrativo, se muestra un overlay entre dos proyectos maven:
DSpace se compone de varias aplicaciones y las más utilizadas son las siguientes:
-
XMLUI: Basado en el framework de aplicaciones web llamado Apache Cocoon, y se divide en capas (estilos, temas y aspectos) que permiten su extensión y modularización mediante el uso de distintos archivos XML.
-
JSPUI: Basado en JavaServer Pages, y utiliza JavaServlets para manejar la lógica de negocio y distintas páginas JSP que producen la vista en HTML para el usuario final.
-
REST: la aplicación REST API provee un punto de acceso externo a DSpace para realizar operaciones CRUD sobre las Comunidades, Colecciones, Items y Bitstreams.
-
SWORD: aplicación que implementa el protocolo de interoperabilidad sword y permite el depósito remoto de items en el repositorio.
-
OAI: aplicación que permite la exposición de metadatos del repositorio acorde a lo especificado por el protocolo oai-pmh. Mediante ciertas configuraciones puede activarse como cosechador también.
-
SOLR: esta aplicación es utilizada para indexar todo el contenido y permitir realizar operaciones complejas sobre el contenido del repositorio de una forma rápida. Los módulos que utilizan SOLR son Discovery (búsqueda en el repositorio), OAI (exposición de contenido mediante OAI-PMH) y Statistics (estadísticas del repositorio).
Discovery es el módulo de búsqueda de contenido en el repositorio. Este módulo habilita la búsqueda facetada y el browsing o exploración del repositorio.
La configuración de Discovery se encuentra separada en 2 archivos:
- Configuración General: dspace-install-dir/config/modules/discovery.cfg
- Configuración de la interfaz: dspace-install-dir/config/spring/api/discovery.xml
El módulo de Embargo es utilizado para asignar embargos sobre los ítems del repositorio. Un embargo es una restricción sobre el acceso a un determinado ítem luego de su publicación durante un determinado período de tiempo, ya sea a sus metadatos y bitstreams, o únicamente a sus bitstreams. Durante este período de tiempo, sólo el submitter de una publicación (o algun usuario con permiso de ADMIN sobre la misma) puede acceder al contenido embargado y la publicación se mantiene restringida al resto del público.
El módulo de embargo actual se basa en la existencia de "Resource Policies" restrictivas sobre el acceso a un determinado ítem. Una ResourcePolicy es un elemento del modelo de DSpace que determina permisos sobre los DSpaceObjects que habitan el repositorio, p.e. permiso de LECTURA, MODIFICACIÓN, etc.
Una autoridad es una fuente de valores fijos para un dominio determinado, donde cada valor es identificado por una clave.
La necesidad de unificar los puntos de acceso a un determinado catálogo bibliográfico y entidad asociadas, como autores, es el origen del concepto de autoridades.
DSpace provee distintos mecanismos para permitir el uso de autoridades sobre los metadatos:
-
Mediante el uso de archivos locales en texto plano que mantengan una jerarquía/conjunto de valores de autoridad.
-
Mediante la conexión a un sistema externo que administra autoridades.
P.e. en otro repositorio llamado CIC-Digital, la administración de autoridades se sustenta sobre el software de gestión de contenidos Drupal y varios módulos complementarios.
El módulo de autorización determina qué acciones puede realizar cierto usuario. Está basado en un conjunto de entidades llamadas "Resource Policies", donde cada una tiene información de permisos.
Una ResourcePolicy es un elemento del modelo de DSpace que determina permisos sobre los DSpaceObjects que habitan el repositorio, p.e. permiso de LECTURA, MODIFICACIÓN, ADMIN, etc.
policy_id | resource_type_id | resource_id | action_id | start_date | end_date | rpname | rptype | rpdescription | eperson_id | epersongroup_id | dspace_object |
---|---|---|---|---|---|---|---|---|---|---|---|
37266 | 4 | 736 | 11 | TYPE_CUSTOM | Permiso de ADMIN Comm XXY | 1a93579f-b8dc-XXXX-YYYY-b7fe91083763 | 47140beb-2650-AAAA-BBBB-28d0b1ee3b98 |
Los grupos (Group) en DSpace son entidades que agrupan usuarios (EPerson) y a las que pueden adjudicarseles determinados permisos.
-
Anonymous: este grupo conteniene todos los usuarios que ingresan a DSpace (que inician sesión o no). Cualquier usuario tiene pertencencia a este grupo, independientemente si pertenece a otros grupos o no. Muchas veces, este grupo sirve para determinar ciertas cuestiones de la aplicación, p.e.: "si (User in Anonymous) entonces --> Hacer Submit a Colección de Autoarchivo".
-
Administrator: este grupo contiene a todos los usuarios que son Administradores del Sistema en DSpace. El usuario que pertenezca a este grupo tiene casi dominio total de la aplicación a través de la backend web.
-
SEDICI-ADMIN: este grupo conteniene a todos los bibliotecarios propios de SEDICI. Estos usuarios tienen permiso de Administrador sobre todas las colecciones en el sitio, y pueden eliminar/crear/modificar cualquier Contenido (Comunidad-Colección-Item-Bundle-Bitstream) del repositorio.
DSpace cuenta con una interfaz completamente internacionalizable. Además de proveer un amplio numero de idiomas en la que su interfaz esta internacionalizada (p.e. inglés, español, italiano, francés, alemán, etc...), provee mecanismos para modificar o crear nuevos mensajes de internacionalización para un idioma nuevo o ya existente.
DSpace desarrolló el proyecto dspace-xmlui-lang para traducir comunitariamente los archivos de i18n. Desde este proyeto se importan todos los archivos de i18n utilizados por XMLUI.
El Submission y el Workflow son los mecanismos más importantes que provee para permitir el ingreso de bitstreams al repositorio de parte de los usuarios (E-Person) vinculados al repositorio, a través de una interfaz web, amigable y guiada.
El Submission es un conjunto de pasos o steps que permiten enviar un nuevo item al repositorio a través de un formulario de envío. El formulario consta consta de un conjunto de páginas que permiten describir los metadatos del item. Cada step se corresponde con una o más páginas del formulario de envio, y permiten la interacción entre los usuarios y la aplicación. El proceso termina una vez todos los pasos fueron ejecutados, y tras su finalización, el item enviado por el usuario pasa al proceso de Workflow para una revisión por parte de los administradores correspondientes.
El Workflow es un mecanismo para la revisión de los items enviados mediante el Submission. Determina cuándo un envío está apto o no para su archivo en el repositorio. Básicamente, el workflow define un conjunto de pasos o steps a seguir. Cuando estos pasos son ejecutados sin interrupción hasta el final, entonces el envío es archivado en el repositorio.
Existen 2 variante para la implementación del Workflow en DSpace: "Legacy 3-step Workflow" y el "XMLWorkflow".
Google Analytics es una herramienta de analítica web de la empresa Google. Ofrece información agrupada del tráfico que llega a los sitios web según la audiencia, la adquisición, el comportamiento y las conversiones que se llevan a cabo en el sitio web.
Se pueden obtener informes como el seguimiento de usuarios exclusivos, el rendimiento del segmento de usuarios, los resultados de las diferentes campañas de marketing online, las sesiones por fuentes de tráfico, tasas de rebote, duración de las sesiones, contenidos visitados, conversiones (para ecommerce), etc. Este producto se desarrolló basándose en la compra de Urchin (hasta entonces la mayor compañía de análisis estadístico de páginas web) por parte de Google.
En el archivo {dspace.dir}/config/modules/google-analytics.cfg asegurarse que las siguientes configuraciones esten descomentadas
-
application.name = Dummy project (la documentación de DSpace hace la siguiente aclaracion con respecto a este valor: "Not sure if this property is required but it was in the example code provided by Google. Please do not delete.", por lo que no deberia modificarse ese valor)
-
table.id = ga:12345678
- loguear en el dashboard de google analytics
- ir a la sección de admin
- seleccionar la opción ver configuración en la columna que dice "ver todos los datos del sitio web"
- La propiedad es ID de vista (a pesar de la confusión que podrían generar los nombres) este valor debe reemplazar la parte numerica del ejemplo de arriba
-
account.email = El email que se genera automáticamente cuando se crea el proyecto en https://console.developers.google.com/project
-
certificate.location = La ruta al archivo P12 que descargamos previamente
-
authorization.admin.usage = true
https://wiki.duraspace.org/display/DSDOC5x/DSpace+Google+Analytics+Statistics https://developers.google.com/analytics/devguides/reporting/core/v3/ https://developers.google.com/identity/protocols/OAuth2ServiceAccount https://console.developers.google.com/iam-admin/projects https://www.google.com/analytics
Paralelamente se cuenta con un módulo de estadísticas provisto por Apache SOLR que registra datos crudos de todos los accesos realizados al sistema. Para utilizar este modulo es necesario tener un mínimo conocimiento del lenguaje de consultas de SOLR
La forma mas sencilla de utilizarlo es ingresando a la dirección del servidor de SOLR (indicada en la propiedad solr.server del archivo de configuración local.cfg) donde se provee una interfaz relativamente amigable para realizar las consultas
DSpace provee una herramienta para interactuar con las estadísticas de SOLR, el uso esta herramienta esta especificado en
https://wiki.duraspace.org/display/DSDOC4x/Managing+Usage+Statistics
A través del interfaz CLI de DSpace se pueden ejecutar diversas operaciones de mantenimiento. Este script se encuentra en [DSPACE_INSTALL_DIR]/dspace/bin/dspace. Ejecutando el comando dspace/bin/dspace -h
se obtiene un listado de todos los comandos a ejecutar.
La CLI de DSpace es utilizada en combinación con las cronjobs del sistema para que periódicamente se ejecuten tareas de mantenimiento automáticas.
Para una guía completa de todas las operaciones posibles a ejecutar desde línea de comandos, leer la documentación oficial en DSpace.