Architektur¶
Das XMAS-Plugin ist die QGIS-Oberfläche der XMAS-App. In der App steckt die Fachlogik der Anwendungsschemas: Sie erzeugt die Attributformulare, prüft jede Eingabe und ist die einzige Komponente, die mit der Datenbank spricht.
flowchart LR
QGIS["QGIS<br/>mit XMAS-Plugin"]
APP["XMAS-App"]
DB[("PostgreSQL")]
KC["Keycloak"]
QGIS -->|"HTTP(S)"| APP
APP --> DB
QGIS -.->|"Anmeldung"| KC
APP -.-> KC
Die Komponenten¶
| Komponente | Aufgabe |
|---|---|
| QGIS mit XMAS-Plugin | Darstellung, Digitalisierung und Erfassung. Hält die Planlayer und die Kartenansicht. |
| XMAS-App | Erzeugt Datenbankschema und Attributformulare, validiert Eingaben und speichert Änderungen. Wird unabhängig vom Plugin installiert. |
| PostgreSQL | Speichert die Pläne. Die Datenbank muss für die App erreichbar sein — nicht für QGIS. |
| Keycloak | Übernimmt im Produktivbetrieb die Anmeldung. Für die lokale Entwicklung wird sie nicht benötigt. |
Was das Plugin mit den Daten macht¶
Die Planlayer in QGIS sind keine Datenbanklayer. Beim Laden eines Plans holt das Plugin die Features einmal von der App und hält sie im Arbeitsspeicher. Jede Änderung — ein neues Feature, geänderte Attribute, eine verschobene Geometrie, ein gelöschtes Feature — geht zurück an die App, die sie prüft und erst dann speichert.
Für die tägliche Arbeit heißt das:
- Ohne erreichbare XMAS-App lassen sich Pläne weder laden noch speichern.
- Was die App ablehnt, wird nicht gespeichert; der Grund wird in QGIS gemeldet.
- Änderungen anderer Bearbeiterinnen und Bearbeiter erscheinen nicht von selbst. Dafür muss der Plan neu geladen werden.
Weboberflächen im Plugin¶
Der Planmanager, die Planwerkzeuge und das Attributformular sind keine QGIS-Dialoge, sondern Seiten der XMAS-App, die im Plugin eingebettet sind. Deshalb wirken sie wie Webseiten — und deshalb brauchen sie eine bestehende Verbindung.
Eingebettete Seite und QGIS tauschen dabei laufend Ereignisse aus: Das Formular meldet geänderte Werte an QGIS, der Planmanager legt Layer an, aus der Karte heraus wird ein Feature im Formular geöffnet. Die Seite wird dafür nicht neu geladen.
Verbindung und Anmeldung¶
Die Adresse der XMAS-App und die zu verwendende Authentifizierungskonfiguration werden in den Einstellungen hinterlegt.
Neben Server Status im Panel zeigt eine Ampel, ob die App erreichbar ist:
| Farbe | Bedeutung |
|---|---|
| Grün | verbunden |
| Gelb | Verbindungsaufbau |
| Rot | keine Verbindung |
Das Plugin hält die Verbindung offen und baut sie nach einem Abbruch selbsttätig wieder auf. Wie die Anmeldung eingerichtet wird, beschreibt Authentifizierung.