Skip to content

GovDataOfficial/GovDataPortal

Repository files navigation

Dokumentation

Die Open Data Platform integriert verschiedene Komponenten zu einer vollständigen Portallösung für offene Daten. Insbesondere bindet sie die Metadaten-Katalogsoftware CKAN in eine JavaEE-Server-Umgebung ein.

Komponenten

  • Die Portalsoftware Liferay wird in einem Java-Application-Container wie Apache Tomcat ausgeführt. Sie implementiert den Portlet-Standard JSR 268. Die Anwendungen der Open Data Platform sind als Portlets implementiert, die in diesem Portal laufen.

  • CKAN ist ein für Offene Daten weit verbreiteter Metadaten-Katalog, mit vollständiger REST-API. Zur Anbindung an Java-Anwendungenn wurde eine Java-Client-Bibliothek für die CKAN-API entwickelt (opendataregistry-client). Unterstützt wird CKAN 2.9+. Grundsätzlich können auch andere Datenkataloge angeschlossen werden.

  • Typischerweise wird beiden ein Webserver wie der Apache httpd vorgeschaltet, um HTTP-Anfragen den Anwendungen oder statischen Dateien zuzuordnen

  • Elasticsearch für die Speicherung des Suchindex. Der Suchindex wird mit dem SOLR-Suchindex von CKAN synchron gehalten und von den Liferay-Portlets genutzt, um die Suchanfragen performant zu bearbeiten und die Suchergebnisliste mit den verschiedenen Filtern darzustellen. Derzeit wird Elasticsearch in Version 7.17.x unterstützt. Für die Synchronisation mit dem CKAN Suchindex ist die CKAN-Erweiterung ckanext-searchindexhook (auf GitHub bzw. auf Open CoDE) zuständig.

  • Als Persistenz-Komponente dient ein Datenbank-Server. CKAN arbeitet nur mit PostgreSQL zusammen, Liferay unterstützt alle vom Hibernate-Framework unterstützen Datenbanken also auch PostgreSQL.

  • Noch wichtiger als die manuelle Dateneingabe ist für die Open Data Plattform das automatische Importieren der Metadaten aus entfernten Datenkatalogen, auch Harvesting genannt. Für den automatisierten Import von Metadaten in CKAN wird ein RDF-Harvester ckanext-dcatde (auf GitHub bzw. auf Open CoDE) verwendet.

Architektur

Grundsätzlich sind viele der Komponenten flexibel austauschbar. Ein typischer Aufbau sieht wie folgt aus:

Ein Apache httpd empfängt alle Anfragen per HTTPS. Statische Dateien wie Dumps und Logs werden sofort ausgeliefert. Normale Portalanfragen werden per Reverse Proxy an einen oder bei Hochverfügbarkeit mehrere Tomcat-Prozesse weitergeleitet. CKAN wird per WSGI ebenfalls in einem Apache httpd ausgeführt und bedient die HTTP-REST-Anfragen der Liferay-Anwendungen und die API-Anfragen von außen. Für http://www.govdata.de läuft CKAN statt mit dem Apache Modul mod_wsgi mit dem WSGI HTTP Server Gunicorn (http://gunicorn.org/), was das Python Virtual Environment besser von dem des Betriebsystems trennt. Sowohl Liferay als auch CKAN greifen per PostgreSQL-Client auf den Datenbank-Prozess zu.

Diese Architektur kann sowohl auf einer einzelnen Server-Maschine als auch in einer Microservice-Umgebung umgesetzt werden, da alle Prozesse per Netzwerk miteinander kommunizieren.

Die einzelnen Java-Komponenten der Open Data Platform sind als Portlets umgesetzt, d.h. lose gekoppelt und können grundsätzlich auch einzeln eingesetzt werden. Zentrale Bibliothek ist der opendataregistry-client, der den Oberflächen-Portlets eine einfach Java-API bietet, sodass nicht jedes Portlet selbst direkt mit der REST-Schnittstelle von CKAN interagieren muss.

opendataregistry-client: Zentrale Bibliothek, Java-API für CKAN.

categories-grid-portlet: Zeigt die Kategorien mit Icons und Anzahl der Datensätze an (Startseite)

boxes-portlet: Zeigt neuste Datensätze, Dokumente und Apps (Startseite)

gd-search: Zeigt die Suchmaske und die Suchergebnis-Liste mit Filtern an. Die Suchanfragen erfolgen an Elasticsearch, die die nötigen Informationen für die Darstellung der Suchergebnissliste liefert. Für die Anzeige der Datensatzdetailseite werden die Informationen per opendataregistry-client von CKAN holt. Das Portlet enthält auch einen Hook, mit dem die Liferay-Inhalte, z.B. Blog-Beiträge in den Elasticsearch-Index geschrieben werden.

gd-edit-portlet: Erlaubt das erstellen und pflegen von Metadaten per Formular und opendataregistry-client.

gd-developers-corner-portlet: Bietet einen Editor zum Abfragen des Triplestores.

gd-metadata-quality-portlet: Bietet ein Dashboard zum Darstellen von Metriken.

gd-usermanage-portlet: Enthält und aktiviert die folgenden Funktionalitäten:

  • Benutzer können ihr Konto mittels Double-Opt-Out selbst löschen.
  • Bei der Eingabe von Formularen wird statt einem Captcha eine alternative Implementierung genutzt.

entities: Ermöglichst das persistieren von Kommentaren zu Datensätzen durch JPA.

govdatastyle-theme: Das Theme für das Design von http://www.govdata.de.

screenname-hook: Stellt sicher, dass in Liferay erzeugte Benutzernamen auch in CKAN valide sind.

language-hook: Dient der Internationalisierung von Texten.

Layout20-80-layouttpl: Wird als Layout für die Seiten unter dem Bereich Informationen genutzt.

Links: