Onderhoud Wegens upgrade naar de nieuwste versie zal confluence op 24/09/2024 vanaf 18u00 tot 25/09/2024 09u00 onbeschikbaar zijn.
Deze pagina werd gearchiveerd in 2023. Voor de meest recente versie, bekijk de bijgewerkte versie onder de tab 'Data aanleveren'.
Inleiding
Deze pagina geeft een overzicht van de stappen die doorlopen moeten worden om een XML-bestand op te laden naar DOV en de gegevens te importeren.
Importeren en aanleveren
Na het importeren van een XML-bestand zijn de boringen of andere gegevens nog niet aangeleverd. Volg daarvoor onze handleiding eDOV - Aanleveren boringen.
In onderstaande voorbeelden wordt steeds gebruik gemaakt van standaard cURL commando's om te connecteren met de services. cURL is namelijk standaard beschikbaar is op vele operating systemen (en voor Windows OS is dit gratis te downloaden op https://curl.haxx.se/windows/).
Er is en demo-applicatie in Java beschikbaar die de verschillende stappen illustreert. Meer info over dit demo-project is te vinden op de github-pagina van DOV (https://github.com/DOV-Vlaanderen/dov-services-quickstart), onder het package "xmlimport".
Productie of oefen?
In de onderstaande voorbeelden zijn steeds de productie URL's gebruikt.
Wil je graag eerst je ontwikkeling uit testen? Maak dan gebruik van de oefenomgeving. De URL voor de oefenomgeving is https://services-oefen.dov.vlaanderen.be
Stappenplan
Het opladen van een XML-bestand voor verwerking naar DOV verloopt in 4 stappen. Dit is analoog aan de het opladen en verwerken van een bestand via de webapplicaties van DOV. Je laadt eerst een XML-bestand op. Dit bestand zal je valideren. Indien je bestand geldig is, kan je het importeren. Als laatste stap controleer je of de import van je XML-bestand is gelukt. Heb je de objecten geïmporteerd in het kader van eDOV? Vergeet dan zeker niet de boringen aan te leveren vanuit het overzicht uitgevoerde boringen. Hoe je dit doet, vind je in onze handleiding eDOV - Aanleveren boringen.
Stap 1: opladen van een bestand
Aan te spreken url: https://services.dov.vlaanderen.be/dov-xdov-server/import/upload
Type request: POST
Header: Content-Type: multipart/form-data
Voorbeeld van een form post curl; let erop om de @ voor de bestandsnaam te zetten.
cURL
curl -X POST -F file=@voorbeeldbestand.xml -k https://services.dov.vlaanderen.be/dov-xdov-server/import/upload --key my_key.key --cert my_cert.pem -v
Het antwoord is altijd in json-formaat en bevat een referentie (id) naar het opgeladen bestand. Dit ID moet gebruikt worden bij de volgende stappen om naar dat opgeladen bestand te refereren.
Voorbeeld antwoord
{"id":"804311","naam":"voorbeeldbestand.xml"}
Opgelet bij het gebruik van curl
Sommige curl-implementaties voegen automatisch 'Expect: 100-continue' toe aan het request als dat meer dan 1024 bytes groot is.
Dat levert echter een foutmelding op (issue zit in een externe component die we gebruiken - zie https://github.com/spring-cloud/spring-cloud-gateway/issues/1337)
Als workaround kan -H 'Expect:' toegevoegd worden aan het curl commando, dat er dan als volgt uitziet:
curl -X POST -F file=@voorbeeldbestand.xml -k https://services.dov.vlaanderen.be/dov-xdov-server/import/upload --key my_key.key --cert my_cert.pem -H 'Expect:'
Opgelet bij het gebruik van curl op windows
voor windows versie kan het zijn dat double quotes gebruikt moeten worden i.p.v. single quotes
-H 'Content-Type: application/json' wordt dan -H "Content-Type: application/json"
Stap 2: valideren van het opgeladen bestand
Aan te spreken url: https://services.dov.vlaanderen.be/dov-xdov-server/import/validate
Type request: POST
Header: Content-Type: application/json
cURL
curl -X POST -d "@validate-post-body.json" -k https://services.dov.vlaanderen.be/dov-xdov-server/import/validate -H 'Content-Type: application/json' --key my_key.key --cert my_cert.pem -v
Een json-body moet hier mee gestuurd worden:
In bovenstaand voorbeeld van post-data moet aandacht besteed worden aan de volgende velden:
- Lijn 3: vul hier een beschrijving in van het bestand (bvb 'opladen data van december'). Dit is vrije tekst.
- Lijn 4: hier moet de gebruikersnaam ingevuld worden; de bedrijfsnaam is ook goed.
- Lijn 5: vul hier de datum van vandaag in - formaat is YYYY-MM-DD
- Lijn 9: hier moet het KBO-nummer van uw organisatie ingevuld worden (zonder puntjes!)
- Lijn 18: options, geven aan welke objecten in de XML voorkomen die je wilt laten valideren. Dit komt overeen met de aanvinkbare keuzes bij een manuele import via de webapplicatie. De codes voor andere mogelijke objecten staat hieronder.
- Lijn 93-94: hier moet de data ingevuld worden die als response uit stap 1 gekomen is.
Mogelijke codes voor objecten in het veld 'options':
- Opdracht: 10 (opdracht), 11 (opmerkingen opdracht),
- Proefgegevens: 20 (boring), 21 (opmerkingen boring), 22 (alternatievenaam), 40 (sondering), 41 (opmerkingen sondering)
- Interpretaties: 101 (informeel), 102 (formeel), 103 (lithologie), 104 (gecodeerd), 105 (hydrogeologisch), 106 (quartair), 108 (geotechnisch), 109 (informelehydro), 120 (opmerkingen interpretatie),
- Watergegevens: 50 (put), 51 (opmerkingen put), 60 (filter), 61 (opmerkingen filter), 62 (peilmetingen), 63 (watermonster), 64 (kwaliteitsmetingen), 65 (onttrekkingen), 66 (gxgs), 67 (debietmeters), 68 (referentiepunten),
- Grondmonstergegevens: 23 (grondmonster), 29 (opmerkingen grondmonster), 30 (laboproeven grondmonster),
- Archeologie: 131 (referentieprofiel),
- Bodem: 140 (bodemsite), 141 (bodemlocatie), 142 (bodemclassificatie), 143 (bodemopbouw), 144 (bodemmonster), 145 (bodemobservatie), 146 (bodem opmerkingen), 1412 (bijlagen bodemlocatie), 1414 (full bodemlocatie)
Opgelet: voor gebruikers met de rol 'boorbedrijf' wordt een apart XML-schema gebruikt, waarin nog niet alle objecten opgenomen zitten, bv. putten en filters zitten er nog niet in. Dit leidt dan tot een foutmelding 'Het schema wordt niet ondersteund.be.vlaanderen.dov.schemas.kern.DovSchemaType'. Voor gebruikers met een andere rol kan je kiezen voor het uitgebreide XML-schema, door in het json-bestand als 'invoerwijze' te kiezen voor 'intern' ipv 'edov' (code 1 ipv code 2).
Het antwoord van de server is een json-bestand met daarin een overzicht van succes of fouten van elke element in de XML tegenover het edov-xml-schema.
Het belangrijkste is lijn 8. Daar moet staan 'validatie zonder fouten'; indien niet is het een ongeldig bestand.
Stap 3: het opgeladen bestand importeren
Aan te spreken url: https://services.dov.vlaanderen.be/dov-xdov-server/import
Type request: POST
Header: Content-Type: application/json
Een json-body moet hier mee gestuurd worden; dit is volledig identiek aan de json-body uit stap 2.
cURL
curl -X POST -d "@validate-post-body.json" -k https://services.dov.vlaanderen.be/dov-xdov-server/import -H 'Content-Type: application/json' --key my_key.key --cert my_cert.pem -v
Het antwoord is een json-object met dezelfde structuur als wat er opgestuurd is, maar waar het "id" (zie lijn 2 in onderstaand voorbeeld) ingevuld is.
Dat is het invoerlogID waarvan in stap 4 gebruikt gemaakt kan worden om de verwerking van het xml-bestand op te volgen.
Stap 4 (optioneel): het opvragen van de status van de import
De import is een asynchroon proces, wat betekent dat u een bestand registreert om te importeren, maar dat het systeem dit zal verwerken van zodra het daar de tijd voor heeft.
Dat zal meestal wel binnen de 2 minuten gebeuren, maar dat is zeker niet gegarandeerd.
Het is dus zaak om deze url periodiek op te roepen om de echte status van de import te kennen.
Aan te spreken url: https://services.dov.vlaanderen.be/dov-xdov-server/logs/[invoerlogID]
Of met extra details (detailoverzicht per opgeladen object) : https://services.dov.vlaanderen.be/dov-xdov-server/logs/[invoerlogID]/details
De url is dus afhankelijk van het invoerlogID dat bekomen is in stap 3
Type request: GET
Header: Content-Type: application/json
cURL
curl https://services.dov.vlaanderen.be/dov-xdov-server/logs/804327 -H 'Content-Type: application/json' --key my_key.key --cert my_cert.pem -v of curl https://services.dov.vlaanderen.be/dov-xdov-server/logs/804327/details -H 'Content-Type: application/json' --key my_key.key --cert my_cert.pem -v
Het antwoord is hetzelfde json-object zoals teruggekomen is in stap 3, mét toevoeging van de huidige status van deze import.
Mogelijke statussen (zie lijn 17)
- niet verwerkt: de import is nog niet gestart
- in verwerking: import wordt op dit moment verwerkt
- verwerkt met fouten: import is afgelopen en er zijn één of meerdere fouten
- verwerkt met waarschuwingen: import is afgelopen en er zijn één of meerdere waarschuwingen
- foutloos verwerkt: import is afgelopen en er zijn geen fouten
Bijkomende mogelijkheden
Opvragen van alle opgeladen bestanden
Het is ook mogelijk om een lijst op te vragen van de opgeladen bestanden.
De data moet 'paged' opgevraagd' worden, wat wil zeggen dat er een startIndex en een resultSize moet meegegeven worden in de url.
Aan te spreken url:
https://services.dov.vlaanderen.be/dov-xdov-server/logs/?startIndex=0&resultSize=100 voor de laatste 100 opgeladen bestanden
https://services.dov.vlaanderen.be/dov-xdov-server/logs/?startIndex=100&resultSize=100 voor de vorige 100
enz.
Om te weten hoeveel bestanden er op geladen zijn kan de reeds vermelde url
https://services.dov.vlaanderen.be/dov-xdov-server/logs/count
gebruikt worden
Type request: GET
Url parameters: startIndex en resultSize (case sensitive én verplicht)
Header: Content-Type: application/json
cURL
#om na te gaan hoeveel bestanden er opgeladen zijn: curl https://services.dov.vlaanderen.be/dov-xdov-server/logs/count -H 'Content-Type: application/json' --key my_key.key --cert my_cert.pem -v #daarna kan een range opgevraagd worden (de meest recente uploads staan eerst): curl https://services.dov.vlaanderen.be/dov-xdov-server/logs/?startIndex=0&resultSize=100 -H 'Content-Type: application/json' --key my_key.key --cert my_cert.pem -v
Het antwoord is als volgt (voorbeeld met 1 resultSize=1):
[ { "id": "1296073", "omschrijving": "opladen XML", "gebruikersnaam": "geolab", "invoerwijze": { "code": "2", "beschrijving": "edov" }, "datumOpladen": 1610013593601, "bestand": { "id": "1296072", "naam": "20.12.186_Sondex_Evergem_DOV.xml" }, "datumProcessed": 1610013615150, "status": { "code": "3", "beschrijving": "verwerkt met fouten" }, "options": [], "aantalVerwerkt": 0, "aantalFouten": 2, "partner": "0414460412" } ]
Met het id op lijn 3 kan dan weer de details van 1 enkele verwerking opgevraagd worden ( = stap 4)