feat: probelesen
@ -12,7 +12,7 @@
|
||||
% Constraint & Einbau in brown-field TYPO3\\\hdashline
|
||||
% Constraint & Kunden-UI im Frontend\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Mitglieder bei \ac{WM} können sich einen\\Nutzeraccount erstellen}\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Nicht-Mitglieder bei \ac{WM} können sich\\einen Nutzeraccount erstellen}\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Nichtmitglieder bei \ac{WM} können sich\\einen Nutzeraccount erstellen}\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Angemeldete Nutzer sehen eine Übersicht\\aller aktiven Jahresauswahlproben}\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Angemeldete Nutzer können mehrere Weine\\bei aktiven Jahresauswahlproben anmelden}\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Eine Weinanmeldung frägt Weindaten mit\\einem Webform ab}\\\hdashline
|
||||
|
@ -16,15 +16,15 @@ Wie oben erwähnt, sind bereits die Constraints und einige funktionale und nicht
|
||||
\textbf{Art der Anforderung} & \textbf{Anforderungsbeschreibung}\\
|
||||
\hline
|
||||
\hline
|
||||
\ac{NFA} & \makecell[l]{Angaben zum Weingut des Weines\\sollen aus dem Accountdatensatz anstatt\\aus dem Webform kommen.}\\
|
||||
\ac{NFA} & \makecell[l]{Angaben zum Weingut des Weines\\sollen aus dem Accountdatensatz anstatt\\aus dem Web-Formular kommen.}\\
|
||||
\hdashline
|
||||
\ac{NFA} & \makecell[l]{Aus dem Papierformular soll ein\\Webformular werden.}\\
|
||||
\ac{NFA} & \makecell[l]{Aus dem Papierformular soll ein\\Web-Formular werden.}\\
|
||||
\hdashline
|
||||
\ac{FA} & \makecell[l]{Beim Erstellen einer Weinteilnahme\\soll ein QR-Code als PDF generiert werden,\\der den Wein identifiziert.}\\
|
||||
\hdashline
|
||||
\ac{FA} & \makecell[l]{Durch scannen des QR-Codes auf dem\\mit einer Weinteilnahme erstellten PDFs soll\\dem Wein der Status \enquote{Eingegangen}\\ zugewiesen werden.}\\
|
||||
\ac{FA} & \makecell[l]{Durch scannen des QR-Codes auf dem\\mit einer Weinteilnahme erstellten PDFs soll\\dem Wein der Status \enquote{eingegangen}\\ zugewiesen werden.}\\
|
||||
\hdashline
|
||||
Constraint & Einbau in brown-field TYPO3\\
|
||||
Constraint & Einbau in Brown-Field TYPO3\\
|
||||
\hdashline
|
||||
Constraint & Mitarbeiter-UI in TYPO3-Backend\\
|
||||
\hdashline
|
||||
@ -43,7 +43,7 @@ Um nähere Anforderungen zu ermitteln, werden die Befragungstechniken \enquote{I
|
||||
|
||||
\section{Interview mit Product Owner}
|
||||
Zunächst wird ein Interview mit dem \ac{PO} geführt. Ziel dieses Interviews ist
|
||||
es, konkrete Fragen zu Anforderungen zu klären und somit konkrete Anforderungen zu formulieren.
|
||||
es, konkrete Fragen zu Anforderungen zu klären und somit klare Anforderungen zu formulieren.
|
||||
Aufgrund der individuellen Gesprächsführung wurde sich für ein \enquote{teil-standardisiertes Interview}
|
||||
entschieden. Bei einem teil-standardisiertem Interview gibt es vordefinierte Fragen,
|
||||
aber auch Freiraum für Improvisation und Persönlichkeit.
|
||||
@ -75,8 +75,8 @@ beantworten könnte. Somit fällt ein Onlinefragebogen für die Stakeholdergrupp
|
||||
Der Fragebogen der Stakeholdergruppe \enquote{teilnehmende Weingüter} liegt im Anhang unter
|
||||
\fullref{chap:anhang-fragebogen-extern} bei.
|
||||
Um den Aufwand und somit die Hemmschwelle des Ausfüllens
|
||||
eines solchen Online-Fragebogens zu minimieren, gibt es lediglich sechs quantitative Fragen
|
||||
zuzüglich einem optionalen Freitextfeld, um sonstige Wünsche zum Ausdruck zu bringen.
|
||||
eines solchen Online-Fragebogens zu minimieren, werden lediglich sechs quantitative Fragen
|
||||
zuzüglich einem optionalen Freitextfeld, um sonstige Wünsche zum Ausdruck zu bringen, gestellt.
|
||||
Eine Anmeldung über Google für Google-Forms ist nicht erforderlich.
|
||||
Der Link zu diesem Online-Fragebogen wurde \ac{WM} mit der Bitte um Weitergabe an
|
||||
die Probenteilnehmer übergeben.
|
||||
@ -93,7 +93,7 @@ Weitere wichtigste Erkenntnisse des Interviews sind:
|
||||
\item[Endgerät für Scanning und Scanneranwendung]\hfill\\
|
||||
Gescannt wird von Mobiltelefonen mit einer QR-Code-App wie QRBot.
|
||||
QRBot ermöglicht es Nutzern für jeden aufgerufenen QR-Code eine Vorlagen-URL aufzurufen,
|
||||
um den gescannten Wert als Teil der Url, z.B. als Get-Parameter, zu übergeben \cite{bib:qrbot}.
|
||||
um den gescannten Wert als Teil der URl, z.B. als Get-Parameter, zu übergeben \cite{bib:qrbot}.
|
||||
Das ist prädestiniert für API-ähnliche Webseitenaufrufe, um Weine einzuchecken.
|
||||
\item[Trennung von Weinen nach Jahresauswahlproben im Frontend]\hfill\\
|
||||
Da es $n$ Jahresauswahlproben gibt und Weine immer genau einer Jahresauswahlprobe zugeordnet sein müssen, macht es wenig
|
||||
@ -103,7 +103,7 @@ Weitere wichtigste Erkenntnisse des Interviews sind:
|
||||
Diese Weine sind ebenso anklickbar und führen zu einer Einzelansicht der Weine.
|
||||
\item[Nutzerführung für \ac{WM}-Angestellte]\hfill\\
|
||||
Gescanne QR-Codes von Weinen sollen den Wein als eingegangen markieren und anschließend dem
|
||||
Mitarbeiter zeigen, welcher Wein eingechecked wurde. Somit dient das Scannen eines Codes ebenso zur
|
||||
Mitarbeiter zeigen, welcher Wein eingecheckt wurde. Somit dient das Scannen eines Codes ebenso zur
|
||||
Einsicht der Details der gelagerten Flaschen.
|
||||
Es soll ein Backendmodul \cite{bib:typo3-docs-modules} geben, das für den Export von CSV-Daten zuständig ist.
|
||||
Sonstige Aktionen sind im TYPO3-Backend mit nativen Werkzeugen erreichbar.
|
||||
@ -112,11 +112,10 @@ Weitere wichtigste Erkenntnisse des Interviews sind:
|
||||
\item Jahresauswahlproben-Listenansicht
|
||||
\item Jahresauswahlproben-Detailansicht
|
||||
\item Wein-Registrierungsformular
|
||||
\item PDF-Url für Versandbriefe
|
||||
\item PDF-URL für Versandbriefe
|
||||
\item Registrierungsseite mit mehreren Schritten
|
||||
\item Mitarbeiterseite für gescannte QR-Codes
|
||||
\item Listenansicht der Jahresauswahlproben im CSV-Exporter im Backend
|
||||
\item Detailansicht der Jahresauswahlprobe im CSV-Exporter im Backend
|
||||
\item Listen- und Detailansicht der Jahresauswahlproben im CSV-Exporter im Backend
|
||||
\end{itemize}
|
||||
|
||||
\end{description}
|
||||
@ -130,13 +129,13 @@ der gewünschte Geschäftsprozess der Jahresauswahlprobe nach Fertigstellung die
|
||||
Hierbei ist es wichtig, die Schnittstelle zwischen den gleichbleibenden Arbeitsschritten und den zu digitalisierenden
|
||||
Arbeitsschritten zu beachten. Diese Schnittstelle sollte unverändert bleiben,
|
||||
um eine nahtlose Integration in den restlichen, bestehenden Workflow von \ac{WM} zu gewährleisten.
|
||||
Diese Schnittstelle stellt eine Excel-Tabelle dar. Zuvor wurde diese Excel-Tabelle von Hand aus den
|
||||
Anmeldeformularen erstellt. Nach Fertigstellung dieses Projektes soll diese Tabelle in Form
|
||||
Diese Schnittstelle stellt eine Excel-Tabelle dar. Zuvor wurde diese Excel-Tabelle von Hand, aus den
|
||||
Anmeldeformularen, erstellt. Nach Fertigstellung dieses Projektes soll diese Tabelle in Form
|
||||
von CSV-Daten aus dem Redaktionssystem exportiert werden können. Diese können Mitarbeiter von \ac{WM} in Excel
|
||||
importieren und in kommenden Planungsschritten der Jahresauswahlprobe ohne Umstellung weiter verwenden.
|
||||
Das ist wichtig, da solche Umstellungen, ohne nennenswerte Verbesserungen des restlichen, von dieser
|
||||
Ausarbeitung unberührten Workflows, Zeit kostet, ohne Vorteile zu erbringen.
|
||||
Dieser Zeitverlust würde den durch die Digitalisierung erzielten Gewinn schädigen.
|
||||
Ausarbeitung unberührten Workflows, Zeit kosten, ohne Vorteile zu erbringen.
|
||||
Dieser Zeitverlust würde den durch die Digitalisierung erzielten Vorteil schmälern.
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=1\textwidth]{images/geschäftsprozess-nachher.png}
|
||||
|
@ -14,9 +14,9 @@ Hierbei werden sämtliche auf das Weingut bezogene Daten redundant ausgefüllt.
|
||||
Eigenschaften der Weine, sondern die des Weingutes selbst sind.
|
||||
Da sich das Weingut zwischen den Weinen nicht ändert,
|
||||
ändern sich die darauf bezogenen Daten auch nicht. Sie müssen aber für jeden Wein erneut ausgefüllt werden.
|
||||
Abgesehen davon, dass solche Redundanzen auf Weinguts- und verbandsseite die hedonische Qualität schädigen,
|
||||
Abgesehen davon, dass solche Redundanzen auf Weinguts- und Verbandsseite die hedonische Qualität schädigen,
|
||||
bietet ein solcher Workflow Freiraum für Fehler und Inkonsistenzen.
|
||||
Dieser Workflow, mit den zuvor genannten Nachteilen, wird auf verbandsseite, nach Zustellung der Weine, weiter fortgeführt:
|
||||
Dieser Workflow, mit den zuvor genannten Nachteilen, wird auf Verbandsseite, nach Zustellung der Weine, weiter fortgeführt:
|
||||
\ac{WM} erfährt erstmalig mit der Zustellung eines Weines von dessen Teilnahme. Das erschwert die Planung der Logistik,
|
||||
da im Voraus keine konkrete Zahl der zu erwartenden Flaschen bekannt ist. Geht eine Flasche auf dem Postweg verloren,
|
||||
könnte das unbemerkt bleiben, da der Prozess für das Weingut mit dem Versand endet und der Prozess für \ac{WM}
|
||||
@ -26,7 +26,7 @@ Kommt ein teilnehmender Wein bei \ac{WM} an, wird das beiliegende Formular von H
|
||||
Diese Schnittstelle ist besonders resourcenaufwändig und fehleranfällig, da es oft vorkommt, dass die teils
|
||||
dysgraphisch verfassten Formulare nur schwer, mehrdeutig, oder gar nicht dechiffriert werden können.
|
||||
In diesem Prozess wird der Teilnahme des Weines eine inkrementell aufsteigende \ac{ELN} zugewiesen,
|
||||
die anschließend in Form eines Aufklebers an der Flasche befestigt wird. Darauffolgend wird die Flasche im Lager verstaut.
|
||||
die anschließend in Form eines Aufklebers auf der Flasche angebracht wird. Darauffolgend wird die Flasche im Lager verstaut.
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=1\textwidth]{images/geschäftsprozess-vorher.png}
|
||||
|
@ -4,13 +4,13 @@
|
||||
\section{Praktische Ergebnisse}
|
||||
Die TYPO3-Erweiterung ist umgesetzt und erfüllt die vereinbarten Anforderungen.
|
||||
Mitglieder und Nichtmitgleder können Teilnehmernutzer anlegen und Weine zu Jahresauswahlproben anmelden.
|
||||
Teilnehmer bekommen ein PDF-Dokument mit einem QR-Code zur späteren Zuordnung bereitgestellt.
|
||||
Teilnehmer bekommen ein PDF-Dokument mit Weindaten und einem QR-Code zur späteren Zuordnung bereitgestellt.
|
||||
\ac{WM}-Mitarbeiter können diesen QR-Code einscannen, um Weine als \enquote{angekommen} zu markieren.
|
||||
Redakteure von \ac{WM} können Zugriffsrechte und Verhalten der Jahresauswahlproben auf verschiede Weisen einschränken.
|
||||
Sie können den Sichtbarkeitszeitraum, den Anmeldezeitraum und den Probezeitraum festlegen, der definiert ab
|
||||
wann teilnehmende Weine öffentlich sind.
|
||||
Sie können Jahresauswahlproben und damit deren Anmeldeformulare auf festgelegte Wettebwerbskategorien beschränken.
|
||||
Mitarbeiter können Weindatensätze, getrennt nach Jahresauswahlproben, als CSV-Dokument exportieren und somit
|
||||
Sie können Jahresauswahlproben und damit deren Anmeldeformulare auf festgelegte Probenkategorien beschränken.
|
||||
Mitarbeiter können Weindatensätze, getrennt nach Jahresauswahlproben, als CSV-Dokumente exportieren und somit
|
||||
den verbleibenden Geschäftsprozess wie gehabt fortsetzen.
|
||||
Praktische Präsentationen gegenüber dem \ac{PO} bestätigen die Umsetzung der Anforderungen und stellen die Basis
|
||||
für weitere Iterationen der Entwicklung dar.
|
||||
@ -35,10 +35,13 @@ der bei kleinen Projekten, wie der hier beleuchteten Aufgabenstellung, unabdingl
|
||||
Umsetzung gewährleisten zu können.
|
||||
|
||||
\paragraph*{Welche Anforderungen sind an die TYPO3-Erweiterung gestellt?}
|
||||
Um ein Pflichtenheft für die hier beleuchtete TYPO3-Erweiterung zu erarbeiten, wurde eine Anforderungsanalyse in Form eines Interviews mit dem \ac{PO}
|
||||
durchgeführt. Dieses Pflichtenheft zeigt unter anderem auf, dass Mitglieder sowie Nichtmitglieder Teilnehmer sein können,
|
||||
Um ein Pflichtenheft für die hier beleuchtete TYPO3-Erweiterung zu erarbeiten,
|
||||
wurde eine Anforderungsanalyse in Form eines Interviews mit dem \ac{PO} durchgeführt.
|
||||
Auch wurde eine quantitative Studie in Form eines Online-Fragebogens bezüglich der Bedürfnisse der Teilnehmer angestrengt, die ohne Ergebnisse verblieb.
|
||||
Dieses Pflichtenheft zeigt unter anderem auf, dass Mitglieder sowie Nichtmitglieder Teilnehmer sein können,
|
||||
wie die Nutzerführung aussieht, welche Werkzeuge \ac{WM}-Mitarbeitern zur Verfügung stehen und wie verschiedene Schnittstellen aussehen.
|
||||
Das vollständige Ergebnis dieser Anforderungsanalyse liegt im Anhang anbei, unter \fullref{chap:anhang-pflichtenheft}.
|
||||
Auch ist eine wichtige Erkenntnis, dass regelmäßige Statusmeetings mit dem \ac{PO} durchgeführt werden sollten.
|
||||
Das vollständige Ergebnis dieser Anforderungsanalyse liegt im Anhang anbei, unter fullref{chap:anhang-pflichtenheft}.
|
||||
|
||||
\paragraph*{Welche QR-Code-Bibliothek ist für das behandelte Projekt gut geeignet?}
|
||||
Um die Anmeldung und Zustellung von Weinen digital umsetzen zu können, ist lt. Anforderungen ein QR-Code-Generator notwendig.
|
||||
@ -78,7 +81,7 @@ angemessener Entwicklungsmethodiken für abweichende Projekttypen und -beschaffe
|
||||
\paragraph*{Welche Anforderungen sind an die TYPO3-Erweiterung gestellt?}
|
||||
Um detaillierte Anforderungen an die TYPO3-Erweiterung in Erfahrung zu bringen, wurde eine Anforderungsanalyse durch verschiedene
|
||||
Befragunstechniken durchgeführt. Die verwendeten Befragunstechniken sind \enquote{Interview} und \enquote{Online-Fragebogen}.
|
||||
Es ist wichtig, dass der Online-Fragebogen unbeantwortet blieb.
|
||||
Es ist wichtig zu erwähnen, dass der Online-Fragebogen unbeantwortet blieb.
|
||||
Das Ergebnis dieser Anforderungsanalyse ist ein detailliertes Pflichtenheft, das die Anforderdungen an die TYPO3-Erweiterung detailliert beschreibt.
|
||||
Dieses zeigt unter anderem auf, dass Mitglieder und Nichtmitglieder Teilnehmer sein können,
|
||||
wie detaillierte Konzepte der Nutzerführung und verschiedene Schnittstellen aussehen und welche Werkzeuge \ac{WM}-Mitarbeitern zur Verfügung stehen.
|
||||
@ -99,7 +102,7 @@ Funktionsumfang. Dieser Vergleich deutet darauf hin, dass \enquote{chillerlan/ph
|
||||
die beste Eignung der verglichenen Bibliotheken aufweist. Es wurde davon ausgegangen, dass \enquote{chillerlan/php-qrcode} eine gute Wahl sei,
|
||||
da diese Bibliothek bereits firmenintern nahegelegt wurde. Der abgehaltene Vergleich bestätigt
|
||||
diese Empfehlung. Dieser Erfolg erklärt sich durch ein aktiv gepflegtes Softwareprodukt mit einer Vielzahl an Entwicklern,
|
||||
Empfehlungen, Verwendungen, aktueller Versionsunterstützung, guter Dokumentation und projektspezifischer Eignung.
|
||||
Verwendungen, aktueller Versionsunterstützung, guter Dokumentation und projektspezifischer Eignung.
|
||||
Es muss jedoch beachtet werden, dass dieser Vergleich das spezifische Projekt als wichtigen Faktor mit einbezieht.
|
||||
Somit ist dieser Vergleich nur gültig, um eine QR-Code-Bibliothek für ein PHP-Projekt mit dem Composer-Paketmanager zu evaluieren.
|
||||
Der Autor empfielt ähnliche Vergleiche für andere Arbeitsumgebungen durchzuführen, um zu bestimmen, welche QR-Code-Bibliotheken für andere
|
||||
@ -113,8 +116,8 @@ Geschäftsprozess der Jahresauswahlprobe.
|
||||
Diese Umsetzung zeigt auf, dass es für eine nahtlose Integration in den existierenden Geschäftsprozess
|
||||
unabdinglich ist, dass die Ausgabe des digitalisierten Teilprozesses der Ausgabe des ersetzten, manuellen Teilprozesses gleicht.
|
||||
Dieser Aspekt wurde zuvor nicht bedacht. Das könnte daran liegen, dass diese Schnittstelle nicht der primäre und auch nicht
|
||||
der sekundäre Fokus in der Umsetzung ist. Sie wird nicht benötigt, damit das umgesetzte Produkt intrinsisch funktioniert,
|
||||
ist aber dennoch unverzichtlich für eine praktische Verwendung.
|
||||
der sekundäre Fokus der Umsetzung ist. Sie wird nicht benötigt, damit das umgesetzte Produkt intrinsisch funktioniert,
|
||||
ist aber dennoch unverzichtlich für eine reibungslose, praktische Verwendung.
|
||||
Hierbei muss jedoch berücksichtigt werden, dass es sich um ein einzelnes, konkretes Projekt handelt und sich aus diesem Grund
|
||||
nicht unbedingt allgemeingültige Schlüsse ableiten lassen. Eine Forschungsempfehlung ist es daher, weitere Möglichkeiten
|
||||
zur Integration verschiedener Teilprozesse zu recherchieren und zu evaluieren.
|
||||
|
@ -16,9 +16,9 @@ Es wurde begründet, dass die Durchführung einer Anforderungsanalyse wichtig is
|
||||
\\
|
||||
\\
|
||||
Durch diese Forschung wurde somit erwiesen, dass die Anmeldung und Zustellung von Weinen für Weinproben des Regionalverbunds für
|
||||
Weine in der Weinregion Mosel effizient und profitabel durch eine TYPO3-Erweiterung realisiert werden kann. Dies indem für die technische
|
||||
Weine in der Weinregion Mosel effizient und profitabel durch eine TYPO3-Erweiterung realisiert werden kann, indem für die technische
|
||||
Umsetzung \enquote{extreme-programming}-Entwicklungsmethodiken herangezogen werden, durch eine Anforderungsanalyse ein Pflichtenheft ausarbeitet wird,
|
||||
\textit{chillerlan/php-qrcode} als QR-Code-Bibliothek verwendet wird und die Schnittstelle zu den verbleibenden Teilprozessen geschützt wird.
|
||||
\break\textit{chillerlan/php-qrcode} als QR-Code-Bibliothek verwendet wird und die Schnittstelle zu den verbleibenden Teilprozessen geschützt wird.
|
||||
|
||||
\section{Ausblick}
|
||||
\label{chap:ausblick}
|
||||
@ -49,6 +49,6 @@ der in einer Jahresauswahlprobenkategorie für trockene Weine antreten soll.
|
||||
Ziel ist es, dass das Weinanmeldeformular fehlerhafte
|
||||
Anmeldeversuche als solche erkennt und verhindert.
|
||||
Kompliziert wird diese Technik dadurch, dass Kategorien beliebig viele Restriktionen haben können
|
||||
und diese von Redakteuren, im TYPO3-Backend, gepflegt können werden sollen. Ein komplexeres, realistisches Beispiel wäre eine
|
||||
und diese von Redakteuren, im TYPO3-Backend, gepflegt werden sollen. Ein komplexeres, realistisches Beispiel wäre eine
|
||||
Kategorie, die nur vegane Barriqueweine der Rebsorte Merlot zulässt, die einen Mindest- und Maximalrestzuckeranteil, einen Maximalalkoholanteil und
|
||||
einen Maximalpreis erfüllen.
|
||||
|
@ -6,8 +6,8 @@ Brown-Field Projekt \cite{bib:schwarzer-vorlesung-swa} in Form einer TYPO3-Erwei
|
||||
Es ist anzumerken, dass das aus \fullref{chap:anforderungserfassung} hervorgehende Pflichtenheft im Rahmen geplanter und
|
||||
opportunistischer Gespräche mit dem \ac{PO} geringfügige Änderungen erfahren wird.
|
||||
|
||||
\section{Setup einer TYPO3-Erweiterung}
|
||||
TYPO3-Erweiterungs werden via Composer installiert \break\cite{bib:typo3-docs-managing-extensions}.
|
||||
\section{Setup der TYPO3-Erweiterung}
|
||||
TYPO3-Erweiterungen werden via Composer installiert \break\cite{bib:typo3-docs-managing-extensions}.
|
||||
Um eine TYPO3-Erweiterung zu erstellen, muss also ein Composer-Paket erstellt werden.
|
||||
Um vermeidbare Komplexität zu verhindern, wird das Composer-Paket, welches die hier betrachtete
|
||||
TYPO3-Erweiterung darstellt, lokal in den versionierten Ordner \enquote{packages} gelegt.
|
||||
@ -17,7 +17,7 @@ Somit wird ein Composer-Paket nur für dieses Projekt bereitgestellt,
|
||||
ohne den Aufwand zu betreiben, der üblicherweise mit dem Bereitstellen eines Paketes einhergeht.
|
||||
\\
|
||||
\\
|
||||
Um das grundlegende Setup einer TYPO3-Erweiterung effizient durchzuführen, wurde eine
|
||||
Um das grundlegende Setup einer TYPO3-Erweiterung effizient durchzuführen, wird eine
|
||||
existierende Erweiterung mit vergleichbarem Funktionsumfang kopiert, umbenannt und eingefügt.
|
||||
Spezifisch ist dieser \enquote{vergleichbare Funktionsumfang}, dass es ebenfalls Datenmodelle und hochpersonalisierte
|
||||
Frontendlogik in Bezug auf die zuvor genannten Datenmodelle gibt.
|
||||
@ -28,6 +28,7 @@ in einer Art und Weise, die ermöglicht, dass diese elektronisch weiterverarbeit
|
||||
Des Weiteren befasst sich diese Phase mit der Automatisierung und Befüllung dieser Daten,
|
||||
wie zum Beispiel durch Web-Formulare \cite{bib:verhoef}.
|
||||
Das bedeutet, dass in dieser Phase Datenobjekte definiert und implementiert werden.
|
||||
Ebenfalls werden anhand der Papier-Formulare Web-Formulare gebaut, damit Nutzer diese Datenobjekte erstellen können.
|
||||
Ein Datenobjekt besteht nach firmeninternen Konventionen aus zumindest
|
||||
vier Komponenten:
|
||||
\begin{description}
|
||||
@ -50,28 +51,28 @@ angefertigt und in Rücksprache mit dem \ac{PO} finalisiert.
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=1\textwidth]{images/objektrelationen-weinlandmosel-einlieferungswerkzeug.png}
|
||||
\captionof{figure}{Objektrelationen}
|
||||
\caption*{Quelle: Eigene Darstellung: Weinland Mosel Einlieferungswerkzeug}
|
||||
\captionof{figure}{Objektrelationen: Weinland Mosel Einlieferungswerkzeug}
|
||||
\caption*{Quelle: Eigene Darstellung}
|
||||
\label{fig:objektrelationen}
|
||||
\end{nicepic}
|
||||
|
||||
Nachdem in Erfahrung gebracht wurde, welche konkreten Datenobjekte benötigt werden,
|
||||
wurden Attribute dieser Objekte dem Pflichtenheft entnommen. Diese wurden in einem
|
||||
Nachdem in Erfahrung gebracht wird, welche konkreten Datenobjekte benötigt werden,
|
||||
werden Attribute dieser Objekte dem Pflichtenheft entnommen. Diese werden in einem
|
||||
formalen Klassendiagramm festgehalten und in Rücksprache mit dem \ac{PO}
|
||||
weiter bis zu festen Datentypen und Auswahlmöglichkeiten konkretisiert.
|
||||
Beispielsweise dass Wettbewerbskategorien durch TYPO3-Categories repräsentiert werden.
|
||||
Das hat den Vorteil, dass TYPO3-Categories bereits native Bestandteile eines TYPO3-Redaktionssystemes sind
|
||||
und alle relevanten Attribute anbieten. Diese sind Titel,
|
||||
Parentkategorie und Beschreibung.
|
||||
Das Parent-Attribut ist benötigt, da $n$ dieser Attribute einen Attributbaum bilden
|
||||
Das Parent-Attribut ist nötig, da $n$ dieser Attribute einen Attributbaum bilden
|
||||
\cite{bib:typo3-docs-sys-category}.
|
||||
Somit ist es möglich, Unterkategorien zu erstellen. Beispiele hierfür sind die
|
||||
Unterkategorien \enquote{Trockener Riesling} und \enquote{Halbtrockener Riesling} für die Überkategorie
|
||||
\enquote{Riesling}.
|
||||
Rebsorten, Geschmack, Weineigenschaften und Qualität sollen eigene Datentypen,
|
||||
Rebsorte, Geschmacksangabe, Weineigenschaften und Qualitätsstufe sollen eigene Datentypen,
|
||||
anstatt einfacher Zeichenfolgen sein.
|
||||
Ziel dessen ist, dass sich Nutzer für einen vorgefertigten, nominalen Eintrag in einem Dropdown-Menü
|
||||
entscheiden müssen und diese Auswahlmöglichkeiten im TYPO3-Backend pflegbar sind.
|
||||
entscheiden müssen und dass diese Auswahlmöglichkeiten im TYPO3-Backend pflegbar sind.
|
||||
Weinlagen sind im Brown-Field-Projekt bereits vorhanden, also sollen hierfür existierende Daten
|
||||
wiederverwendet werden.
|
||||
Je Wein sollen beliebig viele Weineigenschaften auswählbar sein. Wettbewerbskategorien,
|
||||
@ -103,10 +104,10 @@ Dem Pflichtenheft ist zu entnehmen, dass es zwei Kategorien von Teilnehmerregist
|
||||
\item Nutzer ist \ac{WM}-Mitglied
|
||||
\item Nutzer ist kein \ac{WM}-Mitglied
|
||||
\end{enumerate}
|
||||
Der primäre Unterschied zwischen Mitgliedern und Nicht-Mitgliedern ist, dass Mitglieder bereits einen
|
||||
Der primäre Unterschied zwischen Mitgliedern und Nichtmitgliedern ist, dass Mitglieder bereits einen
|
||||
Stammdatensatz hinterlegt haben.
|
||||
Dieser Stammdatensatz bildet die Angaben zum Weingut des zu digitalisierenden Anmeldeformulares ab.
|
||||
Nicht-Mitglieder sind dem System noch gänzlich unbekannt und müssen im Zuge der Registrierung ihres Nutzers
|
||||
Nichtmitglieder sind dem System noch gänzlich unbekannt und müssen im Zuge der Registrierung ihres Nutzers
|
||||
ihre Stammdaten angeben, während sich Mitglieder lediglich einloggen müssen und eine Schaltfläche
|
||||
\enquote{Teilnehmer werden} betätigen.
|
||||
Der mit dem \ac{PO} ausgearbeitete UX-Flow der Registrierung sieht vor, dass der Nutzer zunächst gefragt wird,
|
||||
@ -114,7 +115,7 @@ ob er Mitglied sei oder nicht. Hierzu gibt es je einen Button. Ist der Nutzer ei
|
||||
wird er auf ein Loginformular, mit der Option zur Registrierung weitergeleitet.
|
||||
Nach erfolgreichem Login, wird ein Teilnehmerobjekt erstellt.
|
||||
Wählt der Nutzer \enquote{Nein, ich bin kein Mitglied}, wird er auf ein Registrierungsformular
|
||||
weitergeleitet, um einen Nicht-Mitgliederaccount anzulegen. Im Zuge dieser Registrierung werden
|
||||
weitergeleitet, um einen Nichtmitgliederaccount anzulegen. Im Zuge dieser Registrierung werden
|
||||
Stammdaten zum Weingut angefragt.
|
||||
Dieser Schritt übersetzt unter anderem den \enquote{Einreicher}-Teil des ursprünglichen Anmeldeformulares,
|
||||
anbei in \fullref{chap:anhang-anmeldeformular}.
|
||||
@ -130,7 +131,7 @@ Da das Brown-Field-Projekt bereits Accountlogins und -registrierungen implementi
|
||||
wird auf diese Lösungen zurückgegriffen, um einen einheitlichen Workflow beizubehalten.
|
||||
Accountregistrierungen werden über den
|
||||
\enquote{femanager} \cite{bib:typo3-docs-femanager} realisiert, während Logins via TYPO3s nativem
|
||||
Frontend-Nutzer-Login gelöst werden. Das ist explizit von \enquote{femanager} so angedacht:
|
||||
Frontend-Nutzer-Login gelöst werden. Das ist explizit von \enquote{femanager} 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:
|
||||
@ -196,9 +197,10 @@ Datenbank persistiert sowie Daten für die Anzeige im Frontend aufbereitet \cite
|
||||
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 eine Methode übergeben \cite{bib:typo3-docs-di}.
|
||||
ActionController-Objekten über Methoden übergeben \cite{bib:typo3-docs-di}.
|
||||
Als problematisch erweisen sich hierbei bidirektionale Verbindungen zwischen Datenmodellen, wenn die Foreign Keys
|
||||
über das SQL-Schlüsselwort \enquote{AUTO\_INCREMENT} in der Datenbank generiert werden.
|
||||
über das SQL-Schlüsselwort
|
||||
\break\enquote{AUTO\_INCREMENT} in der Datenbank generiert werden.
|
||||
Beispielsweise muss ein Masterrecord, der Betriebsinformationen speichert, bidirektional an ein Teilnehmerobjekt
|
||||
gebunden werden. Hierzu wird jedem der Elemente jeweils der Foreign Key des anderen übergeben.
|
||||
Als Foreign Keys werden hierfür die jeweiligen \acp{UID} herangezogen, da diese Werte durch
|
||||
@ -216,7 +218,7 @@ Ein Basismerkmal des Jahresauswahlprobenwerkzeuges ist die Möglichkeit, Weine z
|
||||
anzumelden. Dieser Schritt übersetzt unter anderem die verbleibenden Formfelder des
|
||||
ursprünglichen Anmeldeformulares, anbei in \fullref{chap:anhang-anmeldeformular}, in den digitalen Workflow.
|
||||
Für die Weinanmeldung spielt die Mitgliedsschaft eines Teilnehmers keine Rolle. Es wird lediglich ein
|
||||
Frontend-Nutzer der Nutzergruppe \enquote{Teilnehmer} benötigt. Dieser Nutzer hat, wenn angemeldet,
|
||||
Frontend-Nutzer der Nutzergruppe \enquote{Teilnehmer} erfordert. Dieser Nutzer hat, wenn angemeldet,
|
||||
Zugriff auf eine Auflistung aller zeitlich freigegebenen Jahresauswahlproben.
|
||||
Soweit der Registrierungszeitraum dieser Jahresauswahlprobe den aktuellen Zeitpunkt miteinschließt,
|
||||
wird eine \enquote{Jetzt Wein anmelden}-Schaltfläche angeboten.
|
||||
@ -295,7 +297,7 @@ Daher wird im Folgenden die Zeitkomplexität dieser Rekursionsfunktion betrachte
|
||||
Für diese Funktion kann kein Master-Theorem angewandt werden,
|
||||
da es sich hierbei nicht um einen \enquote{Divide-and-Conquer-Algorithmus} handelt.
|
||||
Das ist so, da das in der Rekursion weitergereichte Problem nicht kleiner wird,
|
||||
sondern gleich groß bleibt.
|
||||
sondern gleich groß bleibt. Demnach ist $b = 1$.
|
||||
Das verletzt die Bedingung $b>1$ des Master-Theorems, definiert als $T(n) = a*T(\frac{n}{b})+f(n)$
|
||||
\cite{bib:schwarzer-vorlesung-alg}.
|
||||
Der Algorithmus besteht aus $m \in \mathbb{N}$ verschachtelten For-Schleifen
|
||||
@ -309,7 +311,7 @@ Somit ist die Zeitkomplexität $O(n^m)$. Normiert dargestellt beträgt die Zeitk
|
||||
\label{fig:timecomplexity-category}
|
||||
\end{nicepic}
|
||||
|
||||
Auf Optgroup-HTML-Tags wurde bewusst verzichtetet.
|
||||
Auf Optgroup-HTML-Tags wird bewusst verzichtetet.
|
||||
Grund dafür ist, dass Optgroup-Elemente an sich nicht im Dropdown-Menü auswählbar sind.
|
||||
Das stellt ein Problem dar, da beispielsweise die Kategorie \enquote{Riesling},
|
||||
die die Unterkategorien \enquote{Trockener Riesling} und \enquote{Halbtrockener Riesling} beinhalten könnte,
|
||||
@ -323,23 +325,26 @@ Datenbanktabelle geben. Der Nutzer kann sich für eine beliebige Auswahl dieser,
|
||||
Ein Beispiel für SelectMultiple-Formfelder sind Weineigenschaften.
|
||||
TYPO3-Fluid implementiert hierfür keinen ViewHelper
|
||||
\cite{bib:typo3-docs-fluid-form-viewhelpers},
|
||||
also wurde eine eigene Lösung entworfen: Der Nutzer soll aus einer Menge $A$ wählen.
|
||||
also wird 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
|
||||
Wert \enquote{<formfeldname>-true}.
|
||||
Ist also eine dieser Checkboxen angehakt, hat sie den zuvor genannten Wert. Falls nicht, trägt sie keinen Wert.
|
||||
Weil alle angehakten Checkboxen dieses Formfeldes den selben Wert tragen, ist es PHP-seitig trivial
|
||||
eine Liste aller angehakten Checkbox-Ids dieses Formfeldes aus der Liste aller Formfeldparameter zu extrahieren.
|
||||
wird ein Checkbox-Feld erstellt. Dieses Element trägt den Anzeigewert \enquote{<a.title>},
|
||||
den ID- und Namenswert \enquote{<formfeldname>-<a.uid>} und den
|
||||
Formularwert \enquote{<formfeldname>-true}.
|
||||
Ist also eine dieser Checkboxen angehakt, hat sie den zuvor genannten Formularwert. Falls nicht, trägt sie keinen Formularwert.
|
||||
Weil alle angehakten Checkboxen dieses Formfeldes den selben Namenswert tragen, ist es phpseitig trivial
|
||||
eine Liste aller angehakten Checkbox-Namen dieses Formfeldes aus der Liste aller Formfeldparameter zu extrahieren.
|
||||
Hierfür wird die eingebaute PHP-Funktion \enquote{array\_keys} verwendet. Diese Funktion gibt alle
|
||||
Keys eines Arrays in Form eines numerisch indizierten Arrays zurück.
|
||||
Der optionale Parameter \enquote{filter\_values} bestimmt, dass ausschließlich die Keys
|
||||
der Key-Value-Pairs, die einen bestimmten
|
||||
Wert tragen, extrahiert werden \cite{bib:php-array-keys}. D.h., der Funktionsaufruf filtert alle Keys und somit alle
|
||||
Wert (der Formwert) tragen, extrahiert werden \cite{bib:php-array-keys}. D.h., der Funktionsaufruf filtert alle Keys und somit alle
|
||||
Formfeld-IDs des Formfeldparameter-Arrays heraus, die den Wert \enquote{<formfeldname>-true} haben. Das ist eine Liste
|
||||
aller Formfeld-IDs der Checkboxen des SelectMultiples, die angehakt wurden.
|
||||
Mit der eingebauten PHP-Funktion \enquote{array\_map} wird nun eine Operation auf alle Schlüssel
|
||||
der Liste angewandt, die \enquote{strlen('formfeldname-')} Zeichen, von links ausgehend, von der Formfeld-ID
|
||||
entfernt. Somit wird beispielsweise die Formfeld-ID \enquote{winekind-18} zu \enquote{18} transformiert. Übrig bleiben die \acp{UID} aller angehakten Elemente $a$, in Form einer Zeichenkette.
|
||||
aller Formfeld-Namen der Checkboxen des SelectMultiples, die angehakt wurden.
|
||||
Mit der eingebauten PHP-Funktion \enquote{array\_map} wird nun eine Operation auf alle Werte
|
||||
der Liste angewandt, die
|
||||
\break\enquote{strlen('<formfeldname>-')} Zeichen, von links ausgehend, vom Formfeld-Name
|
||||
entfernt. Somit wird beispielsweise der Formfeld-Name \enquote{winekind-18} zu \enquote{18} transformiert.
|
||||
Übrig bleiben die extrahierten \acp{UID} aller angehakten Elemente $a$, in Form einer Zeichenkette.
|
||||
Über die eingebaute PHP-Funktion \enquote{intval} ist es trivial diese zu Zahlen zu übersetzen,
|
||||
wodurch die tatsächlichen Objekte aus der Datenbank angefragt werden können.
|
||||
|
||||
@ -355,9 +360,9 @@ Generierung dieses PDFs die Bibliotheken \enquote{chillerlan/php-qrcode} und
|
||||
\subsubsection{QR-Code-Generierung}
|
||||
Der QR-Code beinhaltet lediglich die Wein-\ac{UID} anstatt einer vollständigen URL. Hintergrund dessen ist, dass
|
||||
die benötigte URL, um einen Wein einzuscannen, bis auf die Wein-\ac{UID} immer identisch ist.
|
||||
Somit wird redundanz vermieden.
|
||||
Somit wird Redundanz vermieden.
|
||||
Es ist Aufgabe der QR-Code-App, die den Code einscannt, aus der Wein-\ac{UID} eine vollständige URL herzuleiten.
|
||||
Um effizient zu arbeiten, wird der QR-Code zu einem base64-kodiertem Bild gerendert.
|
||||
Um effizient zu arbeiten, wird der QR-Code zu einem base64-kodierten Bild gerendert.
|
||||
Das ist der Standardrückgabewert des QR-Code-\break{}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. Das spart Arbeitszeit,
|
||||
@ -385,6 +390,7 @@ Um dieses PDF-Dokument über die Verbindung an den Nutzer zu übertragen, wird e
|
||||
Über dieses Response-Objekt werden einige Header gesetzt und direkt übertragen. Diese Header sind Content-Type und Content-Length.
|
||||
Abschließend werden als Response-Body die Bytes des generierten PDFs übertragen. Damit ist die Verbindung beendet und das
|
||||
PDF zum Nutzer übertragen.
|
||||
\clearpage
|
||||
|
||||
\subsection{Jahresauswahlproben- und Wein-Detailansichten}
|
||||
Weine und Jahresauswahlproben sollen unter bestimmten Gegebenheiten einsehbar sein.
|
||||
@ -395,7 +401,7 @@ Die Detailansichten für Jahresauswahlproben und Weine benötigen spezielle Auto
|
||||
Diese sind: Jahresauswahlproben sind nur einsichtig, wenn sich das aktuelle Datum innerhalb des
|
||||
Sichtbarkeitszeitraumes der Jahresauswahlprobe befindet.
|
||||
Detailansichten für Weine sind immer für den zugehörigen Teilnehmer einsichtig.
|
||||
Nach Abschluss ihrer Jahresauswahlprobe sind alle ihr angehörigen Weine öffentlich einsichtig.
|
||||
Nach Abschluss einer Jahresauswahlprobe sind alle ihr angehörigen Weine öffentlich einsichtig.
|
||||
Das hat den Hintergrund, dass Jahresauswahlproben Blindverkostungen sind
|
||||
und niemand die Möglichkeit haben sollte, im Voraus Informationen über die teilnehmenden Weine in Erfahrung zu bringen.
|
||||
Die Ergebnisse der Jahresauswahlproben sind öffentlich, also sind es die Weine nach Abschluss einer Jahresauswahlprobe auch.
|
||||
@ -408,11 +414,9 @@ zu anderen Ansichten generiert. Diese ViewHelper übergeben Parameter. Die hierf
|
||||
Ansichten sind beispielsweise Wein-\acp{UID} und Jahresauswahlproben-\acp{UID}. Um Informationen über den angemeldeten Nutzer,
|
||||
wie beispielsweise seiner Teilnehmernummer oder seiner Nutzergruppenzugehörigkeit, zu erlangen, wird sich
|
||||
der Extbase-nativen Domain-Model-FrontendUser-Klasse bedient \cite{bib:typo3-ref-extbase-model-feuser}.
|
||||
\pagebreak
|
||||
|
||||
Mit Abschluss der Phase der Digitization können alle Datenstrukturen im TYPO3-Backend händisch angelegt,
|
||||
eingesehen, gelöscht und bearbeitet werden.
|
||||
|
||||
eingesehen, gelöscht, bearbeitet und im Frontend von Nutzern befüllt werden.
|
||||
|
||||
\section{Digitalization}
|
||||
In der Phase \textit{Digitalization} werden bestehende Geschäftsprozesse so verändert,
|
||||
@ -435,7 +439,7 @@ Wird ein Wein als \enquote{eingegangen} markiert, wird der betroffene Teilnehmer
|
||||
Hierzu wird die FluidEmail-Klasse des TYPO3-Cores herangezogen.
|
||||
Sollte ein Wein bereits als \enquote{eingegangen} markiert sein, wird keine Email verschickt und dem Mitarbeiter kommuniziert,
|
||||
dass keine Änderungen vorgenommen wurden.
|
||||
Abschließend werden im Frontend allgemeine Daten über den Wein angezeigt, damit sich Mitarbeiter sicher sein können,
|
||||
Abschließend werden im Frontend allgemeine Daten zum Wein angezeigt, damit sich Mitarbeiter sicher sein können,
|
||||
den richtigen Wein eingescanned zu haben.
|
||||
|
||||
\subsection{CSV-Export}
|
||||
@ -459,7 +463,7 @@ Das CSV-Dokument wird über die PHP-native Funktion \enquote{fputcsv} generiert.
|
||||
numerisch indizierten Array und schreibt eine darauf basierende CSV-Zeile in eine Datei \cite{bib:php-fputcsv}.
|
||||
Um gut wartbaren PHP-Code zu erzeugen, werden alle CSV-Zeilen in einem zweidimensionalen Array,
|
||||
der das gesamte CSV-Dokument darstellt,
|
||||
durch alphanumerisch indizierte, innere Arrays abgebildet. Somit ist bei jeder Wertzuweisung der zugehörige Spaltenname ersichtlich.
|
||||
durch alphanumerisch indizierte, innere Arrays abgebildet. Somit ist bei jeder Wertzuweisung der zugehörige Spaltenname als Array-Key ersichtlich.
|
||||
Über die nativen PHP-Funktionen \enquote{array\_keys} und \enquote{array\_values} wird dieser zwar gut lesbare,
|
||||
aber mit \enquote{fputcsv} inkompatible
|
||||
Array zu einer Reihe kompatibler Array konvertiert. Hierbei werden durch \enquote{array\_keys} die Kopfzeile und durch
|
||||
@ -471,12 +475,12 @@ Um \ac{WM} weitere Arbeitszeit zu ersparen, wird eine Download-Funktion für CSV
|
||||
angeboten. Das erspart das manuelle Kopieren und Abspeichern von CSV-Zeichenketten durch IT-Fachfremde, reduziert damit die Anzahl
|
||||
an benötigten Übergangsschritten in weitere Prozesse und reduziert somit die Komplexität der Umstellung.
|
||||
Auch im Interesse, Arbeitszeit in der Umsetzung zu sparen,
|
||||
wurde diese Downloadfunktion JavaScript-seitig umgesetzt.
|
||||
wird diese Downloadfunktion javascript-seitig umgesetzt.
|
||||
Dadurch ist der Download in derselben Action, die CSV für das Textarea-Feld generiert, implementiert.
|
||||
Somit muss weder abstrahiert werden, noch ein weiterer CSV-Exporter gebaut werden.
|
||||
Hierfür wird ein EventHandler auf den Download-Button angewandt, der bei Betätigung ein vestecktes
|
||||
\enquote{a}-Element erstellt, über das HTML-Attribut \enquote{download} des \enquote{a}-Elementes den Download-Dateinamen
|
||||
festlegt und als \enquote{href}-HTML-Attribut
|
||||
eine Blob-URL zuweist. Diese Blob-URL wird über ein Blob-Objekt generiert.
|
||||
Wird nun der Download-Button gedrückt, wird JavaScript-seitig eine Datei erzeugt und gespeichert
|
||||
Wird nun der Download-Button gedrückt, wird javascript-seitig eine Datei erzeugt und gespeichert
|
||||
\cite{bib:tutorialspoint-js-save-text}.
|
||||
|
@ -1,6 +1,6 @@
|
||||
\chapter{Stand der Forschung}
|
||||
\label{chap:stand-der-forschung}
|
||||
Der Stand der Forschung beleuchtet verschiedene Entwicklunsmethodiken zur Digitalisierung und zur digitalen Transformation.
|
||||
Der Stand der Forschung beleuchtet verschiedene Entwicklunsmethodiken zur Digitalisierung.
|
||||
|
||||
\section{Modell nach Parviainen et al.}
|
||||
\quotecite{The importance of digitalization is becoming understood,
|
||||
@ -65,7 +65,7 @@ werden \cite{bib:Parviainen_Tihinen_Kaariainen_Teppola_2022}.
|
||||
Nach Verhoef et al. lässt sich der hier sogenannte \enquote{Prozess der Digitalisierung} in drei Phasen unterteilen.
|
||||
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,
|
||||
Die Phase \textit{Digitization} befasst sich mit der Umwandlung analoger Datenstrukturen und Modelle in digitale Datenmodelle,
|
||||
sodass diese digital, in Form von Nullen und Einsen, gespeichert und elektronisch\break weiterverarbeitet werden können
|
||||
\cite{bib:dougherty}\break\cite{bib:loebbecke}.
|
||||
\quotecite{Examples concern the use of digital forms in ordering processes, the use of digital surveys, or the use digital applications for internal financial declarations.} \cite{bib:verhoef}.
|
||||
@ -76,11 +76,11 @@ Ergründungen neuer Geschäftsmodelle mit sich bringen könnte \cite{bib:pagani}
|
||||
|
||||
\section{Abwägung in Bezug auf die Problemstellung}
|
||||
In Bezug auf die hier betrachteten Methodiken ist es wichtig zu erwähnen, dass der betrachtete Kontext
|
||||
lediglich die Digitalisierungs \textbf{eines} Geschäftsprozesses behandelt.
|
||||
lediglich die Digitalisierung \textbf{eines} Geschäftsprozesses behandelt.
|
||||
Diese Ausarbeitung befasst sich nicht
|
||||
mit firmenweiten Veränderungen, wie sie von den nahegelegten Modellen abgedeckt ist.
|
||||
Daher sind geringfügige Anpassungen der Methodiken unabdinglich.
|
||||
Des Weiteren ist Resourcenintensivität ein relevanter Gesichtspunkt dieser Abwägung, da eine solche Digitalisierung
|
||||
Des Weiteren ist Ressourcenintensität ein relevanter Gesichtspunkt dieser Abwägung, da eine solche Digitalisierung
|
||||
effizient und profitabel sein soll.
|
||||
|
||||
\subsection{Parviainen et al.}
|
||||
|
@ -1,7 +1,7 @@
|
||||
\chapter{Stand der Technik}
|
||||
\label{chap:stand-der-technik}
|
||||
Der Stand der Technik bezieht sich auf bestehende, praktische Umsetzungen der erforderlichen Technologien.
|
||||
Im Wesentlichen gibt es drei Arten von Technologien, die untersucht werden müssen: Die bestehende Website von \ac{WM},
|
||||
Im Wesentlichen gibt es drei Arten von Technologien, die untersucht werden müssen: Die bestehende Webseite von \ac{WM},
|
||||
Bibliotheken zur Erzeugung von QR-Codes und Bibliotheken zur Erzeugung von PDF-Dateien.
|
||||
|
||||
\section{Die bestehende Webseite}
|
||||
@ -46,7 +46,7 @@ Issues scheinen ignoriert zu werden. \enquote{Kjua} ist MIT-lizensiert \cite{bib
|
||||
serverseitig, als Kommandozeilenwerkzeug, sowohl auch browserseitig an. Die Readme-Datei ist umfangreich, reich an Beispielen
|
||||
und detailreichen Erklärungen. Der letzte Commit ist zu diesem Zeitpunkt knapp älter als ein halbes Jahr. Somit macht das
|
||||
Projekt einen moderat gepflegten Eindruck. Die Readme-Datei verweist auf Unit-Tests bei Travis, jedoch lief die letzte Pipeline
|
||||
vor etwa zwei Jahren durch, Februar 2021 und schlug fehl. Einige Pull-Requests und Issues werden seit Jahren ignoriert
|
||||
vor etwa zwei Jahren, Februar 2021, durch und schlug fehl. Einige Pull-Requests und Issues werden seit Jahren ignoriert
|
||||
\cite{bib:soldair-node-qrcode}.
|
||||
Die Bibliothek wurde 74 Millionen mal heruntergeladen und mit 6.308 Sternen markiert.
|
||||
\enquote{Soldair/node-qrcode} ist MIT-lizensiert \cite{bib:npmjs-soldair-node-qrcode}.
|
||||
@ -61,14 +61,14 @@ Insgesamt erfolgten bis dato 808 Commits von 6 Entwicklern. Das Projekt verfügt
|
||||
die 90\% der Zeilen der Codebase abdecken. Rochko übernahm Teile der Codebase aus
|
||||
dem Java-Projekt \enquote{ZXing} und übersetzte diese zu PHP.
|
||||
Es gibt zu diesem Zeitpunkt keine unbeantworteten Issues oder Pull-Requests.
|
||||
\enquote{Chillerlan/php-qrcode} basiert auf einer angepassten Version von \textit{kazuhikoarase/qrcode-generator}.
|
||||
\enquote{Chillerlan/php-qrcode} basiert auf einer angepassten Version von \enquote{kazuhikoarase/qrcode-generator}.
|
||||
Einzig auffällig sind die Commitnachrichten, die zuteils nur aus einem Emoji bestehen.
|
||||
\enquote{Chillerlan/php-qrcode} wurde von 1.212 Github-Nutzern mit einem Stern markiert.
|
||||
Die Bibliothek ist MIT-\break{}lizensiert
|
||||
\cite{bib:chillerlan-php-qrcode}.
|
||||
|
||||
\subsubsection*{Kreativekorp/barcode}
|
||||
\enquote{kreativekorp/barcode} ist eine PHP-Bibliothek zur Generierung von QR-Codes, bereitgestellt von
|
||||
\enquote{Kreativekorp/barcode} ist eine PHP-Bibliothek zur Generierung von QR-Codes, bereitgestellt von
|
||||
\enquote{Kreative Software}, R.G. Bettencourt.
|
||||
Diese Implementation umfasst etablierte Barcode-Formate und unterstützt eine Vielzahl an Anpassungsmöglichkeiten.
|
||||
Das Projekt wurde bis zum heutigen Tag 189 mal mit Sternen markiert \cite{bib:kreativkorp-barcode}.
|
||||
@ -84,7 +84,7 @@ Die Bibliothek verwendet die MIT-Lizenz.
|
||||
\enquote{Bacon/BaconQrCode} ist eine PHP-Bibliothek zur Generierung von QR-Codes, bereitgestellt von Ben Scholzen, hinter
|
||||
der Github-Organisation \enquote{Bacon}, dessen einziges Mitglied Scholzen darstellt. Verlinkt ist eine Homepage,
|
||||
die zu einer Nginx-\enquote{Hello World}-Seite führt. Begleitet wird \enquote{BaconQrCode} von etlichen weiteren \enquote{Bacon-Projekten}
|
||||
wie Beispielsweise \enquote{BaconPdf}, \textit{BaconStringUtils} und \textit{BaconUser} um nur einige zu nennen.
|
||||
wie Beispielsweise \enquote{BaconPdf}, \enquote{BaconStringUtils} und \enquote{BaconUser} um nur einige zu nennen.
|
||||
Insgesamt machen die stichprobenartig betrachteten Projekte einen desolaten Eindruck mit zuteils aktuellesten Commits
|
||||
von vor zehn Jahren. \enquote{BaconQrCode} stellt das beliebteste und gepflegteste Projekt von Scholzen mit 1.508 Sterne-Markierungen und
|
||||
einem aktuellsten Commit von vor zwei Monaten dar. \enquote{BaconQrCode} fällt mit siebzehn Entwicklern auf, die jeweils zumindest
|
||||
@ -109,7 +109,7 @@ Hierfür werden die zuvor vorgestellten Bibliotheken zur Erstellung von QR-Codes
|
||||
\begin{description}
|
||||
\item [Funktionialität] \hfill \\
|
||||
Der Umfang, der unterstützten Funktionen, in Annahme dessen, dass die Bibliothek
|
||||
syntaktisch und pragmatisch korrekt ist\\\cite{bib:heinemann-vorlesung-re}.
|
||||
syntaktisch und semantisch korrekt ist\\\cite{bib:heinemann-vorlesung-re}.
|
||||
|
||||
\item [Gepflegtheit] \hfill \\
|
||||
Das Ausmaß, in dem das Projekt aktiv gepflegt wird und ordnungsgemäß entwickelt zu sein scheint.
|
||||
@ -203,7 +203,7 @@ bereitgestellt \cite{bib:chillerlan-php-qrcode-composerjson} und weist eine ähn
|
||||
\subsubsection*{Kreativekorp/barcode}
|
||||
Kreativekorp beeindruckt in der Readme-Datei durch Nutzungsbeispiele und Dokumentation,
|
||||
sowie einer Vielzahl unterstützter Barcode-Formate, darunter auch QR-Codes und einiger improvisierter Tests.
|
||||
In Anbetracht dessen, dass die Bibliothek de-facto sechseinhalb Jahre alt ist und seit vier Jahren nicht mehr
|
||||
In Anbetracht dessen, dass die Bibliothek de facto sechseinhalb Jahre alt ist und seit vier Jahren nicht mehr
|
||||
angepasst wurde, wird eine geringe Wertung von drei Punkten in \enquote{Gepflegtheit} vergeben.
|
||||
Null Punkte in \enquote{Workflow-Eignung} rechtfertigen sich durch die Abwesenheit jeglicher
|
||||
Unterstützung für Paketmanager, wodurch eine saubere Verwendung in dem Brown-Field-Projekt
|
||||
@ -228,10 +228,11 @@ Es werden Rasterbilder und verschiedene Vektorformate als Renderziel unterstütz
|
||||
die andere Bibliotheken bereitstellen, werden lediglich fünf von zehn Punkten in \enquote{Funktionalität} vergeben.
|
||||
Die Projektgepflegtheit ist inkonsistent. Manche Stellen, beispielsweise die Mitwirkenden, Alter des neuesten Commits, Tests
|
||||
und Nutzerzahlen machen einen guten Eindruck, während Punkte wie die Dokumentation, die Organisationswebseite und andere
|
||||
Projekte Sorgen begründen. Weil der Programmcode an sich gut gepflegt aussieht und große Downloadzahlen von
|
||||
Projekte von Scholzen Sorgen begründen. Weil der Programmcode an sich gut gepflegt aussieht und große Downloadzahlen von
|
||||
häufiger Verwendung sprechen, werden für die \enquote{Gepflegtheit} acht Punkte vergeben.
|
||||
Da es sich hierbei um eine PHP-Bibliothek handelt, die über Composer in PHP- $7.x$ und $8.x$ Projekte geladen werden kann
|
||||
und das Projekt eine API bereitstellt, ist die technische Workflow-Eignung gut. Die BSD-2-Clause-Lizenz verkompliziert eine Integration,
|
||||
und das Projekt eine API bereitstellt, ist die technische Workflow-Eignung gut.
|
||||
Die BSD-2-Clause-Lizenz verkompliziert eine Integration,
|
||||
da somit eine Copyright-Notiz an Nutzer gezeigt werden müsste \cite{bib:opensource-license-bsd-2}.
|
||||
Dadurch werden drei Punkte einer vollkommenen Workflow-Eignung abgezogen, wodurch sieben Punkte vergeben werden.
|
||||
\begin{table}[htbp]
|
||||
@ -253,7 +254,7 @@ Somit wird \enquote{chillerlan/php-qrcode} als QR-Code Technologie in der Lösun
|
||||
|
||||
\begin{table}[htbp]
|
||||
\centering
|
||||
\begin{tabular}{|l||l|l||l|l|}
|
||||
\begin{tabular}{|l|l|l|l|l|}
|
||||
\hline
|
||||
\textbf{Bibliothek} & \textbf{Funkt.} & \textbf{Gepflegtht.} & \textbf{WF.-Eignung} & \textbf{$\Sigma$}\\
|
||||
\hline
|
||||
|
@ -10,7 +10,7 @@
|
||||
\newcommand{\cfgDocClassification}{Abschlussarbeit}
|
||||
|
||||
% Document version
|
||||
\newcommand{\cfgDocVersion}{2.5.3}
|
||||
\newcommand{\cfgDocVersion}{2.6}
|
||||
|
||||
% Last modification date
|
||||
\newcommand{\cfgDateLastModification}{30. März 2023}
|
||||
|
@ -5,4 +5,4 @@
|
||||
\nocite{*} % Show all references, even unused ones
|
||||
|
||||
\bibliography{dexes/literature}
|
||||
\bibliographystyle{apalike}
|
||||
\bibliographystyle{apalike-german}
|
||||
|
@ -1 +1 @@
|
||||
<mxfile host="Electron" modified="2023-03-27T15:38:18.711Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="PAhar_P2aHQsZCkSiz7f" version="20.8.16" type="device"><diagram name="Seite-1" id="c5J236jw9uxX1O-q0mKY">7VtZc+I4EP41VO0+sIVtMPBIzs0mmZ2ZTM2xb8JubAXZYmURIL9+W7YcX1wzQOxs5SVYLdmS+utPfdhpWefB8lqQmX/PXWAts+MuW9ZFyzQNY9jFHyVZJZKBqQWeoK4elAke6DNoYUdL59SFqDBQcs4knRWFDg9DcGRBRoTgi+KwCWfFWWfEg4rgwSGsKv1GXemnu+hn8j+Ben46s2EPk56ApIP1TiKfuHyRE1mXLetccC6Tq2B5DkwpL9VLct/Vht6XhQkI5T43nNk3i79XZ/JzYH26vfp+c3cRjtqpmiO5SncMLipAN7mQPvd4SNhlJj0TfB66oB7bwVY25o7zGQoNFD6ClCuNJplLjiJfBkz34orF6ru+P278UI0/emnzYpnvvFjp1oSHUj/USHrdkcIY22PGnWkiuqKM6RuqOtJqi/hcOLBNMdrWiPBAbhlnJuOU0nITaASugQeAG8ABAhiR9KloVUQbp/cyLsMPLzSEPwNn8twnwuZ6plsFlTJHYC5uxOx8AxriDw8ZDVUHCSsWUMR34VMJDzMSq2uBLC9iOUFtn3PGRXyv5RIYTByUR1LwKeR6bGcA40kJRXMbSE8gJCy3qjXttbQd61PG7Or2IuOskcr8HF/tzqmQMCpqfSdWjjA7iWU1ilhmhViaRzRSpKJBy7QZbudsLAqg2//O1fkeK7gdxRoe4QDDnC1jLab9eOWp34dVJCFQRkpDCYIBSt8+PS2zcfTs10vPjJE/CoSsnZ5Hp52+9SNHg84swuwULcLqlpBOzgd9VwY2bpuscsNmakC0eZ7eoDRPOUjata7ieLxIVpBZ3otOft0YrU2Hy4IKNyFahPjC/+Eo6BlNOwrShOTdU5cU0983BG5WDNyvsOlGcen+oX25dOLsdAHCBSX7i/gCIjKPFsRnM8HHsdSDGSPxoYAYq9mU8AuNHB/jZZsEilbJ3yum7DNSu5hPUElA2aEcPb3z7b0m4+6nI/nPdYd9+nzm0hFnxuNHu22+2aTTPC3jBnsybtgowg0qhLugKrO8xF2MQxpFkOecYtPWUHnMcaRoO4k/GsVPFr+123n577GaO/tG1emM0UxluweE548QgsgdJu07jP8hoWMAYirTmVCRyWTpAhp2KJQTZrt2NzzcYUUs0fRRsiwdV83mY0afKSqtcfiUD+368TGrtaUXNPYCo7uDnGr8QQ+6BnTRrXOrNepOZITu/Bki5ZtD4vg+6LOk6vJzlE2WUFwWiscbaYxoyqItFIPpkIdQiry1iGDoEGLTAZXno0DZBnUIG+mOgLpu7PjWGV/RPPP21z2N/Rm9qv1Zxhr7s04WNNRSUHtF55+G0Tu9/+DY3v8ombX9k5m1/RqZdarTilfZfAwcx7WQsQc+YRIOra6fPgOvPx94L5VvOPKqB8Lacd260oFtq85R7iuIiKj6FZ0iJK20rnUUvj1xFdGrehnm7Ip59zxSSf5RHo5P9TCoIGGIlvb2a2/loN+qnfnWO/O3MXon8+1GMb9bYX7lJVnn5QUXYXHdDAk25UEQlwayJPrNU60cP9dPtWG9VGvCC69tFNpJtX6jqGZvopqOP2PPxYgX1zZeu9yWlM0DGqfzuJK4ZHYLYRjOkemipd9o+QcHx01gejmcrp/phv1WqX68DHsbhXdS3WhWQF19oaW47pI4ucwK64lDPX/4qla+nCGER6hsNpFh3foZ1qlA8gHwysTHdVzqUam+H8Vgx/EFlapsXR8IWymzPwj9Uvlm7Xv7zhoQyh92HA+EzQXpvUvJmzzYHXjqg4t41Ibq8NErwQwmsnF14ArsZhX24RrUjZOhXi0vfKCOr+D+AjT+9pxCFAcZo3lExBionGMwdCAFX4FQw9oJ1as3bvj1bPzEcYOxJh3f9ulJQ+IGo5qPY3TQXhs80NInMjQ4UgBx+irWKevX2Mz+QSN5KZH9m4t1+R8=</diagram></mxfile>
|
||||
<mxfile host="Electron" modified="2023-03-30T16:24:11.739Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="uJLDwojdT_EOwQ1EVR7a" version="20.8.16" type="device"><diagram name="Seite-1" id="c5J236jw9uxX1O-q0mKY">7VtZc6M4EP41rtp98BaHg51H59xsktmZ8dQc+yZDGxQL5BVybOfXbwtEuHzNxA5kKy8xaglJ9Nef+oB07PNweS3ILLjnHrCOZXjLjn3Rsaye3cO/SrBKBbZhpAJfUC8VmblgRJ9AC7Nhc+pBXBooOWeSzspCl0cRuLIkI0LwRXnYhLPyqjPiQ00wcgmrS79RTwapdGD1c/mfQP0gW9l0TtOekGSD9ZPEAfH4oiCyLzv2ueBcplfh8hyY0l2ml/S+qw29zxsTEMl9bjhzbhZ/r87k59D+dHv1/ebuIhp2MzXHcpU9MXioAN3kQgbc5xFhl7n0TPB55IGa1sBWPuaO8xkKTRQ+gJQrjSaZS46iQIZM9+KOxeq7vj9p/FCNP06y5sWy2Hmx0q0Jj6Se1Ex7vaHCGNtjxt1pKrqijOkb6jrSaov5XLiwTTHa1ojwQW4ZZ6XjlNIKC2gEroGHgA+AAwQwIulj2aqINk7/eVyOH15oCH8GznTeR8LmeqVbBZUyR2AePohlfAMa4Q+PGI1UB4lqFlDGdxFQCaMZSdS1QJKXsZygts854yK51/YIDCYuymMp+BQKPY47gPGkgqK1DaRHEBKWW9Wa9drajvUpY/V0e5Fz1sxkQYGvjnEsJMyaWt+JVSDMTmLZrSKWVSOW5hGNFalo2LEcho9zNhYl0J1/5+p8TxTcjRMND3GAac2WiRazfrzy1e9oFUsIlZHSSIJggNK3T0/bah09+83SM2fkjxIhG6fnwWmnb/3I0aBzi7CMskXYvQrS6fmg78rBxscmq8KwmRoQb17nZFBZpxok7dpXeTxepDvILe9ZJ79ujPamw2VBhZcSLUZ84f9wFJyYbTsKrN67p16rmP6+IXC7YuB+jU03ikv3o+7l0k2S0wUID5TsLxIIiMk8XpCAzQQfJ1IfZowkhwJirFZTwi80dgOMlx0SKlqlf6+Yss9YPcV8gkoCyl7K0eM735PXZNz9dCj/uTbYp89nHh1yZj58dLrWm006reMybrAn405bRbhBjXAXVGWWl/gU44jGMRQ5p9i0NVQecxwpum7qj4bJzOK3brco/z1Rs7FvVJ2tGM9UtvuC8PwBIhCFw6R7h/E/pHQMQUxlthIqMl0s20DLDoVqwuw07oZPd1gRSzV9kCxLx1Wz+ZjRJ4pKax0+1UO7eXysem3pGY29wOjtIKca/6KJrgFddOfc7gx7ExmjO3+CWPnmiLhBAPosqbv8AmXTLZS3heLxRhojmrJsC+VgOuIRVCJvLSIYOkTYdEHl+ShQtkFdwoa6I6Selzi+dcZXNs+i/fWOY3/mSd3+bHON/dlHCxoaKai9ovPPwuid3n9waO9/kMza+cnM2nmNzDrTac2rbD4GDuNayNiHgDAJL62uHz8Dbz4feC+Vbzjy6gfC2nG9ptKBbbsuUO4riJio+hWdIiSdrK51EL49chXRq3oZ5uyKefc8Vkn+QSbHWX0MKkgUoaW9/dpbNei3G2e+/c78bYzeyXynVczv1Zhfe0lmPL/gIiypmyHBpjwMk9JAnkS/eapV4+fmqXbaLNXa8MJrG4V2Uq3fKqo5m6im48/EczHiJ7WN1y63pWXzkCbpPO4kKZndQhRFc2S66Og3WsGLg+M2ML0aTjfPdNN5q1Q/XIa9jcI7qW62K6Cuv9BSXPdIklzmhfXUoZ6PvqqdL2cI4QEqm21kWK95hhk1SD4AXlk4neFRn0r1/SgGO24gqFRl6+ZA2EqZ/UHoV8o3a9/bG2tAqH7YcTgQNhek9y4lb/Jgd+CrDy6SURuqwwevBDOYyNbVgWuwW3XYT9egbh4N9Xp54QN1AwX3F6DJp+cU4iTIGM5jIsZA5TzyX8jAV+DTaeN8Omk2bPj1ZPzIYYO5Jhvf9uVJS8IGs56OY3DQXRs70MoXMjQ8UPxw/CLWMcvX2Mz/PyN9J5H/k4t9+R8=</diagram></mxfile>
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
@ -1 +1 @@
|
||||
<mxfile host="Electron" modified="2023-03-26T17:28:06.834Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="hIg8A2igoXO-HTw_ShVI" version="20.8.16" type="device"><diagram id="k7iwBMskrYiuqxr37yBD" name="Seite-1">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</diagram></mxfile>
|
||||
<mxfile host="Electron" modified="2023-03-30T16:29:30.530Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="SpCmjzHV4CKJhuAyYgqq" version="20.8.16" type="device"><diagram id="k7iwBMskrYiuqxr37yBD" name="Seite-1">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</diagram></mxfile>
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
@ -1 +1 @@
|
||||
<mxfile host="Electron" modified="2023-03-29T11:24:04.410Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="P_FsIsnh0ajq8UttcqSZ" version="20.8.16" type="device"><diagram name="Seite-1" id="4AvssoyQ3F2APBzfr0LI">7VpZc+I4EP41VO0+ZMoHGHgkENip2t2wm52ZzaOwG1uJbFGyOH/9SLZ8YQ4zxBxT85JY7ZYld39fd6tNw+z7qxFDM+8v6gBpGJqzapiDhmHoercp/knJOpZ0DCVwGXaUUiZ4wRtQQk1J59iBsKDIKSUcz4pCmwYB2LwgQ4zRZVFtSklx1RlyoSR4sREpS79hh3vJW7Qz+R+AXS9ZWbe68R0fJcrqTUIPOXSZE5lPDbPPKOXxlb/qA5HGS+wSzxvuuZtujEHAq0z4520UfP7yL3rrLMzuV2c0GiwmD0ZLbY6vkzcGRxhADSnjHnVpgMhTJn1kdB44IB+riVGm8yelMyHUhfANOF8rb6I5p0LkcZ+ou2LHbP2/nP+plQxf1eOiwWBVGK3VqPzKygohnTMbDr2ngg5iLvADenonVpRGyK2gLDoC6oPYkFBgQBDHiyJKkAKbm+pl/hAXyiWnuCd+7gKRuVpp7KEQhEiYsSf+DbCLOd6IrdCg5MlwiX2CAumypYc5vMxQZKSloGrRIXsNuwDGYXXQEuqumeB8vTVeZrQxNCXzcpQx2lpN1tPNK4PbOBPdhzBxFPJmVcgbHw35aGqPMbTOKcwoDniYe/JYCjL8WEX46NvR7CR1cRGvn4EnfZEfx5NZZqOg1zxwG3L1YURH5DLk+xCx0yLC7o8TJq5cefU8eYN3HpuRBiAI29+nJPgBQWh7aMr36P095xtg00bfbDz2PRbvYiGjgDZAYpIvUzGRk7Xf/nsdP5sPj8h+h8D5XTzuG0wehpT5cyLQViJJkQInh46DkaxyPNkKJ81yNNGtHdFE12uLJtZ9p8qzgkkSJI5Hk9ZNJdBk3znODgGciaCCkI6f7wL7ersi+M3asN+8BvZrwvAHJ7pSatKbW+5rbbklJpGalXnm1IxZWsc6nDKP6NeTM5N4kCPgFz8EvokTVj5VicyGfMmw+O995SdjR7l7YY627zs/VT3KtSpmog9n+1neKdOgF0wpc0BWbqEo5FAYRpS4pTNct+IRTu/WBeruVTC9wjwHaTF6zd3JAC0H6zy666vTkjbNMXJYFcnRvilyWCVyfA44sAWGpeykYX65Wi3had3nlPrSgFay0y/KHKJMuyJlbqsz2C5RZsiQC5OoH2C50blfNQeYuHzh6B08SkS+uQsa7cg8l6VRp2Tf8ZRg2xPlqgdTfhdG1K8fjHaYUTWwjVwDG5GbbGFbO+y3u4XdrM2A1ymAam5hJ7A4/tlGqxicjXrO9j9hEzsx6Q93sWVS6fYnwCYMB248T36iNbQRhLYnb/eaUx7OGN1AGEJ4kViZRpq6C7dOXVRPD8B3en4/k+lGVaY3b6oOS/Z91Qbz2eC/fqVgXOVbbV0ovniL2djyS10tZvPEFrN5iYzWLFEwqSpDDCzJUGxvhroTjl79TGSU+zRpeZBUB2lzP5ylVUWAhNFLdcRXYB6FqWSLRBAin6Lv3Krd0wtmcUdUnmTjqWLP6TIllwmb8qJfQs7oO/QpoUxIAhodIqaYkC2RgIkbiKENsuckBNJD2Eakp2742HHIvhNIESplLJx8CEndty56M+d1s/MxXhfD7OdnMRuzH/GZT98B</diagram></mxfile>
|
||||
<mxfile host="Electron" modified="2023-03-30T16:13:26.473Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="NBkm3Zraic1t1MOXaLR9" version="20.8.16" type="device"><diagram name="Seite-1" id="4AvssoyQ3F2APBzfr0LI">7VpZc9s2EP41mmkfnOGh81GWLDUzba3WTVI/QuSKhA0CGhA6f30AEbxEHVRk6sjkxSaWCwLc/b7dxVI1uxcshxxN/b+YC6RmGe6yZvdrlmUa7Yb8pySrSNKqdyKBx7GrlVLBC15DPFNLZ9iFMKcoGCMCT/NCh1EKjsjJEOdskVebMJJfdYo8KAheHESK0m/YFX4kbVutVP4HYM+PVzab+v0CFCvrNwl95LJFRmQ/1eweZ0xEV8GyB0QZL7ZLNG+w526yMQ5UlJnwz9uQfv7yL3prz+3OV3c47M/HD5Z2TyhW8RuDKw2gh4wLn3mMIvKUSh85m1EX1GMNOUp1/mRsKoWmFL6BECvtTTQTTIp8ERB9V+6Yr/5X8z814uGrftxm0F/mRis9Kr6ytkLIZtyBQ++poYO4B+KAntmOFJURMitoiw6BBSA3JBU4ECTwPI8SpMHmJXqpP+SFdskp7omeO0dkplca+SgEKZJm7Mp/fexhgddyK4wWPBkucEAQVS5b+FjAyxRtjLSQVM07ZK9h58AFLA9aQt+1Y5yvtsaLlDaWoWV+hjJWy6jIeqZ9ZXBbZ6L7ECaOQt4uC3nroyG/mdrlHK0yClOGqQgzTx4pQYqfZh4+5nY0O0ldXkTrp+BJXuTH8WQX2SjpNaNeTa0+2NAReRwFAWzY2STS7o9jLq88dfU8foN3EZmRUZCE7e1TkvwAGjo+mog9en/PxBr4pNaza489n0e7mKsoYPSRnBSoVEzUZOO3/15Hz/bDI3Legbq/y8d9g/HDgPFgRiTaCiTJU+Dk0HEwkpWOJ1vhpF6MJmZzRzQxzcqiSfO+U+VZwSQOEsejSeOmEmi87wxnBwDuWFJBSkfPd4F9s1US/HZl2K9fA/sVYfiDE10hNZn1Lfc1ttwSkUjPSj1zasYsrNM8nDKP6FeTM+N4kCHglyAEsY4SVjZVycyGAsWw6O995SdrR7l7YY627js/lT3KNUpmog9n+1neKdKgSyeMu6Aqt1AWcigMN5S4pTNcp+QRzuxUBerOVTC9xCIDaTl6zdxJAa0Gqyy6q6vT4jbNMXI0S5KjdVPkaBbI8ZkK4HMMC9VJw+JytVrM06rPKdWlAaNgp1+UOUSZVknK3FZnsFWgzIAjD8bM2xz5dV+Ay8sXgd7BZ0Smmrtg0I6kc1kGtQumHU0IdnxZqfowEXdhRPP6cWiHGXXv2sr0rhG5ye51c4f9dnev65UZ8Dq1T8Xd6xgWx7/YGCXjslXNsf4n7F/HJv3hBrZKKp3eGPiYY+pF89TXWcsYQuj46na3PhHhlLM1hCGEF4mVSaSpumZrV0X15Ox7p0f3M5lulWV6/aZKsHjfV+0tnw3+61cK1lU+01aF4ot3l60tv1TVXbZP7C7bl8ho9QIF46oyxMDjDMX3Zqg74ejVz0RWsUWTlAdxdZD09cNpUlVQJI1eqCO+AvcZTBRbFIIQ+bT5xK07PV06jZqh6iQbTZV7TpYpuEzaVOT9EgrO3qHHCONSQtnmEDHBhGyJJEw8KocOqHaTFCgPYQeRrr4RYNcl+04geagUsXDyISRx3yrvzYzX7fbHeF0O01+eRWxMf79nP30H</diagram></mxfile>
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
@ -1 +1 @@
|
||||
<mxfile host="Electron" modified="2023-03-27T14:42:48.179Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="hAVuMy2DVt5H_X7tBGfx" version="20.8.16" type="device"><diagram name="Seite-1" id="OQF_a6zVYjKttAf1AJ-S">5Vnbkto4EP0aHr0FNhj8CAyQzUIqW2Qzl5eUsBtbQUisLHOZr1/Zlm/YMFADA8lOFTV0q2W1u0+flkTN6C+3I45W3oQ5QGp63dnWjIearjcaVlP+CzU7pbEsI9a4HDtKlymm+BWUsq60AXbALxgKxojAq6LSZpSCLQo6xDnbFM3mjBRXXSEXSoqpjUhZ+4gd4cXajt7O9J8Au16ycsO04pElSozVm/gectgmpzIGNaPPGRPxt+W2DySMXhKXeN7wwGjqGAcqTpkwHfP2aLL6PEXTPnTWf9HH0UAzVDZ8sUveGBwZACUyLjzmMorIINP2OAuoA+Fj61LKbMaMraSyIZU/QYidyiYKBJMqTyyJGpUe892Tmh8Jz6HwRysRH7b5wYddKjndMKdSnBFmL2LVEBOiDMoxUWHyWcBtOBIIXWELcRfEsYCpbIZRyq2gQj4CtgTpsTTgQJDA6yKMkEKjm9qpqfK10C5nsGKYCj/35K+hQhqoytI7yo+krvRWMfnn2csvsQeJlHuVTBUB6gxwqZiuEQlUGL4BJhS8JfCwQmp9o9YzbU9ATTeJjHpvJvWmG357BEzDeNAlEAdoCaUZBkNAbTwsYLpCUYo3koqKeJszKhQYGzKiPZcg31eQ8QVni7S2Q+u0UMPhuQRXnxHGo2UNiP7SabkRwzQswzmGwTVwAdujoElG68VsWUrcZAzUMJXOy7FPu34YZrlUn5/JZimTX6L8vJM6cimqIIxKYsmnsnEKJUhJ2XfezjZBMyA9ZC/cyNEkvZRReAdtHUTEmySSVKvK63mckpFAYsLmc1+y21GiaBWhl66dPCNmSDVrD1YX4AyzhDTFBNgXZZZA1IWIIMT/myAaH8kQn+joh2i3vljaZObMF4tvL8FIa5QScMf7iHy6r7yvSPYLb24smqdywskk8C7GT/zOFWLYri1zPpdcqNc/I4+DjwJ/gzyy4mwGVBvLGgWKqI9lT39fQV6gRtKueYMm+mf/weptWQ+9THotZzTdju1OUiL5iCpCc/A6YbSU4wrBM/8NWKRNW5Nmx8zSDVelWGBE4tnKMnneP0/akEhk63VNfkIujbdUAXVzq8n3me17IHUVfl3R1dA5gqT9hPnRMXIgZQxz4NJZfwN88QqBe8zlrDEceomDmKyf0CRyTK92BEWSV8oLYHcPuppexq5ehV3zWvR+22NiKtwfvVun0rt5X/RulchoGB3H+oSAIgqtXFYPSBK8j8Rr6FPg35zjm/vH2pvvg/RbFMoHAj7Zprx9UWLdFeCbld1XdSB1xOimlw3JgDZB/qLidmLNaOUeqKIRRXcc4abpnXcYV6iWmxeL9bsXi3lisdxXc2iWD+FDxpcBQeG1HZr5toftxR0Aen+f9KH0H4jJoLv7/vLifG3Y5OfL33zcqtjjT2Xy5WFoOKDOKqCLy11UdH6Be4rmfoLK+WlXpEe/VnrKN9LdhcDsctfLZyblAiFutW8W4hmd69tdf/r8nW9MqztePj3/qKiAMbiSUCE6AO6FWb6jKMay8kRVcfJCBLtUiraMHPCwJcuIYRuRrhpYYseJGkZV8opNZL8jXAH4WkVaWpdJixSzHxHja9jst1hj8B8=</diagram></mxfile>
|
||||
<mxfile host="Electron" modified="2023-03-30T16:34:31.425Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="TQ0JShpZqPYf8JSQ05lG" version="20.8.16" type="device"><diagram name="Seite-1" id="OQF_a6zVYjKttAf1AJ-S">5Vnbkto4EP0aHr2FbTD4kXs2C6lskc3M8JIStrAVhMTKMpf5+pVs+YYNAzUwkOxUUYNaLUvuc/q0JGpmb7UbMbD2J9SFuGbU3V3N7NcMQ9fthvgnLXtlsW0ztngMucqWGaboFSpjXVlD5MKg4MgpxRyti0aHEgIdXrABxui26LaguDjrGniwZJg6AJetT8jlfmxtG63M/gkiz09m1i077lmBxFm9SeADl25zJnNQM3uMUh5/W+16EMvoJXGJxw2P9KYLY5DwcwZMx6w1mqw/T8G0B9ubv8jTaKCZCo2A75M3hq4IgGpSxn3qUQLwILN2GQ2JC+Vj66KV+YwpXQujLow/Ied7hSYIORUmn6+w6hUrZvtnNT5qvMjGH82k2d/lO/v7tOV2JKaiOcfUWcamIcJYOZRjosIU0JA58EQgDMUtwDzITwVMoSmjlJtBhXwE6QqKFQsHBjHgaFOkEVBs9FI/NVS8FtjnHNYUER7knvxVGoSDyiyjrdaR5JXRLIJ/mb/4Eq8gaeVeJTNFhLqAXCqmG4BDFYZvEGEC/RVkMkNqPbPWtRyfw5phYRH17lzYLU9+e4KIyHiQFcQuJCWWZhyUhNr6iMPpGkQQb4UUFfm2oIQrMuoiol0PgyBQlAk4o8s0t6V3mqiyeyHI1aOYsmhaE0Z/6bBcj2mZtume4uAGMg53J0mT9NaLaNmquc0USLeUzc+pT6t+nGY5qC9HslFC8kuEzzulIwdRhWBUCkseSv0cSRAt5d9+G20M5hB3gbP0ooUm8BJK4Dtk6ygj3hSRJFsVrpdpSiYCiQtdLAKhbieFolmkXjp38oxYIdWoA1pdQTOsEtOUEqCAl1UCEA9GAsH/3wKhf6RCfCKjH7zV/GJrk7m7WC6/zcKRppcAeOB9RB7uG+8rkv3CmxuLxrmacLYIvEvxk3XnElGWa9taLIQWGvXPwGcwAGGwBT5eMzqHRBuLHIUEkACJmv6+hLxCjqRV8w5F9M9e3+7uaBfMJt2mO5ruxk47SZF8RJWguWiTKFqqcYXgWf+GNLKmpUlzYmXpyFkJ4gjgeLTyTJ73z7M2xILZRl0TH6ml8ZYqJF40OJ5NvM/8cAXCVrGuGy5VLg4D4T+hQXSMrODYFrLlKwy9UwvPysOxVznKzPoZpSKn92pfUJR6ZbwCgw8IrBllBptmBYOtW4n8fQ+LaePxRN4+V+StxxJ5uyRJw+hQ1sMYKrnQymnVB0LmA8Bf5ZrC4O5K3zg83N59N2TcI1E+kPDJZuXt6xL7oQjfqKzBqg6pg0YnvXJIOrQJCJYVdxQbSiqrVEUhim465NbpnTcZN8iWuyeL/bsni3VmsjxWcWiUj+JDylYhBvLyDswDx0fO8gEIfbhP+lD5D/lk0Nl/n83cr7qDf87+ZuNmxU5/KsAXR6LhgLjrkCyvd13R/gVuKxqHAJXxaVXAY9wKnvK9dGfJEb3eJfOFoFwhxM3W3UI8Jwtjt+9NX76zrWV3xqvnlx8VGTCGnhBUGB0DD8Is3pEXY1l5oqo4eQGMPCKajogcZLIki4ghB+CO6lgh140KRhV4xSJyWBFuQHytApbmdWARzeynxPgyNvtF1hz8Bw==</diagram></mxfile>
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 31 KiB |