Skip to content

Commit

Permalink
Vervlechting met Open Catalogi opgestart
Browse files Browse the repository at this point in the history
  • Loading branch information
rubenvdlinde committed Jun 24, 2024
1 parent 8ff9745 commit d886056
Show file tree
Hide file tree
Showing 6 changed files with 110 additions and 55 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
14 changes: 5 additions & 9 deletions docs/Bronnen.puml
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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
Expand Down
36 changes: 36 additions & 0 deletions docs/Componenten.puml
Original file line number Diff line number Diff line change
@@ -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
23 changes: 6 additions & 17 deletions docs/Publicatie.puml → docs/PublicatiePlatformen.puml
Original file line number Diff line number Diff line change
Expand Up @@ -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
13 changes: 13 additions & 0 deletions docs/product/Features.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) |
|

77 changes: 49 additions & 28 deletions docs/techniek/Architectuur.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,53 +4,78 @@
>
> 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

- 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 |
|------------------|------------|-------------|-----------------------------------------------|-----------------|
Expand All @@ -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.

Expand All @@ -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.
Expand Down

0 comments on commit d886056

Please sign in to comment.