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

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