diff --git a/.gitignore b/.gitignore index dcf09f4..2ab8564 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,6 @@ # these rules might exclude image files for figures etc. *.ps *.eps -*.pdf ## Bibliography auxiliary files (bibtex/biblatex/biber): *.bbl diff --git a/documentation/handout_adminfrontend/Header.tex b/documentation/handout_adminfrontend/Header.tex index 788aeed..e0caa99 100644 --- a/documentation/handout_adminfrontend/Header.tex +++ b/documentation/handout_adminfrontend/Header.tex @@ -118,11 +118,11 @@ xrightmargin=0pt, % ---- Kopf- Fußzeile ----------------------------------------------------------------------------------------- %i - innen, c - mitte, o - außen -\ihead{ \normalfont Admin-Frontend Warenwitschaft} +\ihead{ \normalfont Admin-Frontend} \chead{} \ohead{\includegraphics[width=3cm]{./hs-logo.png}} -\ifoot{\normalfont \censor{M.Labusch}, \censor{M.Müller}} +\ifoot{\normalfont Warenwirtschaft MM / Go-Team} \cfoot{} \ofoot{\normalfont 1/1} @@ -133,5 +133,5 @@ xrightmargin=0pt, pdftitle = {Dokumentation - Microservice Warenwirtschaft}, pdfsubject = {Nachhaltige Softwarearchitektur komplexer Websites}, pdfauthor = {Studenten der Hochschule Bremen}, - pdfkeywords = {Hochschule Bremen, Masterstudiengang Komplexe Softwaresysteme, Softwarearchitektur, Nachhaltigkeit, Docker, Go} + pdfkeywords = {Hochschule Bremen, Masterstudiengang Komplexe Softwaresysteme, Softwarearchitektur, Go} } diff --git a/documentation/handout_adminfrontend/add_handout.png b/documentation/handout_adminfrontend/add_handout.png index 8f43898..3ad64dd 100644 Binary files a/documentation/handout_adminfrontend/add_handout.png and b/documentation/handout_adminfrontend/add_handout.png differ diff --git a/documentation/handout_adminfrontend/handout_frontend.pdf b/documentation/handout_adminfrontend/handout_frontend.pdf new file mode 100644 index 0000000..db19c3f Binary files /dev/null and b/documentation/handout_adminfrontend/handout_frontend.pdf differ diff --git a/documentation/handout_adminfrontend/handout_frontend.tex b/documentation/handout_adminfrontend/handout_frontend.tex index 6b45a05..c81f8da 100644 --- a/documentation/handout_adminfrontend/handout_frontend.tex +++ b/documentation/handout_adminfrontend/handout_frontend.tex @@ -18,20 +18,20 @@ \item \textit{List:} Auflistung aller Produkte mit ihrem Warenbestand \item \textit{Produktseite:} Über einen Klick auf ein Produkt unter \textit{List} gelangt man auf seine Seite, hier werden die zugehörigen Waren angezeigt \item \textit{Hinzufügen:} Neue Waren können über den Button mit dem Pluszeichen in den Bestand aufgenommen werden - \item \textit{Entfernen:} Waren werden manuell, über den Mülleimer-Icon auf ihren Produktseiten gelöscht + \item \textit{Entfernen:} Waren werden manuell über den Mülleimer-Icon auf ihren Produktseiten entfernt \item \textit{Statistic:} Anzeige des gesamten und des durchschnittlichen Warenbestandes \end{itemize} \begin{figure}[H] \centering - \includegraphics[width=1 \textwidth]{./product_handout.png} - \caption{Produktübersicht} + {\includegraphics[width=1 \textwidth]{./product_handout.png}} + \caption{Produktseite} \end{figure} \begin{figure}[H] \centering - \includegraphics[width=1 \textwidth]{./add_handout.png} + {\includegraphics[width=1 \textwidth]{./add_handout.png}} \caption{Hinzufügen von Waren} \end{figure} diff --git a/documentation/microservice_stock/chapter/Anforderungen.tex b/documentation/microservice_stock/chapter/Anforderungen.tex index 7dd7c53..72f5c10 100644 --- a/documentation/microservice_stock/chapter/Anforderungen.tex +++ b/documentation/microservice_stock/chapter/Anforderungen.tex @@ -1,7 +1,7 @@ \section{Definition der Anforderungen} \label{sec: Definition der Anforderungen} -Der Microservice Warenwirtschaft dient der Verwaltung der Warenbestände für den Webshop Mosh. Er ermöglicht es zum Beispiel, neue Waren zu erfassen und verhindert den Verkauf von Waren, die sich nicht mehr im Warenbestand befinden. Die nachfolgende Tabelle \ref{tabl:Begriffe} definiert die hier verwendeten Begriffe, so wie sie in dem Code und innerhalb dieser Dokumentation genutzt werden. +Der Microservice Warenwirtschaft dient der Verwaltung der Warenbestände für den Webshop Mosh. Die nachfolgende Tabelle \ref{tabl:Begriffe} definiert die hier verwendeten Begriffe, so wie sie in dem Code und innerhalb dieser Dokumentation genutzt werden. \begin{table}[H] \begin{small} \begin{center} @@ -23,7 +23,7 @@ Der Microservice Warenwirtschaft dient der Verwaltung der Warenbestände für de \end{small} \end{table} -Die übergeordnete Aufgabe dieses Microservice ist die Speicherung der Waren mit ihrem Lagerort sowie einem Ablaufdatum, da es sich bei Obst und Gemüse um verderbliche Waren handelt. Nachfolgend sind die weiteren, detaillierten Anforderungen an diesen Microservice zusammengefasst. +Die übergeordnete Aufgabe dieses Microservice ist die Speicherung und Verwaltung der Waren mit ihrem Lagerort sowie einem Ablaufdatum, da es sich bei Obst und Gemüse um verderbliche Waren handelt. Nachfolgend sind die weiteren, detaillierten Anforderungen an diesen Microservice zusammengefasst. \begin{itemize} \item \textbf{Funktionen des Admin-Frontends} @@ -31,8 +31,8 @@ Die übergeordnete Aufgabe dieses Microservice ist die Speicherung der Waren mit \item Hinzufügen neuer Waren zum Warenbestand \item Manuelles Entfernen von Waren aus dem Warenbestand, zum Beispiel wenn diese verdorben sind \item Entfernen von einzelnen Waren aus dem Warenbestand, wenn diese an einen Kunden versendet werden - \item Blockieren von Waren in dem Warenbestand, wenn ein Kunde sie in seinen Warenkorb gelegt hat - \item Automatische Freigaben von blockierten Waren, wenn diese nicht an den Versand überstellt wurden + \item Blockieren von Waren in dem Warenbestand, wenn ein Kunde diese in seinen Warenkorb gelegt hat + \item Automatische Freigabe von blockierten Waren, wenn diese nicht innerhalb einer Frist an den Versand überstellt werden \end{itemize} \item \textbf{Funktionen des Kunden-Frontends} \begin{itemize} @@ -41,10 +41,10 @@ Die übergeordnete Aufgabe dieses Microservice ist die Speicherung der Waren mit \item \textbf{Optionale Zusatzfunktionen} \begin{itemize} \item Admin-Frontend: Ausgabe einer Statistik, wie viele Waren sich gesamt und durchschnittlich im Warenbestand befinden - \item Admin:Frontend: Ampeldarstellung pro Ware, die Anzeigt ob diese bereits ihr angegebenes Ablaufdatum erreicht hat + \item Admin-Frontend: Ampeldarstellung pro Ware, die Anzeigt ob diese bereits ihr angegebenes Ablaufdatum erreicht oder überschritten hat \end{itemize} \end{itemize} - -Die Angabe der Anzahl ist bei dem Hinzufügen neuer Waren zum Warenbestand verpflichtend, da ohne sie die Verwaltung neu eingetroffener Waren nicht möglich ist. Gleiches gilt für die Angabe des Ablaufdatums, diese ist speziell bei der Verwaltung von Lebensmitteln notwendig, um die Kunden vor abgelaufenen Waren und das vertreibende Unternehmen so vor Haftungen, Anzeigen bei der Gesundheitsbehörde oder Image-Schäden zu schützen. Die Datumsangabe erfolgt dabei im amerikanischen Format \textit{Jahr-Monat-Tag}. \par +\newpage +Die Angabe der Anzahl ist bei dem Hinzufügen neuer Waren zum Warenbestand verpflichtend, da ohne sie die Verwaltung neu eingetroffener Waren nicht möglich ist. Gleiches gilt für die Angabe des Ablaufdatums, diese ist speziell bei der Verwaltung von Lebensmitteln notwendig, um den Verkauf von verdorbenen Waren zu vermeiden. Die Datumsangabe erfolgt dabei im amerikanischen Format \textit{Jahr-Monat-Tag}. \par Im Gegensatz dazu sind die Angabe von Lagerplatz und Kommentar bei dem Hinzufügen neuer Waren optional, da diese Informationen für die Verwaltung des reinen Warenbestandes nicht essentiell notwendig sind. Diese beiden Angaben sind als Freitextfelder umzusetzen, um speziell bei dem Lagerort flexibel die Nutzung verschiedener Benennungschema für Regale oder Lagerräume zu ermöglichen und den Benutzer hier nicht einzuschränken. \par Der Microservice ist in den bestehenden Monolithen Mosh zu integrieren, eine Kommunikation mit anderen Microservices wird jedoch nicht hergestellt. \ No newline at end of file diff --git a/documentation/microservice_stock/chapter/Anpassung.tex b/documentation/microservice_stock/chapter/Anpassung.tex index c162b66..894b513 100644 --- a/documentation/microservice_stock/chapter/Anpassung.tex +++ b/documentation/microservice_stock/chapter/Anpassung.tex @@ -1,2 +1,2 @@ -\section{Anpassung Monolith} +\section{Änderungen am Monolithen} \label{changes} diff --git a/documentation/microservice_stock/chapter/DokStruktur.tex b/documentation/microservice_stock/chapter/DokStruktur.tex index afe3b84..d4c899e 100644 --- a/documentation/microservice_stock/chapter/DokStruktur.tex +++ b/documentation/microservice_stock/chapter/DokStruktur.tex @@ -1,6 +1,6 @@ \section{Dokumentationsstruktur} \label{sec: Dokumentationsstruktur} -Für die Dokumentation des Microservice Warenwirtschaft wurden eine Kombination aus drei Dokumenten gewählt. Zum einen beschreibt ein bebildertes Handout auf einer Seite die Funktionen des Admin-Frontends für den Benutzer. Diese sehr kurze Dokumentenform wurde gewählt, da Benutzer häufig nicht gewillt sind, umfangreiche Anleitungen zu lesen um eine Anwendung nutzen zu können. Vielmehr wollen sie schnell einen Überblick der Kernfunktionalitäten erhalten. Aus diesem Grund wurde auch auf eine Benutzerdokumentation für die Kunden verzichtet, da angenommen wird dass die Darstellung der Produktverfügbarkeit als Ampel selbsterklärend ist.\par +Für die Dokumentation des Microservice Warenwirtschaft wurden eine Kombination aus drei Dokumenten gewählt. Zum einen beschreibt ein bebildertes Handout auf einer Seite die Funktionen des Admin-Frontends für dessen Benutzer. Diese sehr kurze Dokumentenform wurde gewählt, da Benutzer häufig nicht gewillt sind umfangreiche Anleitungen zu lesen um eine Anwendung nutzen zu können. Vielmehr wollen sie schnell einen Überblick der Kernfunktionalitäten erhalten. Aus diesem Grund wurde auch auf eine Benutzerdokumentation für die Kunden des Webshops Mosh verzichtet, da anzunehmen ist dass die Darstellung der Produktverfügbarkeit als Ampel sich selbst erklärt.\par Auf der anderen Seite muss der Microservice auch für die Entwickler dokumentiert sein, hierfür wurde diese Dokumentation angelegt. Sie beginn anstelle eines Abstract mit einem Steckbrief des Microservice, der dessen grundlegende Struktur und Funktionalität kurz beschreibt. Das eigentliche Dokument beschreibt zunächst die Anforderungen an den Microservice, da die Entwicklung sich primär an diesen orientiert. Weiter werden der Microservice mit seinem Aufbau, den Schnittstellen und der Anpassung des gegebenen Monolithen sowie Implementierungsregeln beschrieben. Dieses Dokument schließt mit einem \textit{Getting Started} Guide. Auf Details wir ein Abkürzungs- oder Literaturverzeichnis wurde in dieser Dokumention bewusst verzichtet, um sie kurz zu halten. Zitate und Verweise werden hier in Form von Fußnoten integriert.\par -Abschließend dokumentiert das Testprotokoll -- als drittes Dokument -- die für diesen Microservice angewendeten Black-Box-Testfälle - das heißt jene Tests die anhand der Anforderungen und aus Sicht des Benutzer durchgeführt wurden. \ No newline at end of file +Abschließend dokumentiert das Testprotokoll -- als drittes Dokument -- die für diesen Microservice angewendeten Black-Box-Testfälle. Das heißt es umfasst solche Tests die anhand der Anforderungen und aus Sicht des Benutzers durchgeführt wurden. \ No newline at end of file diff --git a/documentation/microservice_stock/chapter/Header.tex b/documentation/microservice_stock/chapter/Header.tex index c1a9459..eba16a5 100644 --- a/documentation/microservice_stock/chapter/Header.tex +++ b/documentation/microservice_stock/chapter/Header.tex @@ -124,7 +124,7 @@ xrightmargin=0pt, \chead{} \ohead{\includegraphics[width=3cm]{./pics/hs-logo.png}} -\ifoot{\normalfont \censor{M.Labusch}, \censor{M.Müller}} +\ifoot{\normalfont Warenwirtschaft MM / Go-Team} \cfoot{} \ofoot{\normalfont \pagemark} @@ -135,5 +135,5 @@ xrightmargin=0pt, pdftitle = {Dokumentation - Microservice Warenwirtschaft}, pdfsubject = {Nachhaltige Softwarearchitektur komplexer Websites}, pdfauthor = {Studenten der Hochschule Bremen}, - pdfkeywords = {Hochschule Bremen, Masterstudiengang Komplexe Softwaresysteme, Softwarearchitektur, Nachhaltigkeit, Docker, Go} + pdfkeywords = {Hochschule Bremen, Masterstudiengang Komplexe Softwaresysteme, Softwarearchitektur, Go} } diff --git a/documentation/microservice_stock/chapter/Steckbrief.tex b/documentation/microservice_stock/chapter/Steckbrief.tex index d40e6f9..60a80fa 100644 --- a/documentation/microservice_stock/chapter/Steckbrief.tex +++ b/documentation/microservice_stock/chapter/Steckbrief.tex @@ -5,7 +5,7 @@ \begin{center} \includegraphics[width=0.95 \textwidth]{./pics/struktur.png} \end{center} - \caption{Microservice Warenwirtschaft} + \caption{Paketdiagramm Microservice Warenwirtschaft} \label{pic: Microservice Warenwirtschaft} \end{figure} @@ -16,6 +16,6 @@ \item In dem Kunden-Frontend wird der Warenbestand durch ein Ampelsystem dargestellt \item Der Microservice wurde in Go entwickelt, die Abbildung \ref{pic: Microservice Warenwirtschaft} gibt einen Überblick der Package-Struktur \item Der statische Inhalt der Webseite ist in dem Package \texttt{webroot} verordnet - \item Die Hauptfunktionalitäten, die zentralen Structs sowie die notwendigen Hilfsfunktionen sind in den Packages \texttt{http} und \texttt{models} verordnet + \item Die Hauptfunktionalitäten, die zentralen Structs sowie die notwendigen Hilfsfunktionen sind in den Packages \texttt{http} und \texttt{models} zu finden \item Eine SQL-Lite-Datenbank stellt den Persitant Layer \end{itemize} diff --git a/documentation/microservice_stock/chapter/Struktur.tex b/documentation/microservice_stock/chapter/Struktur.tex index bf24197..357d59f 100644 --- a/documentation/microservice_stock/chapter/Struktur.tex +++ b/documentation/microservice_stock/chapter/Struktur.tex @@ -1,18 +1,19 @@ \section{Architektur des Microservice} \label{sec: Architektur des Microservice} -Der Microservice Warenwirtschaft wurde in der Programmiersprache Go\footnote{https:\//golang.org\/doc\/} entwickelt. Go-An-wendungen bestehen aus Packages, in denen die einzelnen Go-Files organisiert sind, Klassen im Sinne der Objektorientierung gibt es nicht. Der Microservice Warenwirtschaft setzt sich aus den neun Packages zusammen, die die Abbildung \ref{pic:Struktur des Microservice} darstellt. In den nachfolgenden Unterkapiteln \ref{subsec: Presentation Layer} und \ref{subsec: Application Layer} werden die Packages und die darin enthaltenen Go-Files des Presentation sowie des Application Layers kurz vorgestellt. Go-Files mit der Bezeichnung \texttt{<>\_test.go} beinhalten Whitebox-Testfälle um die Funktionen der benannten Go-Files zu prüfen. Aus Gründen der Übersichtlichkeit werden diese Files hier nicht explizit aufgeführt. Die weiteren Unterkapitel beschreiben die Schnittstellen, den Persistant Layer sowie das Admin-Frontend und schließlich die Anpassung des Monolithen, um den Microservice Warenwirtschaft in diesen zu integrieren. +Der Microservice Warenwirtschaft wurde in der Programmiersprache Go\footnote{https:\//golang.org\/doc\/} entwickelt. Go-An-wendungen bestehen aus Packages, in denen die einzelnen Go-Files organisiert sind, Klassen -- im Sinne der Objektorientierung -- gibt es nicht. Die Warenwirtschaft setzt sich aus den neun Packages zusammen, die die Abbildung \ref{pic:Struktur des Microservice} darstellt. In den nachfolgenden Unterkapiteln \ref{subsec: Presentation Layer} und \ref{subsec: Application Layer} werden die Packages und die darin enthaltenen Go-Files des Presentation sowie des Application Layers kurz vorgestellt. \par +Go-Files mit der Bezeichnung \texttt{<>\_test.go} beinhalten Whitebox-Testfälle um die Funktionen der benannten Go-Files zu prüfen. Aus Gründen der Übersichtlichkeit werden diese Files hier nicht explizit aufgeführt. Die weiteren Unterkapitel beschreiben die Schnittstellen, den Persistant Layer sowie das Admin-Frontend und schließlich die Anpassung des Monolithen, um den Microservice Warenwirtschaft in diesen zu integrieren. \begin{figure}[H] \centering \includegraphics[width=0.95 \textwidth]{./pics/struktur.png} - \caption{Struktur des Microservice} + \caption{Paketdiagramm des Microservice} \label{pic:Struktur des Microservice} \end{figure} \newpage \subsection{Schnittstellen zu anderen Microservices} \label{subsec: Schnittstellen zu anderen Microservices} -Der Microservice Warenwirtschaft weißt drei Schnittstellen\footnote{Da es nicht Teil der übergeordneten Aufgabenstellung war, die Microservices der einzelnen Projektgruppen zu einem lauffähigen Webshop zusammenzufügen, greift der Microservice Warenwirtschaft an diesen Stellen auf Testdaten zurück} zu anderen Microservices auf. Zunächst greift der Microservice Warenwirtschaft für die Authentifizierung der Benutzer des Admin-Frontends vollständig auf einen Microservice Benutzerauthentifizierung zurück. Anstelle einer Login-Maske weißt das Admin-Frontend deshalb nur einen Icon in Form eines Schlosses auf. Dieser symbolisiert, ob ein Benutzer die passende Berechtigung für das Admin-Front besitzt (Schloss geschlossen) oder nicht (Schloss geöffnet). \par +Der Microservice Warenwirtschaft weißt drei Schnittstellen\footnote{Da es nicht Teil der übergeordneten Aufgabenstellung war, die Microservices der einzelnen Projektgruppen zu einem lauffähigen Webshop zusammenzufügen, greift die Warenwirtschaft an diesen Stellen auf Testdaten zurück} zu anderen Microservices auf. Zunächst greift der Microservice Warenwirtschaft für die Authentifizierung der Benutzer des Admin-Frontends vollständig auf einen Microservice Benutzerauthentifizierung zurück. Anstelle einer Login-Maske weißt das Admin-Frontend deshalb nur einen Icon in Form eines Schlosses auf. Dieser symbolisiert, ob ein Benutzer die passende Berechtigung für das Admin-Front besitzt (Schloss geschlossen) oder nicht (Schloss geöffnet). \par Weiter benötigt der Microservice Warenwirtschaft Informationen darüber, ob ein Benutzer eine Ware in den Warenkorb gelegt hat und ob eine Bestellung abgeschlossen wurde. So können Waren im Warenkorb für die Bestellung durch andere Benutzer blockiert und die erfolgreich bestellten Waren aus dem Warenbestand gelöscht werden. Diese Funktionalitäten setzen eine Schnittstelle zu dem Microservice Bestellung voraus. \par Die dritte Schnittstelle besteht zu dem Microservice Produktkatalog, von welchem die Warenwirtschaft die angebotenen Produkte -- die sich dementsprechend im Lager befinden können -- abfragt. Das nachfolgende Listings zeigt die Daten, die von dem Microservices Produktkatalog im JSON-Format erwartet werden. @@ -27,13 +28,13 @@ Die dritte Schnittstelle besteht zu dem Microservice Produktkatalog, von welchem \newpage \subsection{Presentation Layer -- Admin-Frontend} \label{subsec: Presentation Layer} -Der Presentation Layer umfasst alle Packages, die sich mit der eigentlichen Darstellung der Warenwirtschaft aus der Sicht des Endbenutzers befassen. Im Detail ist dies das Package \textbf{\texttt{webroot}}, welches den statischen Inhalt der Frontends, wie zum Beispiel die HTML-Files und Bilder enthält. \par -Die Startseite \textit{List} des Admin-Frontends zeigt eine Übersicht aller vorhandenen Produkte mit ihrer Anzahl an Waren (Abbildung \ref{pic:Admin-Frontend -- Produktseite}). Letztere wird mit einem Ampelsystem dargestellt, wobei ein vollkommen rot gefärbter Kreis einem Warenbestand von null entspricht und der Kreis mit zunehmender Anzahl an Waren immer mehr grün eingefärbt wird. Zu jedem Produkt können über den, mit einem Plus, gekennzeichneten Button Waren hinzugefügt werden. Ein Klick auf das jeweilige Produkt führt zu dessen Produktseite. \par +Der Presentation Layer umfasst alle Packages, die sich mit der eigentlichen Darstellung der Warenwirtschaft aus der Sicht des Endbenutzers befassen. Im Detail ist dies das Package \texttt{webroot}, welches den statischen Inhalt der Frontends, wie zum Beispiel die HTML-Files und Bilder enthält. \par +Die Startseite \textit{List} des Admin-Frontends zeigt eine Übersicht aller vorhandenen Produkte mit ihrer Anzahl an Waren (Abbildung \ref{pic:Admin-Frontend -- Produktseite}). Letztere wird mit einem Ampelsystem dargestellt, wobei ein vollkommen rot gefärbter Kreis einem Warenbestand von null entspricht und der Kreis sich mit zunehmender Anzahl an Waren immer mehr grün eingefärbt. Zu jedem Produkt können über den, mit einem Plus, gekennzeichneten Button Waren hinzugefügt werden. Ein Klick auf das jeweilige Produkt führt zu dessen Produktseite. \par Die Produktseiten führen die ID, die Gesamtanzahl an Waren sowie die einzelnen Waren auf (Abbildung \ref{pic:Admin-Frontend -- Produktseite}). Diese können jeweils über den Icon in Form eines Mülleimers manuell gelöscht werden. Auch auf den Produktseiten sind über einen, mit einem Plus gekennzeichneten, Button neue Waren hinzufügbar. Beim Hinzufügen von neuen Waren sind für diese ein Ablaufdatum, eine Lagerposition sowie ein Kommentar und die Anzahl anzugeben (Abbildung \ref{pic:Admin-Frontend -- Hinzufuegen von Waren}). Die Seite \textit{Statistics} gibt letztendlich einen Überblick der gesamten und der durchschnittlichen Waren im Warenbestand. \begin{figure}[H] \centering - \includegraphics[width=0.75 \textwidth]{./pics/product.png} + \frame{\includegraphics[width=0.75 \textwidth]{./pics/product.png}} \caption{Admin-Frontend -- Produktseite} \label{pic:Admin-Frontend -- Produktseite} \end{figure} @@ -41,7 +42,7 @@ Die Produktseiten führen die ID, die Gesamtanzahl an Waren sowie die einzelnen \begin{figure}[H] \centering - \includegraphics[width=0.75 \textwidth]{./pics/add.png} + \frame{\includegraphics[width=0.75 \textwidth]{./pics/add.png}} \caption{Admin-Frontend -- Hinzufügen von Waren} \label{pic:Admin-Frontend -- Hinzufuegen von Waren} \end{figure} @@ -57,19 +58,18 @@ Die Packages und Go-Files des Application Layers umfassen die Logik des Microser \paragraph{http:} Go-Files, die die Anwendungslogik (Funktionen) und die API-Routen beinhalten \begin{itemize} \item \texttt{bindapi.go}: Funktionen, die für das Binden der URL-Pfade notwendig sind - \item \texttt{good.go}: Funktionen für das Hinzufügen von Waren zum Warenbestand + \item \texttt{good.go}: Funktionen für die Verwaltung der Waren im Warenbestand \item \texttt{good\_show.go}: Funktionen für die Auflistung und Zählung der vorhandenen Waren sowie die Feststellung ihrer Verfügbarkeit \item \texttt{good\_temp.go}: Hilfsfunktionen, die für die Darstellung des Warenbestandes als Ampel im Kunden-Frontend benötigt werden \item \texttt{status.go}: Funktion, die den Status des Microservice abfragt \end{itemize} -\paragraph{models:} Go-Files, die Structs und zugehörige Hilfsfunktionen (hauptsächlich statischen Inhalt des Microservice) beinhalten +\paragraph{models:} Go-Files, die die zentralen Structs und zugehörige Hilfsfunktionen (hauptsächlich statischen Inhalt des Microservice) beinhalten \begin{itemize} \item \texttt{config.go}: Structs mit den Informationen zur Konfiguration des Webservers, der Datenbank und dem Cache-Management sowie Hilfsfunktionen zum Lesen von Config-Files \item \texttt{duration.go}: Structs und Hilfsfunktionen zur Definition eines Typs für Zeitangaben \item \texttt{good.go}: Structs und Hilfsfunktionen zur Darstellung von Waren, hier werden auch die geforderten Funktionalitäten wie das Blockieren von Waren umgesetzt - \item \texttt{structstorage}: \end{itemize} @@ -95,13 +95,20 @@ Die Packages und Go-Files des Application Layers umfassen die Logik des Microser \item \texttt{permission.go}: Funktionen zur Prüfung der Berechtigung für den Zugriff \end{itemize} \item \texttt{log}: Go-File \texttt{log.go}, das den Logger startet und initiiert - \item \texttt{worker}: Go-File \texttt{worker.go}, dass Funktionen für die Nutzung eines Caches für die Produkte aus dem Produktkatalog (Worker) bereitstellt + \item \texttt{worker}: Go-File \texttt{worker.go}, dass Funktionen für die Nutzung eines Caches (Worker) für die Produkte aus dem Produktkatalog bereitstellt \end{itemize} \subsection{Persistant Layer} Der Persitant Layer umfasst eine SQL-Lite-Datenbank, die im Cache gehalten wird. Die nachfolgende Abbildung \ref{pic:Datenbankmodell des Microservice} zeigt den grundsätzlichen Aufbau der Datenbank. Sie speichert den Warenbestand (stock) in Produkten (product). Jedes Produkt wird mit seiner ID und seinem Namen gehalten, die aus dem Produktkatalog bezogen und in einem Cache zwischengespeichert werden. Zu jedem Produkt gehören wiederum mehrere Waren (good), die eine ID, ein Ablaufdatum, eine Lagerposition und einen Kommentar besitzen. Dabei kann eine Ware nur zu einem Produkt gehören. Die Datenbank kann über die Konfigurationsdatei \texttt{config\_example.conf}, deren relevanter Ausschnitt nachfolgend dargestellt wird, flexibel angepasst werden. +\begin{figure}[H] + \centering + \includegraphics[width=0.40 \textwidth]{./pics/db.pdf} + \caption{Datenbankmodell des Microservice} + \label{pic:Datenbankmodell des Microservice} +\end{figure} + \begin{lstlisting}[caption=Datenbankeinstellungen in der Konfigurationsdatei] [database] @@ -112,13 +119,6 @@ connection = "file::memory:?mode=memory&cache=shared" # read_connection = "" \end{lstlisting} -\begin{figure}[H] - \centering - \includegraphics[width=0.40 \textwidth]{./pics/db.pdf} - \caption{Datenbankmodell des Microservice} - \label{pic:Datenbankmodell des Microservice} -\end{figure} - \newpage \subsection{Integrierte Tests} \label{subsec: Integrierte Test} diff --git a/documentation/microservice_stock/chapter/Titelseite.tex b/documentation/microservice_stock/chapter/Titelseite.tex index a2456aa..d85e085 100644 --- a/documentation/microservice_stock/chapter/Titelseite.tex +++ b/documentation/microservice_stock/chapter/Titelseite.tex @@ -26,7 +26,7 @@ Dokumentation \vspace{0.5cm} -{\large{\textsc{Microservice Warenwirtschaft}}} +{\large{\textsc{Microservice Warenwirtschaft MM / Go-Team}}} \vspace{0.5cm} @@ -50,7 +50,7 @@ Eingereicht von\\ \vspace{1cm} Dozenten\\ -\censor{\textsc{Matthias Stock, Renzo Kottmann}}\\ +\censor{\textsc{Matthias Stock und Renzo Kottmann}}\\ \vspace{3cm} diff --git a/documentation/microservice_stock/documentation.pdf b/documentation/microservice_stock/documentation.pdf new file mode 100644 index 0000000..362a284 Binary files /dev/null and b/documentation/microservice_stock/documentation.pdf differ diff --git a/documentation/microservice_stock/documentation.tex b/documentation/microservice_stock/documentation.tex index 09f3b12..3a18701 100644 --- a/documentation/microservice_stock/documentation.tex +++ b/documentation/microservice_stock/documentation.tex @@ -27,7 +27,7 @@ \input{./chapter/DokStruktur} \newpage \input{./chapter/Anforderungen} \newpage -\input{./chapter/Struktur} \newpage +\input{./chapter/Struktur} \input{./chapter/Implementierungsregeln}\newpage \input{./chapter/GettingStarted} diff --git a/documentation/microservice_stock/pics/db.pdf b/documentation/microservice_stock/pics/db.pdf new file mode 100644 index 0000000..5a753d0 Binary files /dev/null and b/documentation/microservice_stock/pics/db.pdf differ diff --git a/documentation/test_protocol.pdf b/documentation/test_protocol.pdf index d7478ea..02df9fc 100644 Binary files a/documentation/test_protocol.pdf and b/documentation/test_protocol.pdf differ