Working version v32.1.X v32.0.X v29.1.X
Working version v32.1.X v32.0.X v29.1.X Dutch

GIPOD

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").

  1. Vraag een aansluiting aan bij Athumi via gipod@athumi.eu.

  2. Registreer een OAuth-client via het zelfbedieningsportaal ('Beheerportaal') van Digitaal Vlaanderen. Er zijn twee gescheiden omgevingen:

  3. Laad in het Beheerportaal een gevalideerde public key op (een JWK-certificaat), gekoppeld aan je OAuth-client.

  4. 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

skryv.connectors.gipod.base-url

Ja

-

Basis-URL van de GIPOD-API.

skryv.connectors.gipod-enabled

Ja

-

Moet op true staan. Staat deze niet op true, dan wordt de volledige GIPOD-configuratie (inclusief de bean gipodService) niet aangemaakt.

GipodTokenFetcher

skryv.connectors.geosecure.gipod.scope

Ja

dv_notificaties_import

GeoSecure OAuth-scope.

skryv.connectors.geosecure.gipod.request-path

Ja

https://authenticatie-ti.vlaanderen.be/op/v1/token

Tokenendpoint. De default wijst naar de test/T&I-omgeving. Stel dit expliciet in voor productie.

skryv.connectors.geosecure.gipod.app-number

Ja

-

App-nummer/client-id, verkregen via het Beheerportaal.

skryv.connectors.geosecure.gipod.keypath

Ja

-

Lokaal bestandspad naar de JWK.

skryv.connectors.geosecure.gipod.aws.seed.enabled

Nee

false

Indien true, wordt de JWK bij opstart automatisch uit AWS Secrets Manager gehaald.

skryv.connectors.geosecure.gipod.aws.keypath

Nee

-

Naam van het secret in AWS Secrets Manager. Enkel relevant bij aws.seed.enabled=true.

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

Inname

Kaart

Polygoon die het in te nemen gebied definieert.

Startdatum

Datum (string met masker)

Startdatum inname publieke ruimte.

Einddatum

Datum (string met masker)

Einddatum inname publieke ruimte.

E-mailadres contactpersoon

E-mail

Persoon die de inname van de publieke ruimte aanvraagt (bijvoorbeeld de organisator van het evenement).

Beschrijving

Tekst

Beschrijving doel of aard van de inname (bijvoorbeeld de naam van het evenement).

Services en functies

Overzicht

Functie

Retourtype

Info

getPublicOccupancies

boolean

Checkt of er een conflicterende inname van het openbaar domein bestaat binnen een periode en gebied. Schrijft eventuele conflicten terug naar het kaartveld.

registerEvent

String

Registreert een inname van het openbaar domein bij GIPOD. Retourneert de GIPOD-event-id. De inname staat na deze stap nog niet definitief.

confirmEvent

void

Bevestigt een eerder geregistreerde inname, waardoor deze definitief wordt.

deleteEvent

void

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:

Java
@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

execution.processBusinessKey

String

Dossier ID.

formKey

String

Key van het formulier waarin de inputdata voor de GIPOD-check opgeslagen zitten.

identiteit.kaart

String

Referentie naar de kaartcomponent in het formulier.

identiteit.startdatum

String

Referentie naar de startdatum in het formulier. Moet in de toekomst liggen.

identiteit.einddatum

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

PublicOccupanciesException("End date should be after start date")

Start- of einddatum ligt niet in de toekomst

PublicOccupanciesException("The start and end date should be in the future")

GIPOD retourneert een HTTP 400 Bad Request

PublicOccupanciesException met de responsbody van GIPOD als bericht

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

execution.processBusinessKey

String

Dossier ID.

formKey

String

Key van het formulier waarin de inputdata voor de GIPOD-registratie opgeslagen zitten.

emailPad

String

Referentie naar het e-mailadres van de contactpersoon.

beschrijvingPad

String

Referentie naar de beschrijving (aard/doel van de inname).

kaartPad

String

Referentie naar de kaartcomponent.

startdatumPad

String

Referentie naar de startdatum.

einddatumPad

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

gipodEventId

String

Procesvariabele waarin de GIPOD-event-id opgeslagen zit (verkregen via registerEvent).

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

gipodEventId

String

Procesvariabele waarin de GIPOD-event-id opgeslagen zit (verkregen via registerEvent).

Output

Geen output (void).

Error-handling

Geen eigen foutafhandeling. Een niet-opgevangen technische exceptie resulteert in een Camunda-incident.