Inleiding
Connectie met GIPOD (Generiek Informatieplatform Openbaar Domein) is nodig om een inname van de publieke ruimte aan te vragen.
Use cases
-
Nagaan of een geplande inname van de publieke ruimte conflicteert met een reeds bestaande inname (bv. een ander evenement of werken op dezelfde locatie en periode).
-
Een inname van de publieke ruimte registreren bij GIPOD naar aanleiding van een evenement, en deze na registratie bevestigen zodat ze definitief wordt.
-
Een eerder geregistreerde inname terug intrekken, bijvoorbeeld wanneer een evenement niet doorgaat.
Setup
Onboarding
GIPOD is een generieke registratiedienst voor het beheer van innames van het openbaar domein, aangeboden door Athumi (Digitaal Vlaanderen). De authenticatie verloopt via het gedeelde OAuth2/JWT-client-assertion-mechanisme van Digitaal Vlaanderen ("GeoSecure").
-
Vraag een aansluiting aan bij Athumi via gipod@athumi.eu.
-
Registreer een OAuth-client via het zelfbedieningsportaal ('Beheerportaal') van Digitaal Vlaanderen. Er zijn twee gescheiden omgevingen:
-
Beheerportaal T&I: gekoppeld aan de GIPOD-beta-omgeving.
-
Beheerportaal: gekoppeld aan de GIPOD-productieomgeving.
-
-
Laad in het Beheerportaal een gevalideerde public key op (een JWK-certificaat), gekoppeld aan je OAuth-client.
-
Koppel en valideer eerst de connectie met de test-/beta-omgeving, en herhaal dit daarna voor productie.
Deze stappen zijn in grote lijnen dezelfde als voor aansluiting met MAGDA, en identiek qua onderliggend mechanisme aan de Fluvius-connector.
Maven dependency in pom.xml
Voeg onderstaande maven dependency toe in je pom.xml. Dit zorgt ervoor dat de connector code binnengehaald en meegenomen wordt in de build van je applicatie.
<dependency>
<groupId>com.skryv.connectors</groupId>
<artifactId>gipod</artifactId>
<version>${skryv.version}</version>
</dependency>
Applicatie eigenschappen
GIPOD-specifieke applicatie eigenschappen.
|
Eigenschap |
Verlplicht |
Default |
Uitleg |
|---|---|---|---|
|
GipodConnectorConfiguration |
|||
|
|
Ja |
- |
Basis-URL van de GIPOD-API. |
|
|
Ja |
- |
Moet op |
|
GipodTokenFetcher |
|||
|
|
Ja |
|
GeoSecure OAuth-scope. |
|
|
Ja |
|
Tokenendpoint. De default wijst naar de test/T&I-omgeving. Stel dit expliciet in voor productie. |
|
|
Ja |
- |
App-nummer/client-id, verkregen via het Beheerportaal. |
|
|
Ja |
- |
Lokaal bestandspad naar de JWK. |
|
|
Nee |
|
Indien |
|
|
Nee |
- |
Naam van het secret in AWS Secrets Manager. Enkel relevant bij |
Formulierdefinitie
De interface verloopt via een formulier dat je opzet binnen de context van het dossier. Hierin verzamel je de nodige inputdata.
|
Input |
Type veld |
Beschrijving |
|---|---|---|
|
|
|
Polygoon die het in te nemen gebied definieert. |
|
|
|
Startdatum inname publieke ruimte. |
|
|
|
Einddatum inname publieke ruimte. |
|
|
|
Persoon die de inname van de publieke ruimte aanvraagt (bijvoorbeeld de organisator van het evenement). |
|
|
|
Beschrijving doel of aard van de inname (bijvoorbeeld de naam van het evenement). |
Services en functies
Overzicht
|
Functie |
Retourtype |
Info |
|---|---|---|
|
|
Checkt of er een conflicterende inname van het openbaar domein bestaat binnen een periode en gebied. Schrijft eventuele conflicten terug naar het kaartveld. |
|
|
|
Registreert een inname van het openbaar domein bij GIPOD. Retourneert de GIPOD-event-id. De inname staat na deze stap nog niet definitief. |
|
|
|
Bevestigt een eerder geregistreerde inname, waardoor deze definitief wordt. |
|
|
|
Verwijdert/annuleert een eerder geregistreerde inname. |
Deze functies zijn, naast de workflow expressie, ook rechtstreeks aanroepbaar vanuit Java-code door GipodCamundaConnector (bean gipodService) te injecteren in je klasse:
@RequiredArgsConstructor
public class MyOwnService {
private final GipodCamundaConnector gipodService;
}
Let op: de bean-naam (gipodService) wijkt bewust af van de Maven-artifactnaam (gipod).
getPublicOccupancies
Controleert bij GIPOD of er al een inname van het openbaar domein bestaat die conflicteert met de opgegeven periode en het opgegeven gebied. Zie service taak template 'Register public domain occupation'.
Workflow expression
${gipodService.getPublicOccupancies(execution.processBusinessKey, "formKey", "identiteit.kaart", "identiteit.startdatum", "identiteit.einddatum")}
Java-code
boolean heeftConflict = gipodService.getPublicOccupancies(dossierId, formName, mapPath, startDatePath, endDatePath);
Input
|
Inputparameters |
Data type |
Uitleg |
|---|---|---|
|
|
String |
Dossier ID. |
|
|
String |
Key van het formulier waarin de inputdata voor de GIPOD-check opgeslagen zitten. |
|
|
String |
Referentie naar de kaartcomponent in het formulier. |
|
|
String |
Referentie naar de startdatum in het formulier. Moet in de toekomst liggen. |
|
|
String |
Referentie naar de einddatum in het formulier. Moet na de startdatum liggen, en in de toekomst. |
Output
Retourneert een boolean: true als er een conflict gevonden werd, false indien niet. In het scenario dat je de service aanspreekt vanuit de workflow, komt deze boolean als resultaatvariabele van de service taak in het proces terecht.
Error-handling
Deze functie valideert de periode vóór de aanroep naar GIPOD:
|
Situatie |
Gedrag |
|---|---|
|
Einddatum ligt vóór of gelijk aan de startdatum |
|
|
Start- of einddatum ligt niet in de toekomst |
|
|
GIPOD retourneert een HTTP 400 Bad Request |
|
Deze exceptie wordt niet omgezet naar een BpmnError. Het veroorzaakt een Camunda-incident, maar wel met een herkenbaar bericht.
registerEvent
Registreert bij GIPOD een inname van het openbaar domein op basis van de opgegeven informatie. Zie service taak template 'Registreer evenement'.
Workflow expression
${gipodService.registerEvent(execution.processBusinessKey, "formKey", "emailPad", "beschrijvingPad", "kaartPad", "startdatumPad", "einddatumPad")}
Java-code
String gipodEventId = gipodService.registerEvent(dossierId, formName, emailPath, descriptionPath, mapPath, startDatePath, endDatePath);
Input
|
Inputparameters |
Data type |
Uitleg |
|---|---|---|
|
|
String |
Dossier ID. |
|
|
String |
Key van het formulier waarin de inputdata voor de GIPOD-registratie opgeslagen zitten. |
|
|
String |
Referentie naar het e-mailadres van de contactpersoon. |
|
|
String |
Referentie naar de beschrijving (aard/doel van de inname). |
|
|
String |
Referentie naar de kaartcomponent. |
|
|
String |
Referentie naar de startdatum. |
|
|
String |
Referentie naar de einddatum. |
De functie vult zelf een aantal vaste waarden aan die niet instelbaar zijn via de workflow: het type inname staat altijd op ‘Event/andere’, en de contactrol van de opgegeven contactpersoon staat vast. De organisatie namens wie geregistreerd wordt, wordt automatisch bepaald op basis van je GeoSecure-authenticatie. Dit moet je dus niet zelf meegeven.
Output
Retourneert de GIPOD-event-id (String), die je nodig hebt om de inname later te bevestigen (confirmEvent) of te verwijderen (deleteEvent). In het geval je de functie aanspreekt vanuit de workflow, komt het gipodEventId als resultaatvariabele van de service taak in je proces terecht.
Let op: de inname is op dit punt geregistreerd, maar nog niet bevestigd. Zonder een daaropvolgende confirmEvent-aanroep blijft ze in een niet-definitieve staat.
Error-handling
Deze functie heeft, in tegenstelling tot getPublicOccupancies, geen eigen foutafhandeling. Elke fout (bv. een ongeldige polygon, een GIPOD-foutrespons) resulteert in een niet-opgevangen, technische exceptie en dus een Camunda-incident zonder specifiek herkenbaar foutbericht.
confirmEvent
Bevestigt een eerder geregistreerd evenement bij GIPOD op basis van de GIPOD-event-id. De inname is hierna definitief. Zie service taak template 'Bevestig evenement'.
Workflow expression
${gipodService.confirmEvent(gipodEventId)}
Java-code
gipodService.confirmEvent(gipodEventId);
Input
|
Inputparameters |
Data type |
Uitleg |
|---|---|---|
|
|
String |
Procesvariabele waarin de GIPOD-event-id opgeslagen zit (verkregen via |
Output
Geen output (void).
Error-handling
Geen eigen foutafhandeling. Een niet-opgevangen technische exceptie resulteert in een Camunda-incident.
deleteEvent
Verwijdert een eerder geregistreerd evenement bij GIPOD op basis van de GIPOD-event-id. Zie service taak template 'Verwijder evenement'.
Workflow expression
${gipodService.deleteEvent(gipodEventId)}
Java-code
gipodService.deleteEvent(gipodEventId);
Input
|
Inputparameters |
Data type |
Uitleg |
|---|---|---|
|
|
String |
Procesvariabele waarin de GIPOD-event-id opgeslagen zit (verkregen via |
Output
Geen output (void).
Error-handling
Geen eigen foutafhandeling. Een niet-opgevangen technische exceptie resulteert in een Camunda-incident.