Systemarchitektur Minasa
Minasa ist das CMS-System, welches Kunden selber betreiben können und mit dem Azizi-Datenhub Daten austauschen können.
Ein Minasa-System ist als klassische 3-Tier-Web-Architektur aufgebaut:
Im Folgenden werden die einzelnen Teilsysteme erklärt.
Persistierung, Datenhaltung
Das Datenmodell, die relationalen Entitäten werden in einer MySQL-Datenbank gehalten.
User-generierte, dynamische File-Daten (Bilder, Dokumente, temporäre Dateien) werden auf dem Filesystem des Applikationsservers gehostet, und von der Web-Applikation lokal geschrieben / gelesen.
Applikationsserver
Der Applikationsserver ist eine PHP-Applikation, bestehend aus folgenden Teilsystemen / Schichten:
Cockpit-Applikation
Die Cockpit-Applikation stellt das Management-Tool für Minasa zur Verfügung. Sie ist als Single-Page JavaScript mit VueJS/Vuetify umgesetzt.
Die Cockpit-Applikation kommuniziert mit den JSON-REST-Schnittstellen des Applikationsservers.
Einstiegspunkt: /admin-cockpit/
Web-Clients
Sowohl die öffentlich zugängliche Webseite (Frontend) wie auch die Cockpit-Applikation sind via Internet erreichbar.
Software-Module / Architektur
Minasa besteht aus den folgenden Software-Modulen resp. Teilsystemen. Die farbige Markierung dient der Einteilung von Basis-Code (Minasa, rot), kunden-spezifischem Code (grün, kann auch von Kunden selber entwickelt werden) und Basis-Frameworks von Kaden und Partner (Blau).
Das System ist grob in folgende Teile gegliedert:
Applikations-Server-Teil:
Hier läuft die eigentliche Web-Applikatoin auf Basis PHP, bestehend aus folgenden Teilmodulen:
Framework, API, Schnittstellen:
Dieses Modul stellt das eigentliche “Backbone” der Applikation dar: Es bildet die gesamte Web- und Business-Logik ab und stellt alle für den Betrieb der Plattform notwendigen Funktionalitäten zur Verfügung.
Diese Module gehören zum Minasa-Grund-System und werden von Kaden und Partner (weiter) entwickelt.
Frontend-Modul, Kunden-spezifisch:
Dieses Modul stellt den sichtbaren Webseiten-Frontend-Teil dar: Hier werden
URL-Routen definiert, anhand
HTML-Templates Webseiten generiert, Requests entgegengenommen und verarbeitet. Dieser Teil ist kunden-spezifisch: Jeder Kunde hat eine eigene Frontend-Implementation, da sich die Webseiten auch je Kunde unterscheiden.
Dieser Code kann (in der Theorie) auch vom Kunden selber entwickelt werden, und kann/muss nicht Teil des K+P-Software-Repositories sein.
Minasa-Basis-Framework:
Dieses Modul stellt Basis-Komponenten zur Verfügung, welche von allen Programmteilen genutzt werden (können).
Gaia Web-Framework:
Dies ist das zugrundeliegende Basis-Web-Framework, das haus-interne Framework von Kaden und Partner. Es wird in zahlreichen Web-Applikationen eingesetzt und stellt die Basis für die Minasa-Web-Applikation dar.
Cockpit:
Das Cockpit ist die Verwaltungs-Applikation auf Basis einer Single Page JavaScript-Applikatoin(VueJS), und ist Teil des Minasa-Codes. Das Cockpit kann (in der Theorie) unabhängig vom Applikationsserver betrieben werden, wird in der Praxis aber jeweils auf demselben Host betrieben / ausgeliefert.
Diese Applikation stellt das “Back-Office” dar, und erlaubt die Verwaltung des Systems sowie der Nutzdaten (Events, Artikel, …).
Persistenz-Schicht:
Die Datenpersistierung findet in einer relationalen Datenbank (MySQL 8) sowie in Dateien (Bilder, Dokumente) statt. Die Datenbank kann auch separat betrieben werden, die Dateien müssen als lokaler Mount dem Applikationsserver zur Verfügung stehen.
Schnittstellen-Angebot
Minasa stellt heute folgende lesende Schnittstellen für externe Clients zur Verfügung:
-
/frontend/api: JSON-Schnittstelle für externe Systeme
siehe
/services/export/eventfrog/: JSON-Export im von
Eventfrog verlangten Format
ein
HTML-Widget zur Einbettung in eine bestehende Webseite (javaScript WebComponent)
Datenimport von Fremdsystemen
Folgende Import-Clients sind heute implementiert: