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

[VRAAG] Wat is de CMIS-mapping van resources in de Documenten API #2353

Open joeribekker opened 9 months ago

joeribekker commented 9 months ago

Op dit moment zetten wij (Open Zaak) resources om in meta-data in CMIS, indien je koppelt met een DMS (via CMIS dus).

Er is, net als bij ZDS 1.x, een "zaakfolder", met daarin het fysieke document, aangevuld met meta data zoals dat is meegegeven via de Documenten API. Voor andere resources in de Documenten API (Verzending, Gebruiksrechten, ObjectInformatieObject) maken we enkel een meta data bestand aan, die deze resource-attributen als CMIS-properties bevat.

Er is echter geen goed gedefinieerde mapping is van de Documenten API naar CMIS-properties, waardoor andere leveranciers dit anders kunnen oplossen, wat onwenselijk is.

Ook blijkt het best wel lastig te zijn om allerlei meta data bestanden te maken voor resources maar we zien geen andere manier omdat we beperkt zijn in wat we allemaal in een CMIS-property kunnen stoppen (geen array's dien dan ook nog doorzoekbaar zijn bijvoorbeeld).

Wellicht is het goed om eens te kijken om de mapping te beproeven, op te schrijven en mee te standaardiseren.

robklomp commented 9 months ago

Ik heb dit met Joeri doorgesproken omdat wij ons FileNet DMS willen aansluiten op Open Zaak of een andere Documenten API. Maar de Documenten API dreigt aan zijn complexiteit ten onder te gaan, wat natuurlijk niet de bedoeling kan zijn.

De essentie van een DMS is opslag van documenten met content en metadata plus een of meer (evt. gelaagde) folders met metadata waaraan deze gekoppeld zijn. Documenten en folders kunnen op ID, metadata of relatie met folders opgezocht worden. Het ligt voor de hand om een bestaand DMS achter de API aan te sluiten, waarbij CMIS koppeling een logische keuze is omdat vrijwel alle DMS'en dit ondersteunen. Daar spelen wel een paar issues mee, zoals de 3 mogelijke CMIS varianten (SOAP, Atompub en Browser Binding) en onvolledige implementatie bij sommige DMS'en (bv Corsa).

Ik denk dat het verstandig is om de Documenten API zo eenvoudig mogelijk te houden en zo dicht mogelijk bij de basis DMS- en CMIS-mogelijkheden. Hoe meer functionaliteit in de API hoe moeilijker de implementatie wordt, met als risico dat implementatiepartijen afhaken of onvolledige API's bouwen. Als het datamodel van documenten en folders eenvoudig gehouden wordt (zoals bij ZDS) dan hebben we de meeste kans dat verschillende partijen verschillende DMS'en kunnen voorzien van de Documenten API. Met folders als structuur en dataopslag is veel te bereiken maar er zijn grenzen. De hoeveelheid metadata elementen is overigens geen probleem, complexiteit soms wel. Bv. arrays: die zou je mogelijk kunnen implementeren met meerdere folders gerelateerd aan een document. Maar of dat in elk DMS kan weet ik niet, in FileNet in ieder geval wel.

Daarnaast bevatten DMS'en heel veel historie! We moeten daarom rekening houden met het ontstaan van nieuwe datamodellen: vroeger documenten zonder zaken, daarna het ZDS model met zaken, nu de Documenten API en in de toekomst weer iets nieuws. Ondanks dat moeten alle documenten centraal vindbaar blijven.

Lijkt me goed om eens een overleg in te schieten met een aantal mensen met kennis van hun DMS.

michielverhoef commented 9 months ago

Op zich een goed idee om de vertaling naar CMIS uit te werken. Aangezien jullie al een uitwerking hebben lijkt het me goed om daar van uit te gaan.

Enkele vragen die ik alvast heb: De meta data bestanden, gaat het om de resources verzending, objectinformatieobject nen gebruiksrechten? Worden dat dan cmis:items of cmis:objecten? Vanuit onderstaande documentatie begrijp ik dat een cmis:item geen versionering kent, wat het misschien lastig maakt om te tijdreizen.

NB. Ik ben uitgegaan van wat ik hier gelezen heb: https://subscription.packtpub.com/book/web-development/9781782163527/1/ch01lvl1sec12/an-overview-of-the-cmis-standard

EduardWitteveen commented 9 months ago

@robklomp Wij gebruiken ook cmis in combinatie met openzaak. Graag neemt de gemeente Súdwest-Fryslân hier aan deel, op basis van de vraag zal @jachov en ik aanwezig zijn

robklomp commented 9 months ago

@joeribekker kun jij de vraag van Michiel beantwoorden? Ik merk dat ik achter loop met de documenten API... En ik heb geen idee hoe dit in CMIS op alle gangbare DMS'en (!) kan werken, want ik vermoed dat daar wel een probleem zit. Vandaar mijn voorstel om het model eenvoudig te houden.

michielverhoef commented 9 months ago

Ik ga een datumprikker rondsturen. Aan iedereen die mee zou willen doen en geen uitnodiging heeft ontvangen, laat het me even weten en ik voeg je toe.

michielverhoef commented 8 months ago

Er blijkt behoefte te zijn aan duidelijkheid omtrent de status van CMIS en een mapping op de Documenten API. De bestaande mapping uit Zaak- Documentservices (ZDS) lijkt bruikbaar maar bij nadere bestudering heb ik nog een aantal vragen:

Onderstaande is op basis van de Specificatie Zaak- Documentservices 1.2 maar komt ook in eerdere versies van ZDS voor.

In de API's voor Zaakgericht werken (ZGW) wordt de Documenten API rechtstreeks aangesproken door de consumer applicatie. In de aanroepen is geen zaakinformatie beschikbaar en het is ook mogelijk om informatieobjecten die niet zaakgericht zijn in de Documenten API op te slaan. Alleen bij het aanmaken van een ObjectInformatieObject vanuit de Zaken API is zaakinformatie bekend. Dat is dan ook alleen maar de url naar die zaak toe.

De informatie om een Zaken DMS boom aan te maken en de juiste folder te gebruiken om een enkelvoudiginformatieobject aan te maken ontbreekt in de POST EIO operatie

Dit maakt het lastig om een document gelijk al op de juiste plaats in een DMS te plaatsen. De CMIS Adapter van Open Zaak lost dit probleem op door een document eerst in een tijdelijke folder te plaatsen en het informatieobject te verplaatsen bij het toevoegen aan een zaak.

De Zaken DMS boom lijkt zo te zien geen goede structuur. Tenzij we de scope van de Documenten API drastisch aanpassen is de vraag: Hoe moet het dan wel? Om het informatieobject als gegeven direct onder de root te nemen maakt het wel een heel grote, onoverzichtelijke boel.

Maar zoals gezegd, de informatie ontbreekt voor een structuur als deze (geleend van de CMIS adapter van OpenZaak):

CMIS Root
+-- DRC (cmis:folder)
    +-- [zaaktype-folder] (drc:zaaktypefolder)
        +-- [year] (cmis:folder)
            +-- [month] (cmis:folder)
                +-- [day] (cmis:folder)
                    +-- [zaak-folder] (drc:zaakfolder)
                        +-- [filename] (drc:document)
                        +-- Related data (cmis:folder)
                            +-- [filename]-gebruiksrechten (drc:gebruiksrechten)
                            +-- [filename]-oio (drc:oio)
michielverhoef commented 8 months ago

Na er nog eens over nagedacht te hebben is de enige andere oplossing (anders dan die ik zo 1,2,3 kan bedenken een bericht waarmee zowel een nieuw EIO gemaakt kan worden als een relatie met een zaak gelegd kan worden.

Los van een dergelijk bericht maken zitten er nog wat hobbels op de weg: Op dit moment mag een ObjectInformatieObject alleen aangemaakt worden door de Zaken API of de Besluiten API. Bovendien is er (nog) geen synchonisatie van de Documenten API met De Zaken API beschreven. Maar niets wat niet opgelost kan worden.

@robklomp @EduardWitteveen

robklomp commented 8 months ago

@michielverhoef
Ik zou een paar uitgangspunten willen voorleggen voor de Documenten API.

Samenvattend zou ik willen pleiten voor een Documenten API als gestandaardiseerd voorportaal voor een DMS, daarbij rekening houdend met de mogelijkheden van de in Nederland meest voorkomende DMS'en. Dat betekent:

Overigens is het gebruikelijk om documenten eerst op te slaan en pas later aan een zaak te koppelen. Bijvoorbeeld een document aangeboden bij een webformulier-aanvraag wordt opgeslagen voordat de zaak aangemaakt wordt. Dat is voor een DMS ook geen probleem want de relatie document-folder(s) kan altijd later gelegd worden. Zaakgegevens zullen ook aan een document gekoppeld moeten worden bij het koppelen van document aan zaak via de Zaken API. Dat was bij ZDS ook zo. Daar zullen meerdere API calls voor nodig zijn.