generated from leonetienne/LaTeX-Paper-template
fix: bad page breaks
This commit is contained in:
parent
ee9e249154
commit
92e34eec14
@ -56,9 +56,11 @@ keine Suggestivfragen zu stellen
|
||||
\section{Online-Fragebögen für Stakeholder}
|
||||
Um Fragebögen für Stakeholder formulieren zu können, muss zunächst bekannt sein, wer die Stakeholder sind.
|
||||
\quotecite{Ein Stakeholder eines Systems ist eine Person oder Organisation, welche (direkt oder indirekt)
|
||||
Einfluss auf die Anforderungen des betrachteten Systems hat.} \cite{bib:basiswissen-re}.
|
||||
\break{}Einfluss auf die Anforderungen des betrachteten Systems hat.}
|
||||
\break\cite{bib:basiswissen-re}.
|
||||
Daraus ergeben sich die Stakeholdergruppen: \enquote{Mitarbeiter \ac{WM}} und \enquote{teilnehmende Weingüter}.
|
||||
Jede dieser Stakeholdergruppen sieht das System aus einer anderen Perspektive \cite{bib:kleine-re-fibel}.
|
||||
Jede dieser Stakeholdergruppen sieht das System aus einer anderen Perspektive
|
||||
\break\cite{bib:kleine-re-fibel}.
|
||||
Daher ist es wichtig, Einblicke und Bedürfnisse aller Stakeholdergruppen einzuholen
|
||||
und die individuellen Perspektiven und Bedürfnisse dieser beim Entwurf der Fragebögen zu berücksichtigen.
|
||||
Ebenso ist es wichtig, die wichtigsten Fragen am Anfang zu stellen, da Formulare nicht immer vollständig ausgefüllt werden
|
||||
@ -82,11 +84,9 @@ die Probenteilnehmer übergeben.
|
||||
Aus dem Interview mit dem \ac{PO} ergibt sich ein Pflichtenheft.
|
||||
Das Pflichtenheft und das Protokoll zum Interview sind im Anhang unter je
|
||||
\fullref{chap:anhang-pflichtenheft} und \fullref{chap:anhang-interview-protokoll} zu finden.
|
||||
|
||||
Ergebnisse dieses Interviews sind zahlreiche Anforderungen und Ideen. Eine der wichtigsten Ideen stellt das
|
||||
projektbezogene, wöchentliche Statusmeeting dar: Jeden Donnerstag soll um 9:30 Uhr der aktuelle Stand
|
||||
des Projektes vorgestellt, diskutiert und Rücksprache gehalten werden.
|
||||
|
||||
Die wichtigsten Erkenntnisse des Interviews sind:
|
||||
\begin{description}
|
||||
\item[Endgerät für Scanning und Scanneranwendung]\hfill\\
|
||||
|
@ -30,7 +30,7 @@ die anschließend in Form eines Aufklebers an der Flasche befestigt wird. Anschl
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=1\textwidth]{images/geschäftsprozess-vorher.png}
|
||||
\captionof{figure}{Geschäftsprozess Jahresauswahlprobe: vor der Digitalisierung}
|
||||
\captionof{figure}{Geschäftsprozess Jahresauswahlprobe:\\vor der Digitalisierung}
|
||||
\caption*{Quelle: Eigene Darstellung}
|
||||
\label{fig:geschaeftsprozess-vorher}
|
||||
\end{nicepic}
|
||||
|
@ -7,7 +7,7 @@ Es ist anzumerken, dass das aus \fullref{chap:anforderungserfassung} hervorgehen
|
||||
opportunistischer Gespräche mit dem \ac{PO} geringfügige Änderungen erfahren hat.
|
||||
|
||||
\section{Setup einer TYPO3-Extension}
|
||||
TYPO3-Extensions werden via Composer installiert \cite{bib:typo3-docs-managing-extensions}.
|
||||
TYPO3-Extensions werden via Composer installiert \break\cite{bib:typo3-docs-managing-extensions}.
|
||||
Um eine TYPO3-Extension zu erstellen, muss also ein Composer-Paket erstellt werden.
|
||||
Um vermeidbare Komplexität zu verhindern, wird das Composer-Paket, welches die hier betrachtete
|
||||
TYPO3-Extension darstellt, lokal in den versionierten Ordner \enquote{packages} gelegt.
|
||||
@ -23,8 +23,8 @@ Spezifisch ist der \enquote{vergleichbare Funktionsumfang}, dass es Datenmodelle
|
||||
Frontendlogik in Bezug auf die zuvor genannten Datenmodelle gibt.
|
||||
|
||||
\section{Digitization}
|
||||
Die Phase der Digitizion nach Verhoef et al. befasst sich mit der digitalen Abbildung von Objekten der realen Welt
|
||||
in einer Art und Weise, sodass diese elektronisch weiterverarbeitet werden können\\\cite{bib:dougherty, bib:loebbecke}.
|
||||
Die Phase der Digitizion nach Verhoef et al. befasst sich mit der digitalen Abbildung von Objekten aus der realen Welt
|
||||
in einer Art und Weise, die ermöglicht, dass diese elektronisch weiterverarbeitet werden können\break\cite{bib:dougherty, bib:loebbecke}.
|
||||
Des Weiteren befasst sich diese Phase mit der Automatisierung und Befüllung dieser Daten,
|
||||
wie zum Beispiel Web-Formularen \cite{bib:verhoef}.
|
||||
Das bedeutet, dass in dieser Phase Datenobjekte definiert und implementiert werden.
|
||||
@ -137,7 +137,9 @@ Accountregistrierungen werden über den
|
||||
Frontend-Nutzer-Login gelöst werden. Das ist explizit von \enquote{femanager} so angedacht:
|
||||
\quotecite{Note: Login and a I forgot my password function is part of the core and not part of femanager.}
|
||||
\cite{bib:typo3-docs-femanager}.
|
||||
Im Folgenden wird der Registrierungsprozess im Detail beschrieben:\\
|
||||
Im Folgenden wird der Registrierungsprozess im Detail beschrieben:
|
||||
\\
|
||||
\\
|
||||
Grundlegend gibt es drei relevante Nutzerzustände vor der Registrierung:
|
||||
\begin{enumerate}
|
||||
\item Kein Mitglied
|
||||
@ -158,7 +160,7 @@ Stammdatenformular konfrontiert. Dabei handelt es sich um Angaben zum teilnehmen
|
||||
Wird dieses Formular abgeschickt, ist die Teilnehmerregistrierung abgeschlossen.
|
||||
|
||||
\subsubsection*{Mitglied, mit Konto}
|
||||
Ist ein Nutzer ein \ac{WN}-Mitglied und hat bereits ein Mitgliedskonto, muss dieser auf der Registrierungsseite
|
||||
Ist ein Nutzer ein \ac{WM}-Mitglied und hat bereits ein Mitgliedskonto, muss dieser auf der Registrierungsseite
|
||||
\enquote{Ich bin ein Mitglied} auswählen. An dieser Stelle navigiert der Browser zu einem Login-Formular.
|
||||
Hier kann sich das Mitglied anmelden. Tut es dies erfolgreich, erstellt der Controller einen neuen
|
||||
Teilnehmer-Eintrag für den Frontend-Nutzer und fügt den Frontend-Nutzer der Nutzergruppe \enquote{Teilnehmer} hinzu.
|
||||
@ -184,14 +186,15 @@ realisiert.
|
||||
Anpassungen der versendeten Emails erfolgen durch Überschreiben der Email-Templates von Femanager.
|
||||
Weiterleitungen zu bestimmten Seiten, nachdem ein Nutzer spezielle Events ausgelöst hat, können über TypoScript
|
||||
konfiguriert werden \cite{bib:typo3-docs-femanager}. Logins werden über das TYPO3-Native Loginformular
|
||||
gelöst. Im TYPO3-Loginformular können Weiterleitungen zu spezialisierten Seiten im Backend-UI festgelegt werden.
|
||||
\cite{bib:typo3-docs-felogin}.
|
||||
gelöst. Im TYPO3-Loginformular können Weiterleitungen zu spezialisierten Seiten im Backend-UI festgelegt werden
|
||||
\break\cite{bib:typo3-docs-felogin}.
|
||||
Für alle funktionalen Belange wird ein TYPO3-Plugin registriert. Dieses Plugin verfügt über einen
|
||||
ActionController, der Nutzeranfragen an PHP-Funktionen (\enquote{Actions})
|
||||
bindet.
|
||||
In diesen Actions werden Fehlerbehandlungen durchgeführt, Datenmodelle der Domäne erstellt und in der
|
||||
Datenbank persistiert, sowie Daten für die Anzeige im Frontend aufbereitet \cite{bib:typo3-docs-extbase}.
|
||||
Neue Datenobjekte werden in Repositories registriert \cite{bib:typo3-docs-extdev-tut-tea-repositories}. Diese Repositories sind Aggregate des Controllers,
|
||||
Neue Datenobjekte werden in Repository-Objekten registriert
|
||||
\break\cite{bib:typo3-docs-extdev-tut-tea-repositories}. Diese Repositories sind Aggregate des Controllers,
|
||||
werden jedoch nach dem \enquote{Inversion of Control}-Prinzip via Dependency Injection instanziiert und
|
||||
der ActionController-Klasse über Methode übergeben \cite{bib:typo3-docs-di}.
|
||||
Als problematisch erweisen sich hierbei bidirektionale Verbindungen zwischen Datenmodellen, wenn die Foreign Keys
|
||||
@ -256,7 +259,7 @@ Die Formfeldwerte können unverändert in der Datenbank persistiert werden.
|
||||
\paragraph*{SelectSingle} sind Formfelder, die dem Nutzer eine Auswahl aus $n$ Elementen aus
|
||||
anderen Datenbanktabellen geben. Der Nutzer muss sich für genau ein Element entscheiden.
|
||||
Beispiele für SelectSingle-Formfelder sind: Weinlage, Qualitätsstufe, Rebsorte und Geschmacksangabe.
|
||||
SelectSingle-Formfelder werden durch Select-HTML-Tags abgebildet. Der TYPO3-Form-ViewHelper für
|
||||
\break{}SelectSingle-Formfelder werden durch Select-HTML-Tags abgebildet. Der TYPO3-Form-ViewHelper für
|
||||
\enquote{Select} akzeptiert eine Liste an Auswahlmöglichkeiten und erstellt selbstständig Option-HTML-Tags
|
||||
für diese.
|
||||
Die Formfeldwerte von SelectSingle-Formfeldern sind die
|
||||
@ -269,7 +272,8 @@ Somit sind diese nicht mehr sichtbar.
|
||||
\\
|
||||
\\
|
||||
Eine komplexe Ausnahme stellt das SelectSingle-Formfeld \enquote{Category} dar, da TYPO3-Kategorien
|
||||
Baumstrukturen sind \cite{bib:typo3-docs-sys-category}.
|
||||
als Baumstrukturen abgebildet werden
|
||||
\break\cite{bib:typo3-docs-sys-category}.
|
||||
Um die Eltern-Kind-Beziehung der Baumstruktur erstichtlich zu machen, werden die Option-HTML-Tags einzeln rekursiv gerendert. Zunächst werden sämtliche Kategorien, deren
|
||||
\ac{PID} 0 ist, dargestellt. Diese Elemente sind direkte Kinder des unsichtbaren Wurzelelementes. Für jede dieser Kategorien $a$ wird nun ein
|
||||
Fluid-Partial aufgerufen,
|
||||
@ -302,7 +306,7 @@ Somit ist die Zeitkomplexität $O(n^m)$. Normiert dargestellt beträgt die Zeitk
|
||||
\caption*{Quelle: Eigene Darstellung}
|
||||
\label{fig:timecomplexity-category}
|
||||
\end{nicepic}
|
||||
|
||||
\clearpage
|
||||
|
||||
Auf Optgroup-HTML-Tags wurde bewusst verzichtetet.
|
||||
Grund dafür ist, dass Optgroup-Elemente an sich nicht im Dropdown auswählbar sind.
|
||||
@ -313,10 +317,11 @@ von Unterkategorien hindeutet \cite{bib:typo3-docs-sys-category}, womit eine Unt
|
||||
Baumblättern und -Zweigen nicht ohne weiteres möglich wäre. Diese Entscheidung wäre jedoch
|
||||
benötigt, um zwischen einem Optgroup-Tag und einem Option-Tag abzuwägen.
|
||||
|
||||
\paragraph*{SelectMultiple} sind Formfelder, die dem Nutzer eine Auswahl aus $n$ Elementen aus einer anderen
|
||||
Datenbanktabelle geben. Der Nutzer kann sich für eine beliebige Anzahl dieser, eingeschlossen null, entscheiden.
|
||||
Ein Beispiel für SelectMultiple-Formfelder ist: Weineigenschaften.
|
||||
TYPO3-Fluid implementiert hierfür keinen ViewHelper \cite{bib:typo3-docs-fluid-form-viewhelpers},
|
||||
\paragraph*{SelectMultiple} sind Formfelder, die dem Nutzer eine Auswahl aus $n$ verschiedenen Elementen aus einer anderen
|
||||
Datenbanktabelle geben. Der Nutzer kann sich für eine beliebige Auswahl dieser, eingeschlossen keine, entscheiden.
|
||||
Ein Beispiel für SelectMultiple-Formfelder sind Weineigenschaften.
|
||||
TYPO3-Fluid implementiert hierfür keinen ViewHelper
|
||||
\break\cite{bib:typo3-docs-fluid-form-viewhelpers},
|
||||
also wurde eine eigene Lösung entworfen: Der Nutzer soll aus einer Menge $A$ wählen.
|
||||
Für alle Elemente $a \in A$
|
||||
wird ein Checkbox-Feld erstellt. Dieses Element trägt den Anzeigewert \enquote{<a.title>} und den
|
||||
@ -338,11 +343,11 @@ entfernt. Somit wird beispielsweise die Formfeld-ID \enquote{winekind-18} zu \en
|
||||
wodurch die tatsächlichen Objekte aus der Datenbank angefragt werden können.
|
||||
|
||||
\subsection{PDF- und QR-Code-Generierung}
|
||||
Das dynamische Erstellen und Ausgeben des Versandbeilageblattes als PDF ist ein essenzieller Bestandteil des
|
||||
Das dynamische Erstellen und Ausgeben des Datenblattes als PDF ist ein essenzieller Bestandteil des
|
||||
Jahresauswahlprobenwerkzeuges, da dieses PDF die Schnittstelle zwischen ankommenden Weinen und dem System darstellt.
|
||||
Daher ist der Gewinn, der durch dieses Werkzeug generiert wird, ohne dieses PDF stark eingeschränkt, da
|
||||
Daher ist der Gewinn, der durch dieses Werkzeug generiert wird, ohne dieses Dokument stark eingeschränkt, da
|
||||
einkommende Weine händisch, von Mitarbeitern, zugeordnet werden müssten.
|
||||
Wie im \fullref{chap:stand-der-forschung} erläutert, werden für die dynamische
|
||||
Wie im \fullref{chap:stand-der-forschung} erläutert wird, werden für die dynamische
|
||||
Generierung dieses PDFs die Bibliotheken \enquote{chillerlan/php-qrcode} und
|
||||
\enquote{mpdf/mpdf} herangezogen und über Composer installiert.
|
||||
|
||||
@ -354,7 +359,7 @@ Es ist Aufgabe der QR-Code-App, die den Code einscannt, aus der Wein-\ac{UID} ei
|
||||
Um Resourcen zu sparen und somit den Gewinn zu erhöhen, wird der QR-Code zu einem Base64-kodiertem Bild gerendert.
|
||||
Das ist der Standardrückgabewert des QR-Code-Generators
|
||||
und erfordert somit keine nähere Konfiguration. Ebenfalls lässt sich ein Base64-kodiertes Bild als Quell-URL eines
|
||||
IMG-HTML-Tags angeben, womit das Bild eingebettet ist. Hier wird der Gewinn erhöht, indem Arbeitszeit gespart wird,
|
||||
IMG-HTML-Tags angeben, womit das Bild eingebettet ist. Das spart Arbeitszeit,
|
||||
die sonst in das anderweitige Einbetten eines Bildes in einem PDF mit \enquote{mpdf} fließen müsste.
|
||||
Die QR-Codegenerierung funktioniert konkret, indem ein neues QRCode-Objekt der QRCode-Klasse erstellt wird.
|
||||
Diese Klasse nimmt ein QROptions-Objekt im Konstruktor, das in diesem Falle einige Stilattribute mit sich trägt.
|
||||
|
@ -66,8 +66,8 @@ Nach Verhoef et al. lässt sich der hier sogenannte \enquote{Prozess der Digital
|
||||
Diese drei Phasen sind \textit{Digitization}, \textit{Digitalization} und \textit{Digital Transformation}
|
||||
\cite{bib:verhoef}.
|
||||
Die Phase \textit{Digitization} befasst sich mit der Umwandlung analoger Datenstrukturen und Modellen in digitale Datenmodelle,
|
||||
sodass diese digital, in Form von Nullen und Einsen, gespeichert und elektronisch weiterverarbeitet werden können
|
||||
\cite{bib:dougherty, bib:loebbecke}.
|
||||
sodass diese digital, in Form von Nullen und Einsen, gespeichert und elektronisch\break weiterverarbeitet werden können
|
||||
\cite{bib:dougherty}\break\cite{bib:loebbecke}.
|
||||
\textit{Digitalization} beschreibt den Prozess der Veränderung bestehender Geschäftsprozesse, um mit digitalen Werkzeugen
|
||||
und Datenmodellen zu arbeiten \cite{bib:fengli}.
|
||||
Die letzte Phase, die \textit{Digitale Transformation}, beschreibt eine firmenweite Veränderung, die beispielsweise
|
||||
|
@ -6,13 +6,15 @@ Bibliotheken zur Erzeugung von QR-Codes und Bibliotheken zur Erzeugung von PDF-D
|
||||
|
||||
\section{Die bestehende Webseite}
|
||||
Als Mitentwickler des Projektes ist dem Autor bekannt, dass die bestehende Webseite ein TYPO3-Redaktionssystem ist. Das Frontend der Webseite wird mit Webpack und Sass übersetzt.
|
||||
Webpack ist ein Modulbundler \cite{bib:smashmagazine-webpack} und Sass ein CSS-Präprozessor \cite{bib:w3schools-sass}.
|
||||
TYPO3 ist ein Redaktionssystem und PHP-Rahmenwerk, das Daten- und Inhaltspflege in einem geschützten Bereich
|
||||
Webpack ist ein Modulbundler \cite{bib:smashmagazine-webpack} und Sass ein CSS-Präprozessor.
|
||||
\break\cite{bib:w3schools-sass}.
|
||||
TYPO3 ist ein Redaktionssystem und PHP-Rahmen\-werk, das Daten- und Inhaltspflege in einem geschützten Bereich
|
||||
ermöglicht.
|
||||
Außerdem werden Frontend-, Backend-Nutzer und Berechtigungen gesteuert \cite{bib:typo3-docs-getting-started}.
|
||||
Über die Systemerweiterung
|
||||
\enquote{Extbase} wird eine mächtige Entwicklerschnittstelle bereitstellt,
|
||||
um hochindividualisierte Funktionalitäten zu ermöglichen \cite{bib:typo3-docs-extbase-reference}.
|
||||
um hochindividualisierte Funktionalitäten zu ermöglichen.
|
||||
\\\cite{bib:typo3-docs-extbase-reference}
|
||||
|
||||
\section{QR-Code-Bibliotheken}
|
||||
Um mit QR-Codes zu arbeiten, ist es unabdinglich, QR-Codes zu erstellen, da dieselben sonst nicht vorhanden sind.
|
||||
@ -60,7 +62,8 @@ dem Java-Projekt \enquote{ZXing} und übersetzte diese zu PHP.
|
||||
Es gibt zu diesem Zeitpunkt keine unbeantworteten Issues oder Pull-Requests.
|
||||
\textit{Chillerlan/php-qrcode} basiert auf einer angepassten Version von \textit{kazuhikoarase/qrcode-generator}.
|
||||
Einzig auffällig sind die Commitnachrichten, die zuteils nur aus einem (1) Emoji bestehen.
|
||||
\textit{Chillerlan/php-qrcode} wurde von 1212 Github-Nutzern mit einem Stern markiert. Die Bibliothek ist MIT-lizensiert
|
||||
\textit{Chillerlan/php-qrcode} wurde von 1212 Github-Nutzern mit einem Stern markiert.
|
||||
Die Bibliothek ist MIT-\break{}lizensiert
|
||||
\cite{bib:chillerlan-php-qrcode}.
|
||||
|
||||
\subsubsection*{Kreativekorp/barcode}
|
||||
@ -174,9 +177,9 @@ Rochko stellt eine ausführliche Dokumentation und Codebeispiele bereit.
|
||||
Hierfür wird die volle Punktzahl in \enquote{Gepflegtheit} vergeben.
|
||||
Der Funktionsumfang übersteigt weit die Anforderungen und gestattet so ausführlich gestaltete QR-Codes
|
||||
\cite{bib:chillerlan-php-qrcode-demo},
|
||||
die somit ebenso die hedonische Qualität fördern \cite{bib:koenig-vorlesung-ux}.
|
||||
die somit die hedonische Qualität fördern \cite{bib:koenig-vorlesung-ux}.
|
||||
Bewertet wird das mit einer vollen Punktzahl in \enquote{Funktionalität}.
|
||||
Chillerlan/php-qrcode lässt sich nahtlos in das existierende Projekt eingliedern,
|
||||
\break Chillerlan/php-qrcode lässt sich nahtlos in das existierende Projekt eingliedern,
|
||||
da es als PHP-Bibliothek über Composer eingebunden werden kann und eine eigene API bereitstellt \cite{bib:chillerlan-php-qrcode}.
|
||||
Die von Rochko verwendete Lizenz gestattet eine unkomplizierte Verwendung. Chillerlan/php-qrcode funktioniert sowohl mit
|
||||
PHP $7.x$ als auch $8.x$. Die Bibliothek benötigt zwei weitere Abhängigkeiten. Eine dieser Abhängigkeiten ist ebenfalls von Rochko
|
||||
@ -242,7 +245,7 @@ Dadurch werden drei Punkte einer vollkommenen Workflow-Eignung abgezogen, wodurc
|
||||
|
||||
\subsection{Fazit}
|
||||
Nach Evaluation der verschiedenen QR-Code-Bibliotheken im Kontext der vorliegenden Problemstellung erweist sich aus Sicht des Autors
|
||||
\textit{chillerlan/php-qrcode} mit 30 Gesamtpunkten als die am besten geeignetste Bibliothek.
|
||||
\break\textit{chillerlan/php-qrcode} mit 30 Gesamtpunkten als die am besten geeignetste Bibliothek.
|
||||
Somit wird \textit{chillerlan/php-qrcode} als QR-Code Technologie in der Lösung dieser Problemstellung verwendet.
|
||||
|
||||
\begin{table}[htbp]
|
||||
|
@ -10,7 +10,7 @@
|
||||
\newcommand{\cfgDocClassification}{Abschlussarbeit}
|
||||
|
||||
% Document version
|
||||
\newcommand{\cfgDocVersion}{1.9}
|
||||
\newcommand{\cfgDocVersion}{2.0}
|
||||
|
||||
% Last modification date
|
||||
\newcommand{\cfgDateLastModification}{30. März 2023}
|
||||
|
Loading…
x
Reference in New Issue
Block a user