VNG-Realisatie / gemma-zaken

Samen ontwikkelen van API's voor Zaakgericht werken
https://vng-realisatie.github.io/gemma-zaken/
Other
41 stars 26 forks source link

Zaken/_zoek en expand: lijst met documenten bij zaak performt slecht door aanwezigheid van 'inhoud' in antwoord. Wat te doen? #2357

Closed MaartenRutten closed 9 months ago

MaartenRutten commented 9 months ago

Om een lijst van documenten bij een zaak te tonen aan de gebruiker maken we gebruik van de expand parameter 'zaakinformatieobjecten.informatieobject' bij POST /zaken/_zoek. Deze expand is nodig om de basisgegevens van een document te tonen aan de gebruiker (Titel, Status, Vertrouwelijkheid,..).

Dat werkt prima MAAR omdat de inhoud van de documenten ook in de expand wordt meegenomen is de performance slecht als veel en/of grote documenten in het dossier aanwezig zijn.

Wat te doen?

Omdat we met het project bij de OWO gemeenten door willen, maken we nu de volgende keuze (in afwachting van een standaard oplossing):

  1. als de gegevens van een (enkelvoudig)informatieobject wordt opgevraagd als onderdeel van een expand dan krijgt 'inhoud' geen waarde
  2. als de gegevens van een (enkelvoudig)informatieobject wordt opgevraagd via een standaard GET dan wordt 'inhoud' wel opgenomen in het antwoord.

Of is er een implementatie mogelijk binnen de huidge standaard die geen performance probleem oplevert?

michielverhoef commented 9 months ago

zaakinformatieobjecten.informatieobject is een incorrecte expand, deze is niet toegestaan. Het is met expand alleen toegestaan naar de eigen API te expanden en naar de Catalogi API. zaakinformatieobjecten.informatieobject zou een expand van de Zaken API naar de Documenten API betekenen.

Zie ook https://vng-realisatie.github.io/gemma-zaken/standaard/expand_patroon onder het kopje "Grenzen aan het expand patroon":

Dit zullen dus verschillende calls moeten worden. Bijvoorbeeld eerst een zoekopdracht met expand op zaakinformatieobjecten. Wanneer je de UUIDs van de urls af haalt kun je met de enkelvoudiginformatieobject__zoek operatie in de Documenten API in 1 aanroep de op te vragen Informatieobjecten tonen.

MaartenRutten commented 9 months ago

(De pagina waar je naar verwijst was mij onbekend. Via welke navigatie stappen kan ik die pagina bereiken? Zoeken via Google levert de pagina niet op.)

We gaan enkelvoudiginformatieobject__zoek operatie gebruiken om de meta-gegevens van alle documenten op te halen om het dossier aan de gebruiker te kunnen tonen.

In de response is 'inhoud' opgenomen. Als in het dossier veel en/of grote documenten aanwezig zijn dan zal het tonen van het dossier (een lijst met metagegevens van de documenten) slecht performen.

Het zou goed zijn als de consumer kan aangeven of de 'inhoud' wel/niet in het response opgenomen moet worden. Dan kan bij het opbouwen van de lijst de variant 'inhoud-niet-opnemen' worden gebruikt en bij de actie 'bekijken document' de variant 'inhoud-wel-opnemen'.

michielverhoef commented 9 months ago

(De pagina waar je naar verwijst was mij onbekend. Via welke navigatie stappen kan ik die pagina bereiken? Zoeken via Google levert de pagina niet op.)

Via het linkermenu "Standaard", onderaan de pagina staat onder het kopje Performance een link naar de bewuste pagina.

Maar dat is wel een goed punt, blijkbaar is de documentatie niet duidelijk genoeg. Dit ga ik anders doen.

In de response is 'inhoud' opgenomen. Als in het dossier veel en/of grote documenten aanwezig zijn dan zal het tonen van het dossier (een lijst met metagegevens van de documenten) slecht performen.

In de response is het veld inhoud inderdaad opgenomen. Alleen bevat dat niet het bestand maar de url naar het bestand. Je krijgt dus alleen de metadata terug, geen binaire inhoud.

De toelichting bij het veld inhoud is: string or null <uri> (inhoud) Download URL van de binaire inhoud.

Zie ook: https://vng-realisatie.github.io/gemma-zaken/standaard/documenten/redoc-1.4.2#tag/enkelvoudiginformatieobjecten/operation/enkelvoudiginformatieobject_retrieve