Skip to content

Modelle Backend

Dominik Eitner edited this page Mar 19, 2022 · 9 revisions

Modelle zum Backend der Blutspende-App

Das Backend ist das Gegenstück zum Frontend. Anders als beim Frontend hat das Backend weniger den Bezug zu den Nutzer:innen als viel mehr die Nähe zum System. Primär beschäftigt sich das Backend mit der Datenverarbeitung und -speicherung im Hintergrund unserer Blutspende-App.

In dem Abschnitt zum Backend sollen vor allem das Verbindungsmodell der App thematisiert werden, welches die Abhängigkeiten einzelnen Layer der App erläutert. Des Weiteren werden sowohl die Datenmodelle (speziell das der FAQs, der Sicherheitsfragen und der Termindaten) und die Verwaltung der Terminkapazitäten, sowie die Buchungs- und Fragebearbeitung erläutert und mittels Modellen näher gebracht.

Inhaltsverzeichnis

Verbindungsmodell

Netzwerkarchitektur-App

Die Kommunikation der Anwendungssysteme wird via REST-API zur Datenbank ermöglicht. Die Verwaltungsoberfläche befindet sich dabei innerhalb der Unternehmensfirewall und eine Verbindung wird mit einem Web Socket hergestellt. Externe Zugriffe auf die Datenbank können nur über die App ermöglicht werden. Das Backend läuft in einem Docker-Container und ist mit Django designt.

Datenmodelle

Das hier abgebildete Modell stellt das Datenmodell für die Termine dar. Im Folgenden wird immer mal wieder auf dieses Gesamtmodell hingewiesen.

Datenmodell

1. FAQ

FAQ

Die FAQ (Freuquently Asked Questions) Items können in mehreren Sprachen abgespeichert und angepasst werden. Dabei hat jede Frage eine ID und auch eine Position, an der sie am Ende zu sehen ist. Zu dieser Entität werden dann, abhängig davon wie viele Sprachen eingerichtet wurden, die passende Anzahl an Übersetzungsfragen erzeugt. Diese haben wieder eine ID. Natürlich beinhaltet diese Entität die Frage, in diesem Fall als "head" bezeichnet, und eine Antwort, der "body". Zudem wird die jeweilige Sprache abgespeichert.

2. Sicherheitsfragen

Sicherheits- und Spenderfragen

Die Sicherheitsfragen, die im Buchungsprozess verwendet werden, verhalten sich ähnlich zu den FAQ items. Die einzelnen Fragen haben eine ID, eine Position und einen Indikator, ob die Eingabe "ja" richtig ist. Für die einzelnen Textelemente werden, wieder je nach Sprachauswahl entsprechende, Übersetzungsentität erstellt. Unterschied zu den FAQ Fragen ist: Der "head" enthält die Überschrift der Frage und der "body" enthält die spezifische Frage.

3. Termindaten

Terminbuchung

Das Modell für die Termine beinhaltet drei Entitäten.

  • Termin an sich
  • Die Buchungsanfrage
  • Die Person, die den Termin gebucht hat
Der Termin beinhaltet Attribute wie ID, den Startzeitpunkt und die Dauer. Zu einem Termin kann keine oder eine Buchungsanfrage zugeordnet werde. Eine Buchungsanfrage besteht aus einer ID, dem Zeitpunkt der Erstellung und dem aktuellen Status. Gleichermaßen kann einem Termin eine oder keine Person zugeordnet werden (vgl. Datenmodell). Folgende Attribute sind für eine Person notwendig:
  • ID
  • Name
  • Geburtsdatum
  • Geschlecht
  • Ob die Person schon Blut gespendet hat
  • Telefonnummer

Terminkapazitätsverwaltung

Kapazitäten

Die Kapazität gibt an, wie viele maximale Termine für einen Zeitraum verfügbar sind. Sie kann in der Verwaltungsoberfläche in dem Fenster „Arbeitszeiten“ verändert werden. Die Terminplanung ist im Backend implementiert und freie Termine werden automatisch generiert oder gelöscht, wenn es eine Änderung bei den Kapazitäten gab. Grundsätzlich wird die definierte Anzahl an Terminen pro Viertelstunde erstellt. Dieser Zeitraum kann jedoch auch manuell, im Backend, abgeändert werden.

Buchungsbearbeitung

Die Bearbeitung der Terminanfragen findet über die Verwaltungsoberfläche statt. Dort gibt es zwei Möglichkeiten, um Anfragen von Nutzer:innen zu bearbeiten: über die Anfragemaske oder direkt über den Kalender.

  • In dem Anfragen-Fenster werden die angefragten Termine auf der linken Seite der Verwaltungsoberfläche angezeigt. Dort kann ein bestimmter Termin ausgewählt werden, wodurch mehr Daten über die Anfrage aufgelistet werden. So wird unter anderem der Name, oder auch die Telefonnummer von Spender:innen angezeigt. Neben den Daten erscheinen auch Schaltflächen mit den Aufschriften „Bestätigen“ und „Ablehnen“. Durch einen Klick auf die entsprechende Schaltfläche wird die Anfrage entweder angenommen oder abgelehnt. Die Veränderung wird anschließend automatisch im Backend berücksichtigt und, durch die Verwendung des Websockets, an die Nutzer:innen übermittelt.
  • Termine können auch über das Kalender-Fenster bearbeitet werden. Dort sind angefragte Termine gekennzeichnet und können einzeln ausgewählt werden. Bei den Informationen zu einem Termin wird ebenfalls der Status als „Ausstehend“ angezeigt. Dieser kann zu „Angenommen“ oder „Abgelehnt“ verändert werden, wodurch die Anfrage bearbeitet wurde. Auch in diesem Fall werden die Nutzer:innen automatisch über das Backend benachrichtigt.

Nachdem eine Terminanfrage angenommen wurde, muss sie eventuell noch in einen internen Kalender eingetragen werden.

Aus der Sicht der Nutzer:innen: Nachdem eine Terminanfrage abgeschickt wurde, wird diese als „Ausstehend“ angezeigt. Wenn die Anfrage über die Verwaltungsoberfläche bearbeitet wurde, erhalten die Nutzer:innen eine Benachrichtigung, ob der Termin angenommen oder abgelehnt wurde.

Fragebearbeitung

Die Fragen, die in den Frequently Asked Questions gelistet sind, sowie die Sicherheitsfragen, können über die Verwaltungsoberfläche verändert werden. Sie sind im Backend gespeichert und werden alle 15 Minuten aktualisiert. Die Fragen können in der Verwaltungsoberfläche über das erweiternde Menu und dann unter Einstellungen gefunden werden. Wenn eine weitere Frage angelegt wird, muss sowohl die Fragestellung als auch die Antwort in den angebotenen Sprachen eingegeben werden. Grundsätzlich sind die Sprachen Englisch und Deutsch, diese können jedoch ebenfalls verändert und angepasst werden. Wenn es eine Änderung bei einer oder mehrerer der Fragen gab, aktualisiert das Backend, nach einer gewissen Zeit, alle Fragen. Diese werden daraufhin den Nutzer:innen entweder bei den FAQ-Fragen, oder bei den Sicherheitsfragen angezeigt.

Weitere Modelle

Um einen detaillierten Überblick zu weiteren relevanten Modellen zu erhalten, wählen Sie einfach eine der folgenden Seiten aus: