From d8860563b681d85e6a18ccacaaa5b193d1392707 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Mon, 24 Jun 2024 16:26:38 +0200 Subject: [PATCH] Vervlechting met Open Catalogi opgestart --- README.md | 2 +- docs/Bronnen.puml | 14 ++-- docs/Componenten.puml | 36 +++++++++ ...licatie.puml => PublicatiePlatformen.puml} | 23 ++---- docs/product/Features.md | 13 ++++ docs/techniek/Architectuur.md | 77 ++++++++++++------- 6 files changed, 110 insertions(+), 55 deletions(-) create mode 100644 docs/Componenten.puml rename docs/{Publicatie.puml => PublicatiePlatformen.puml} (61%) diff --git a/README.md b/README.md index 94a5fa36..dc7eb15c 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ > > Terug kijken afgelopen webinars en meetings? > -> - [12-04-2024 | Community Meeting](https://www.youtube.com/watch?v=ab_FEexYYMY). +> - [12-06-2024 | Community Meeting](https://www.youtube.com/watch?v=ab_FEexYYMY). > - [09-05-2024 | Community Meeting](https://www.youtube.com/watch?v=Q0ElcTP-R4M). > - [10-04-2024 | Community Meeting](https://www.youtube.com/watch?v=zMqElLzy0BM). > - [25-03-2024 | Sim-Groep Webinar](https://www.simgroep.nl/toekomstbestendige-woo-oplossing) diff --git a/docs/Bronnen.puml b/docs/Bronnen.puml index 43c8beb8..5bb7972d 100644 --- a/docs/Bronnen.puml +++ b/docs/Bronnen.puml @@ -3,19 +3,16 @@ title Integratie op bronnen footer: OpenWoo.app header: OpenWoo.app -' Publicatie platformen (Laag 5 UI) -frame "Publicatie platformen " { - interface "Afnemer" as Searchsite #1abc9c -} -' Services(Laag 4) -frame "Services" { + +' Services (Laag 4) +frame "Services (Laag 4)" { process "OpenWoo Service" as OWS #1abc9c } ' Integratie (Laag 3) -frame "Integratie" { - database "Open Index" as OI #1abc9c +frame "API (Laag 3)" { + database "Open Index" as OI #1abc9c } ' Bronnen (Laag 2) @@ -29,7 +26,6 @@ frame "Bronnen" { } ' Relationships -Searchsite -down-> OI : Bevraagd (API) OWS ..> OI: Slaat op in OWS -down-> CMS : Scrapes periodically\nUses as source diff --git a/docs/Componenten.puml b/docs/Componenten.puml new file mode 100644 index 00000000..ce7aecfc --- /dev/null +++ b/docs/Componenten.puml @@ -0,0 +1,36 @@ +@startuml +title Motorblok +footer: OpenWoo.app +header: OpenWoo.app + +package "Layer 4 (Logic)" as layer4 { + [Synchronisaties] as service +} + +package "Layer 2 (API)" as layer2 { + +package "Open Index" { + [Search API] as SearchAPI +} +package "Open Registers" { + [Admin API] as ObjectsAPI +} +} + +package "Layer 1 (Data)" { + +package "Search Index" { + [Elastic Search] as search +} + +package "Object Store" { + [ORC] as db +} +} + +db .left.> search: Update +ObjectsAPI .down.> db: Persist +SearchAPI <.down. search: Lookup +service .down.> ObjectsAPI: In synchroniseren van publicaties + +@enduml \ No newline at end of file diff --git a/docs/Publicatie.puml b/docs/PublicatiePlatformen.puml similarity index 61% rename from docs/Publicatie.puml rename to docs/PublicatiePlatformen.puml index 11232649..f7bea2d6 100644 --- a/docs/Publicatie.puml +++ b/docs/PublicatiePlatformen.puml @@ -7,37 +7,26 @@ header: OpenWoo.app frame "Publicatie platformen " { actor "KOOP" as KOOP #cce5ff actor "WOOGLE" as WOOGLE #cce5ff + actor "Open Catalogi" AS OpenCatalogi #1abc9c + interface "KoopHulpje" AS KoopHulpje #1abc9c interface "Website" AS Website #1abc9c interface "Thema site" as Themasite #1abc9c interface "Zoek pagina" as Searchsite #1abc9c } -' Services(Laag 4) -frame "Services" { - process "OpenWoo Service" as OWS #1abc9c -} - -' Integratie (Laag 3) +' API's (Laag 2) frame "Integratie" { - database "Open Index" as OI #1abc9c + database "Search API" as OI #1abc9c } -' Bronnen (Laag 2) -frame "API" { - component "Bronnen" as Bronnen #cce5ff -} ' Relationships KOOP -down-> OI : Indexeerd (XML Sitemap) WOOGLE -down-> OI : Indexeerd (API) +OpenCatalogi -down-> OI : Bevraagd (API) +KoopHulpje -down-> OI : Bevraagd (API) Website -down-> OI : Bevraagd (API) Themasite -down-> OI : Bevraagd (API) Searchsite -down-> OI : Bevraagd (API) -OWS ..> OI: Slaat op in - -OWS -down-> Bronnen : Scrapes periodically\nUses as source - -' Notifications -Bronnen -up-> OWS : Notifies of changes or deletes @enduml \ No newline at end of file diff --git a/docs/product/Features.md b/docs/product/Features.md index c9b0393d..12c07b05 100644 --- a/docs/product/Features.md +++ b/docs/product/Features.md @@ -17,3 +17,16 @@ Automatiseer het publicatieproces en verminder handmatige inspanningen met de sl ## Toekomstbestendig en Veilig Bereid uw organisatie voor op toekomstige ontwikkelingen met configureerbare publicatietypen en verhoog de veiligheid en efficiëntie door het verminderen van directe bevragingen op bronnen. + + + +| Functionaliteit | Component | Laag | Beschrijving | +| Publicatie platform | Woo Website Template | 5 (UI) | +| Search (Openbaar) | Open Index | API (2) | Een zoek index met geavenceerde facet search opties +| Search (Vertrouwlijk) |Open Index | API (2) | +| Publicatie Register | Open Register | API (2) | Het publicatie register bevat de publicatie objecten, en onder +| Publicatie Beheer | OpenWoo.plugin voor drupal (Io), OpenWoo app voor nextCloud (Conduction), React container (Acato) | +| Document Creatie | OpenWoo app voor nextCloud (Conduction) | | Creert PDF versies van documenten en bijvoorbeeld voorbladen en inhouds opgaven | +| Harvesting | Woo Service | 3(integratie) | +| + diff --git a/docs/techniek/Architectuur.md b/docs/techniek/Architectuur.md index f1c23e2f..83e4d6c2 100644 --- a/docs/techniek/Architectuur.md +++ b/docs/techniek/Architectuur.md @@ -4,22 +4,24 @@ > > Hiervoor hebben we een apart [Slack kanaal](https://samenorganiseren.slack.com/archives/C067Q3UE9F0) binnen Common Ground. We helpen je daar graag verder. -## Versimpelde opzet +## Hergebruik tot op het bot -OpenWoo.app bestaat in essentie uit een drietal onderdelen die samen de totaaloplossing vormen. - -![Basis Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Basis.svg) +OpenWoo.app maakt voor haar onderliggende techniek en architectuur gebruik van [Open Catalogi](https://documentatie.opencatalogi.nl/) meer informatie technsiche informatie over publiceren naar het federatief datastelsel vind je dan ook in de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). ### Publicatieplatform (onderdeel 1) -Woo-publicaties moeten worden uiteraard ergens worden gepubliceerd, dat gebeurd via een organisatie specifiek Woo-publicatieplatform. De OpenWoo.app ondersteund meerdere mogelijke publicatieplatformen waarbij de keuze bij u als organisatie ligt of u het publicatieplatform binnen uw website wilt integreren of niet. +Woo-publicaties moeten worden uiteraard ergens worden gepubliceerd, dat gebeurd via een organisatie specifiek Woo-publicatieplatform. Open Catalogi kent haar eigen zoeken UI maar voor de gemiddelde gemeente is die te generiek. Daarom zijn er vanuit het OpenWoo.app project een aantal alternatieve user interfaces beschickbaar waarbij de overheid zelf kan kiezen welke interface het beste bij haar past. Hierbij kunt u zowel kiezen voor de zoektinterface als los component als voor een intergratie binnen uw huidoge website. + +Let op, alle interfaces maken onderwater gebruik van de [zoeken-API](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/#de-zoek-api). U kunt de interfaces dan ook niet gebruiken zonder een Open Catalogi zoeken-api. +. | Component | Open Source | Leverancier(s) | Beschrijving | Meer informatie | |-------------------------------|-------------|----------------------------------------------------------|-------------------------------------------------------------------|-----------------| -| Losse React pagina | Ja | [Conduction](https://conduction.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | -| Integratie in Open Webconcept | Ja | [Yard](https://www.yard.nl/), [Acato](https://acato.nl/) | Een NL Design weergavecomponent voor WordPress-websites | | -| Sim Site | ? | SIMgroep | Een weergavecomponent voor SIM Site | | -| Drupal Site | ? | "??" | Een weergavecomponent voor Drupal | | +| Open Catalogi zoeken-Ui | Ja | [Conduction](https://conduction.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | +| OpenWoo.app default zoeken-Ui | Ja | [Conduction](https://conduction.nl/), [Shift2](https://www.shift2.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | +| Tilburgse frontend | Ja | [Acato](https://acato.nl/) | Een losse NL Design zoekpagina in de huisstijl van uw organisatie | | +| Integratie in Open Webconcept | Ja | [Yard](https://www.yard.nl/), [Conduction](https://conduction.nl/) | Een NL Design weergavecomponent voor WordPress-websites | | +| Drupal Site | Ja | [Drupal voor Overheden](https://www.drupalvooroverheden.nl/) | Een weergavecomponent voor Drupal | | | TYPO3 thema site | Ja | [OpenGemeenten](https://www.opengemeenten.nl/) | Een weergavecomponent voor TYPO3-websites | | Naast het lokale publicatieplatform ondersteund OpenWoo.app ook altijd de volgende landelijke publicatieplatformen @@ -27,30 +29,53 @@ Naast het lokale publicatieplatform ondersteund OpenWoo.app ook altijd de volgen - Een gestandaardiseerde verbinding met het Kennis- en Exploitatiecentrum Officiële Publicaties (KOOP) - Een federale zoekvraag via [koophulpje.nl](https://koophulpje.nl/). - WooGLe van de Wooverheid van de UvA. +- KoopHulpje van OpenWoo.app +- OpenCatalogi.nl van Rotterdam > **notice** > Voor Open Source componenten bent u natuurlijk niet beperkt tot deze leveranciers, dit zijn de op dit moment bij ons bekende leveranciers. > > Weet u niet welk frontend framework uw organisatie op dit moment gebruikt? Kijk dan eens op [digimonitor](https://www.digimonitor.nl/cms-en/gemeenten/). -![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Publicatie.svg) +![Publicatie Platformen Architectuur](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/PublicatiePlatformen.svg) ### Motorblok (onderdeel 2) -Het kloppende hart (of motorblok) onder het publicatieplatform is het [Common Ground](https://commonground.nl/) component [OpenIndex](https://openindex.online/) dat haar oorsprong vindt in het [OpenCatalogi](https://opencatalogi.nl/) project. Dit OpenIndex-component stel ons in staat om snel en organisatie-overstijgend te zoeken in meerdere Woo-categorieën tegelijkertijd. Hierbij wordt onder water gebruik gemaakt van een MongoDB-object store. +Het kloppende hart (of motorblok) onder het publicatieplatform is het [Common Ground](https://commonground.nl/) project [Open Catalogi](https://documentatie.opencatalogi.nl/) vanuit dit poject nemen we een 2 tal componenten over te te weten [Open Index](https://openindex.online/) en [Open Registers](https://openregisters.app/). + +**Open Index** stel ons in staat om snel en organisatie-overstijgend te zoeken in meerdere Woo-categorieën tegelijkertijd. Hierbij wordt onder water gebruik gemaakt van elastic search. Open index normaliseerd en standaaardiseerd elastic search voor ons door het toevoegen van json-ld, contextueele metadata, organisaties, directory en catalogi waardoor de onderliggende infrastructuur ontstaat voor een federatieve zoekvraag. Het vormt daarmee het hard van zoeken in OpenWoo.app. Meer informatie over hoe we de techniek van Open Index inzetten vind je in de [architectuur documentatie van open catalogi](https://documentatie.opencatalogi.nl/Handleidingen/Architectuur/). + +**Open Registers** levert voor ons een publicatie register waar publicaties binnen komen (automtatisch aan de hand van synchronysatie of handmatig) en we deze behandelen voordat ze verder worden gecomuniseerd naar Open Index. + +Er is dus een bewuste en harde scheiding tussen de werkbak (open Registers) en de publicatie bak (open INdex) waarbij de zoek-API (en daarme de burger interface) gebruii maakt van de zoekbak. De medewerkers maken via de Admin-UI en beheers interface gebruik van Open Registers om publicaties te behandelen, onder het behandelen van publicatie verstaan we onder andere +- Controleren en aanvullen van metadata +- Toevoegen van documenten +- Controleren van annonimisering +- Evenuteel annonimiseren a.h.v. externe servcie +- Accoderen voor publicatie +- Eventueel terugtrekken van publicaties +- Archiveren + +Hierbij dient te worden opgemerkt dat het publicatie princiepe niet allen de WOO maar ook WHO en DSO onderstuend. + +Ahankenlijk van de specifieke configuratie wensen van overheden kunnen sommige van deze handelingen worden geautomatiseerd (bijvoorbeeld terugtrekken van en DSO publicatie die ter inzage ligt na het verloop van het termijn). Hiervoor ondersteunen we twee patronen -Het tweede component is de [OpenWoo service](https://openwoo.openservices.online/), gebaseerd op het Common Ground [OpenServices](https://openservices.online/) framework. Deze service faciliteert de data-uitwisseling tussen de onderliggende bronnen en de [Open Index](https://openindex.online/). +- Een BPMN (Camunda) task die wordt afgetrap n.a.v een notificatie bericht +- Een NextCloud workflow + +**OpenWoo Service** gebaseerd op het Common Ground [OpenS ervices](https://openservices.online/) framework faciliteerd het inlezen van externe bronnen naar `open index`toe. Hierbij wordt bij voorkeur gebruik gemaakt van een pubsub principe (abbonement op notifiacties vanuit de bron) maar kan ook (indien gewenst) gebruik worden gemaakt van crawling. | Component | Leverancier | Meer informatie | |-----------------|---------------|---------------------------------------------------| -| Open Index | Conduction | [Open Index](https://index.openregisters.app/) | -| OpenWoo Service | Conduction | [Lees meer](https://openwoo.openservices.online/) | +| Open Index | [Conduction](https://conduction.nl/) | [Documentatie](https://index.openregisters.app/) | +| Open Registers | [Conduction](https://conduction.nl/) | [Documentatie](https://openregisters.app/) | +| OpenWoo Service | [Conduction](https://conduction.nl/) | [Documentatie](https://openwoo.openservices.online/) | -![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Integratie.svg) +![Componenten Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Componenten.svg) ### Bronnen (onderdeel 3) -Een van de krachten van OpenWoo.app is het ondersteunen en automatisch publiceren vanuit een groot aantal bronnen +Een van de krachten van OpenWoo.app is het ondersteunen en (automatisch) publiceren vanuit een groot aantal bronnen | Component | Koppelvlak | Open Source | Leveranciers(s) | Meer informatie | |------------------|------------|-------------|-----------------------------------------------|-----------------| @@ -76,18 +101,22 @@ De drie onderdelen samen geven ons een totaalbeeld van samenwerkende componenten ![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Totaal.svg) -## Hoe werkt dat scrapen vanuit de integratievoorziening? +## Hoe werkt dat scrapen vanuit de woo service? -De integratievoorziening "scraped" elke nacht alle relevante informatie en bouwt hier een organisatie-specifieke index over op. De stappen zijn als volgt: +De woo service "scraped" elke nacht alle relevante informatie en synchronyseerd deze met de publicatie objecten in Open Registers. De stappen zijn (bijvoorbeeld bij een zaaksysteem) als volgt: 1. Ophalen van alle zaaktypen. 2. Per zaaktype worden de beschikbare eigenschappen gecontroleerd (zie inrichting zaaksysteem). 3. Voor elk zaaktype dat aan de voorwaarden voldoet, worden de zaken opgehaald. -4. Per zaak wordt gecontroleerd of er een publicatiedatum is; zo ja, wordt de zaak opgenomen in de index. -5. Zaken die niet zijn gevonden in bovenstaande loop, maar wel in de index staan, worden verwijderd. +4. Per zaak wordt gecontroleerd of er een publicatiedatum is; zo ja, wordt de zaak opgenomen opgenomen of bijgewerkt als publicatie object in Open Registers. +5. Zaken die niet zijn gevonden in bovenstaande loop, maar wel in Open Registers staan, worden gedepubliceerd en geoormerkt. Het bovenstaande proces zorgt ervoor dat het zaaksysteem leidend is en dat zaken zowel kunnen worden gepubliceerd als worden gedepubliceerd. + + + + ## Integraal (Organisatiebreed) zoeken De kern van de Woo is het zoeken in de openbare informatie van een overheid organisatie, hierbij zou het in theorie niet mogen uitmaken in welke bron/applicatie informatie staat. Deze vorm van bron en domein overstijgend zoeken kennen we vanuit overheid architectuur al langer en noemen we doorgaans integrale zoekvraag. @@ -101,14 +130,6 @@ Er word hierbij dus géén gebruik gemaakt van een landelijke index, het geen da De bevragingen tussen de federale zoekvraag en de verschillende organisaties kan via [NLX/FSC]( https://www.nlx.io/) lopen, of daarbuiten. Gezien het publieke bevragingen zijn op openbare informatie is NLX an zich niet verplicht en kan het inregelen van een PKI certificaat nodeloos complex zijn. Dat gezegd hebbende biedt NLX ook voordelen met betrekking tot het monitoren en loggen van verkeer. ![OpenWeb Architecture](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/Federatie.svg) -## Commonground -Als commonground applicatie is OpenWoo.app uitaard op te delen in componenten - -- Publicatie Platform (laag 5 Interactie) -- Woo Service (laag 4 Services) -- Open Index (laag 3 Integratie) - -![Common Ground](https://raw.githubusercontent.com/ConductionNL/woo-website-template/main/docs/CommonGround.svg) ## Domeinen OpenWoo.app is een organisatie specifieke applicatie waarvan de installaties onderling een federatief netwerk vormen. Dat kan het wat onduidenlijk maken wat waar leeft.