Project

General

Profile

Project activity #31327

Updated by Erik Hoogland about 2 months ago

Voor de volledige implementatie van DRC 1.4 en 1.5, moet ook de expand feature aan onze DRC worden toegevoegd. Dit zat oorspronkelijk in ticket #30875, maar vanwege complexiteit in een afzonderlijk ticket wordt behandeld. 

 Relevante regels changelog: 
 <pre> 
 1.4.2 (2023-09-25) 
 =========== 
 - **Changed:** added expand queryparameter to /zoek 
 ---------------------- 
 1.4.0 (2023-08-22) 
 =========== 
 Implementation changes 
 ---------------------- 
 `Issue 2247`_: 
 - **Added:** Introduction of 'expand' feature to the 'documenten' API, enabling more comprehensive data retrieval. 
 - **Changed:** Renamed '_inclusions' to '_expand' for better clarity and consistency. 
 - **Changed:** Updated the 'expand' model to resolve previous errors and improve performance. 
 - **Updated:** Expanded OpenAPI Specification (OAS) to include the 'expand' feature. 
 - **Fixed:** Adjusted renderers to handle nested dictionaries and replace 'Expand' with '_expand'. 
 </pre> 

 Volledig changelog: https://github.com/VNG-Realisatie/documenten-api/blob/develop/CHANGELOG.rst 

 Huidige status expand feature: 
 * Er is een DRCExpandHelper, die in AbstractDrcDeclarativeWebScript wordt gewired 
 * Deze wordt geïmplementeerd bij de API_SEARCH van EnkelvoudiginformatieobjectenPost en de list van GebruiksrechtenGet 
 ** Deze halen de lijst met expand velden uit de body en parameters respectievelijk 
 * De DRCExpandHelper doet het volgende 
 ** Loopt door de lijst van expand velden; 
 ** Voor veld 'url', wordt de URL lokaal opgebouwd en vervolgs intern opgevraagd. Resultaat is JSONObject; 
 ** Voor veld 'informatieobjecttype' wordt property RGBZModel.PROP_INFORMATIEOBJECTTYPE opgehaald, en de UUID er uit gehaald.  
 Hiermee wordt het informatieobjecttype opgehaald m.b.v. de drcCatalogiService, en omgezet naar een JSONObject 
 ** Als het geen speciaal veld is, wordt het gebruikt om een RGBZ propertyvan dezelfde naam op te halen. 
 *** Als dit bestaat, en het is een interne url, wordt het JSONObject opgehaald. 
 *** Als er geen property bestaat, of het geen geldige interne url bevat, wordt een leeg JSOBObject aangemaakt 
 ** Aangemaakte JSONObjecten worden aan een map toegevoegd 
 * De map met expanded velden wordt aan het model toegevoegd 
 * Voor enkelvoudiginformatieobject post en gebruikersrechten get wordt het _expand veld geprint, indien aanwezig. 
 * Voor het ophalen van interne url's, is er een bean WebScriptInternalInvoker aanwezig. 
 ** Deze werkt nu op basis RestTemplate, met een auth token uit het webscript request 
 * Voor EIO en gebruikersrechten, zijn basis test geschreven. 

 Nog te doen: 
 * WebScriptInternalInvoker gebruikt nu RestTemplate, dit moet nog een interne Java call worden. 
 * Er moet nog validatie komen op de expand variabele bij het request. In de referentie implementatie kunnen alleen velden die in de response voorkomen als expand worden meegegeven. 
 * De expand helper moet nog kunnen omgaan met nested velden in expand, i.e. ondertekening.datum. Dit moet als rgbz:ondertekeningDatum worden opgehaald 
 * ophalen van expand bij    bijvoorbeeld url bestandsdeel bij EIO moet nog worden onderzocht. Dit wordt intern niet als property op eio opgeslagen, maar andersom 
 * Builden van url voor expand veld "url" werkt nu enkel voor EIO, moet ook werken voor andere types 
 ** Er zijn meerdere buildUrl functies, deze kunnen mogelijk gecentraliseerd worden 
 ** De benodigde endpoint variables en checks zoals isEnkelvoudiginformatieobject en isGebruiksrechtItem zijn al aanwezig 
 * Expand moet in overige GET (list) en POST (_zoek) webscripts worden verwerkt 
 * Extra test moeten worden geschreven, om de werkwijze binnen Alfresco tegen de DRC referentie te testen. Er is geen duidelijk documentatie van de werking van expand 
 * Extra foutafhandeling moet worden ingebouwd. Er moet nog worden bepaald wat er moet gebeuren bij bijvoorbeeld correcte links zonder informatie er achter (HTTP 404) 

 Deze changes zijn in de branch 'feature/implement-expand/#31327' te vinden

Back