10. FRIS Installatie
Dit document overloopt alle stappen die ondernomen moeten worden om een succesvolle ingest op gang te brengen naar FRIS Vlaanderen.
10.1. Connector
De connectie naar fris zit in lupa. Deze maakt gebruik van soap envelopes en het oasis beveiligingsprotocol. Implementatie hiervan bevindt zich in /lupa/fris/generator.py
10.1.1. Creatie van de connector
In Autorisatiemodellen [link] dient een nieuwe connector aangemaakt te worden (vb. friskmska
)
Protocol:
Fris
Username:
<username voor productie api connectie>
Password:
<password voor productie api connectie>
Note
LET OP: dit zijn niet de toegangsgegevens die gebruikt worden om aan te melden op het fris portaal om data te raadplegen
Activeer logging: aangevinkt
URI te gebruiken bij api’s: https://frisr4.researchportal.be/ws/
Maak 2 Upload operaties aan
10.1.2. Ingest
Identificatie: ingest
Benaming: ingest
URI: $apiuri/IngestionService
Respons type: xml
Wanneer deze is aangemaakt zal volgend commando data naar fris verzenden:
sudo lupa put ingest test_lupa.xml kind=file source=friskmska
10.2. Aanmaken van de vertaaltabellen
Per schema zijn er verschillende Vertaaltabellen [link] nodig om onze interne termen te vertalen naar die van CERIF. Volgende zijn vereist:
- Frisor (organismes voor fris)
zorgeneral_publish: vertaling voor zichtbaarheid
zorgeneral_type: vertaling voor types organismes
- Frisif (infrastructuren voor fris)
zifgeneral_ifaccess: vertaling voor toegankelijkheid
zifgeneral_locationtype: vertaling voor locatie types
zifgeneral_singlesided: vertaling voor single-sided
zifpeople_peoplerole: vertaling voor de rol van personen bij infrastructuren
- Frispr (projecten voor fris)
zprfunders_funrole: vertaling voor de rol van funders bij projecten
zprpeople_peoplerole: vertaling voor de rol van personen bij projecten
zprteams_teamrole: vertaling voor de rol van teams (organismes) bij projecten
10.3. Aanmaken van de exportgeneratoren
Ieder type heeft zijn eigen exportgenerator en kan op die manier 1 of meerdere elementen genereren die we naar fris kunnen uploaden, aanmaken gebeurt in Nieuw/bewerk GNOI export profiel [link] Belangrijk hier is om de juiste executable toe te voegen om de data te verrijken (gnorfris/gniffris/gnprfris). Voeg ook de aangemaakte vertaalschemas aangemaakt in stap 2 toe.
10.3.1. Het exporteren van gegevens
Exporteren van gegevens kan dan via volgend commando:
gnoicnv export <gnoiset> gntype=<gnoitype> target=test.xml format='cerif' gen=<generator identifier> profile=fris
10.4. Publiceren van de data
Om deze data te publiceren maken we gebruik van lupa. Ervanuit gaande dat 1 van de bovenstaande commando’s is uitgevoerd om een file te generen kan je gebruik maken van de lupa ingest operatie om de file te uploaden
sudo lupa put ingest {filename.xml} kind=file source=friskmska
Hierbij is filename.xml dus het bestand gegenereerd door catcnv of gnoicnv.
De data uit de xml file wordt gewrapt met een envelope volgens het soap protocol opgestuurd.
Deze operatie kan wel even tijd in beslag nemen (30 sec tot 1 minuut). Dit is omdat FRIS 2 verschillende soorten validaties uitvoert.
Indien de operatie succesvol is uitgevoerd krijg je je terminal terug. Anders worden de errors geprint op standard output en wordt er een log geschreven in
10.4.1. Schema Validatie
Controle of de tags in volgorde staan, of er cijfers staan waar er cijfers moeten staan, of er onverwachte tags zijn… Indien dit het geval is krijg je een error terug die er ongeveer zo uit ziet op standardoutput. Deze errors kan je herkennen wanneer de source XSD is.
{'source': 'XSD', 'level': 'ERROR', 'message': "line 15: Expected element 'cfOrgUnitId@urn:xmlns:org:eurocris:cerif-1.5-1' instead of 'cfName@urn:xmlns:org:eurocris:cerif-1.5-1' here in element cfOrgUnit@urn:xmlns:org:eurocris:cerif-1.5-1-FRIS"}, {'source': 'XSD', 'level': 'ERROR', 'message': "line 15: Expected element 'cfOrgUnitId@urn:xmlns:org:eurocris:cerif-1.5-1' instead of 'cfOrgUnit_Class@urn:xmlns:org:eurocris:cerif-1.5-1' here in element cfOrgUnit@urn:xmlns:org:eurocris:cerif-1.5-1-FRIS"}, {'source': 'XSD', 'level': 'ERROR', 'message': "line 15: Expected element 'cfOrgUnitId@urn:xmlns:org:eurocris:cerif-1.5-1' instead of 'cfOrgUnit_Class@urn:xmlns:org:eurocris:cerif-1.5-1' here in element cfOrgUnit@urn:xmlns:org:eurocris:cerif-1.5-1-FRIS"}]}
10.4.2. Dataflux (inhoudelijke) validatie
Controle of alle velden inhoudelijk in orde zijn: vb. is het funderbedrag groter als 0, hangt er een promotor vast aan een project, …
Deze errors zijn inhoudelijk en vaak in het Nederlands. Indien deze voorkomen worden ze ook op standard output geprint:
- ``{
'entity-type': 'PROJECT', 'entity-id': 'kmska_13', 'source': 'BUSINESS_RULE', 'level': 'ERROR', 'message': 'Project heeft geen Engelstalige titel'
- }, {
'entity-type': 'PROJECT', 'entity-id': 'kmska_13', 'source': 'BUSINESS_RULE', 'level': 'ERROR', 'message': 'Project heeft geen keywords'
- }, {
'entity-type': 'PROJECT', 'entity-id': 'kmska_13', 'source': 'BUSINESS_RULE', 'level': 'ERROR', 'message': 'Project heeft geen Promotor'
- }, {
'entity-type': 'PROJECT', 'entity-id': 'kmska_13', 'source': 'BUSINESS_RULE', 'level': 'ERROR', 'message': 'Project heeft geen assignment'
}``
Deze errors zouden een duidelijk beeld moeten scheppen van het probleem. De data kan dan bewerkt worden in brocade en dan kunnen bovenstaande commandos opnieuw uitgevoerd worden
10.4.3. Leegmaken van een fris omgeving
Note
LET OP: dit is een destructieve operatie die niet teruggedraaid kan worden
Indien een volledige fris omgeving leeg gemaakt dient te worden, kan je gebruik maken van de void_environment()
methode van de fris service. Deze is enkel op te roepen vanuit python.
De omgeving wordt leeggemaakt door middel van een leeg bulk ingest bericht. Dit kan op volgende manier bereikt worden via de python console:
>>> from anet.fris import fris_service
>>> fs = fris_service.FrisService('<URL>', '<USER>', '<PWD>')
>>> fs.void_environment()
Hierbij zijn volgende lupa attributen nodig: - URL: apiuri - USER: username - PWD: password