| Entregable | Importador de datos del DataSet de Murcia, SGI y CVN |
|---|---|
| Fecha | 27/04/2021 |
| Revisado por | Paloma Terán Pérez |
| Proyecto | ASIO (Arquitectura Semántica e Infraestructura Ontológica) en el marco de la iniciativa Hércules para la Semántica de Datos de Investigación de Universidades que forma parte de CRUE-TIC |
| Módulo | Importador base |
| Tipo | Software |
| Objetivo | Importador de datos del DataSet de Murcia para el proyecto Backend SGI (ASIO). |
| Estado | 100% |
| Próximos pasos | |
| Documentación | Manual de usuario Manual de despliegue Documentación técnica |
| Master | |
|---|---|
| Quality Gate | |
| Coverage |
Importador de datos del DataSet de Murcia, SGI y CVN para el proyecto Backend SGI (ASIO). Se trata de un proceso batch configurado mediante Spring Batch.
Para iniciar el entorno de desarrollo se necesita cumplir los siguientes requisitos:
- OpenJDK 11
- Eclipse JEE 2019-09 con plugins:
- Spring Tools 4
- m2e-apt
- Lombok
- Docker
La metodología de desarrollo es Git Flow.
La inicialización de los elementos adicionales al entorno de desarrollo se realiza con docker.
En el directorio docker-devenv se ha configurado un fichero docker-compose.yml para poder arrancar el entorno de desarrollo.
Para arrancar el entorno:
docker-compose up -dPara pararlo:
docker-compose downSe han configurado los siguientes Jobs:
importDataSetJob: job encargado de procesar datos a partir de la lectura de ficheros XML del dataset de Murcia.importCvnJob: job encargado de procesar CVN a partir de los servicios web propios de CVNimportOaipmhJob: job encargado de procesar SGI (OAIPMH) a partir de los servicios web propios de SGI
Estos jobs se encargan de leer los datos correspondientes, generar un JSON con los datos y posteriormente insertarlo en un topic de Kafka.
app.kafka.input-topic-name: Nombre del topic para los datos de entrada. Valor por defecto: input-dataapp.data.path:Directorio en el que se encuentran los XML para la carga de datos, en caso de estar vacío se tomarán del classpath. Valor por defecto vacíospring.kafka.bootstrap-servers: Dirección del servidor bootstrap de Kafka. Valor por defecto: localhost:29092app.services.cvn.endpoint: Dirección del servidor para obtener los CVN. Valor por defecto: http://curriculumpruebas.um.es/curriculum/rest/v1/authapp.services.cvn.mockup.enabled: Booleano para indicar si se utilizan servicios mock para obtener los CVN. Valor por defecto: trueapp.services.input-processor.endpoint: Dirección del servidor para obtener los datos de importaciones anteriores. Valor por defecto: localhost:9322app.services.input-processor.mockup.enabled: Booleano para indicar si se utilizan servicios mock para obtener los resultados de las importaciones anteriores. Valor por defecto: trueapp.services.oai.endpoint: Dirección base del servidor de SGI. Valor por defecto: http://herc-as-front-desa.atica.um.es/oai-pmh-xml/OAI_PMHapp.services.oai.endpoint-list: Dirección del servicio de SGI para obtener el listado de Specs. Valor por defecto: ${app.services.oai.endpoint}?verb=ListSetsapp.services.oai.endpoint-xml: Dirección del servicio de SGI para obtener el XML mediante un ID. Valor por defecto: ${app.services.oai.endpoint}?verb=GetRecord&metadataPrefix=XML_ASIO&identifier=app.services.oai.endpoint-ids: Dirección del servicio de SGI para obtener el listado de IDs de una SPEC. Valor por defecto: ${app.services.oai.endpoint}?verb=ListIdentifiers&metadataPrefix=XML_ASIO&set=
Para la creación de Jobs, se deben seguir las instrucciones provistas en la documentación de Spring Batch.
Si se crea un solo empaquetado con varios jobs y solamente se quiere ejecutar uno en cada ejecución, se puede hacer pasando el siguiente parametro a la máquina virtual:
-Dspring.batch.job.names=job1,job2
Para la configuración de la ejecución periodica de jobs, se utilizarán las herramientas proporcionadas por los sistemas operativos Windows / Linux en el que se ejecute la aplicación.
Simplemente habría que ordenarle ejecutar el comando necesario. Por ejemplo:
java -jar -Dspring.batch.job.names=importCvnJob {jar-name}.jarSustituyendo {jar-name} por el nombre del fichero JAR generado.
No es necesario especificar la clase de inicio de la aplicación, ya que el fichero MANIFEST.MF generado ya contiene la información necesaria. Solamente se especificarán los parametros necesarios.
En entornos más complejos, se pueden usar gestores de cron como por ejemplo JobScheduler: https://www.sos-berlin.com/jobscheduler
Será preciso configurar las siguientes variables de entorno cuando se instale en un entorno real:
| Variable | Descripción | Valor por defecto |
|---|---|---|
APP_PERSISTENCE_DATASOURCE_USERNAME |
Nombre del usuario de acceso a la base de datos | |
APP_PERSISTENCE_DATASOURCE_PASSWORD |
Contraseña del usuario de acceso a la base de datos | |
APP_PERSISTENCE_DATASOURCE_URL |
URL de acceso a la base de datos MySQL | jdbc:mysql://localhost:3306/asio_jobs?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8 |
APP_KAFKA_INPUT_TOPIC_NAME |
Nombre del topic de Kafka de entrada | input-data |
APP_KAFKA_CREATE_TOPICS |
Flag que indica si debe crear automáticamente los topics de Kafka. Valores admisibles true y false |
false |
SPRING_KAFKA_BOOTSTRAP_SERVERS |
URL del servicio de Kafka para los productores | localhost:29092 |
APP_DATA_PATH |
Ubicación de los ficheros XML de entrada. En caso de estar vacío se toman del classpath | |
SPRING_BATCH_INITIALIZE_SCHEMA |
Indica si se deben inicializar los esquemas de Spring Batch. Valores admisibles: always y never |
never |
APP_SERVICES_CVN_ENDPOINT |
URL del servicio para obtener CVN | http://curriculumpruebas.um.es/curriculum/rest/v1/auth |
APP_SERVICES_CVN_MOCKUP_ENABLED |
Indica si se deben utilizar servicios mock para obtener los CVN. Valores admisibles: true y false |
true |
APP_SERVICES_INPUTPROCESSOR_ENDPOINT |
URL del servicio para obtener datos de importaciones anteriores | localhost:9322 |
APP_SERVICES_INPUTPROCESSOR_MOCKUP_ENABLED |
Indica si se deben utilizar servicios mock para obtener datos de importaciones anteriores. Valores admisibles: true y false |
true |
APP_SERVICES_OAI_ENDPOINT |
Dirección base del servidor de SGI. Valor por defecto | http://herc-as-front-desa.atica.um.es/oai-pmh-xml/OAI_PMH |
APP_SERVICES_OAI_ENDPOINT_LIST |
Dirección del servicio de SGI para obtener el listado de Specs. Valor por defecto | ${app.services.oai.endpoint}?verb=ListSets |
APP_SERVICES_OAI_ENDPOINT_XML |
Dirección del servicio de SGI para obtener el XML mediante un ID. Valor por defecto | ${app.services.oai.endpoint}?verb=GetRecord&metadataPrefix=XML_ASIO&identifier= |
APP_SERVICES_OAI_ENDPOINT_IDS |
Dirección del servicio de SGI para obtener el listado de IDs de una SPEC. Valor por defecto | ${app.services.oai.endpoint}?verb=ListIdentifiers&metadataPrefix=XML_ASIO&set= |
Para más información consultar:
Se incluyen los resultados del testing y cobertura en los siguientes enlaces:
