Zusammenfassung
Aktuell müssen JSON-Interpreter noch händisch angelegt und dann getestet werden. Das ist z.T. sehr Zeitraubend und nicht wirklich anwenderfreundlich. Daher soll ein interaktiver Kommandozeilen-Assistent entworfen werden, der es Endnutzern oder dem 1st-Levelsupport ermöglicht, selbst Interpreter erstellen zu können.
Der Ablauf nach dem Start des Assistenten soll folgendermaßen sein:
Der Benutzer wird aufgefordert, eine JSON-Datei der App (((eTicketInfo einzulesen. Der Inhalt dieser Datei wird dann auf zwei Arten analysiert: Zum einen wird das Layout einmal als solches auf der Konsole ausgegeben, zum anderen werden die einzelnen Layoutfelder nochmals als Liste mit Zeile und Spalte ausgegeben, sodass man später nicht lange danach suchen muss. Vor dem Layout wird außerdem der Carrier-Code, die Message-Version, die Record-Version und der Layout-Standard als Kopfinformation auagegeben.
Im nächsten Schritt werden die Spezifikations-Constraints abgefragt. Als Default-Werte sind hier jeweils die bereits ermittelten Werte für Carrier, ... hinterlegt.
Anschließend wird der Benutzer gefragt, ob es weitere Bedingungen gibt, die für den Interpreter erfüllt sein müssen. Ist dies der Fall, werden die Feld-Constraints abgefragt, bis der Benutzer angibt, keine Constraints mehr zu haben.
Nun beginnt die eigentliche Arbeit, der Assistent fragt der Reihe nach jeden verfügbaren Feld-Typ ab. Zu jedem Feld-Typ werden alle notwendigen Parameter abgefragt. Nach jedem angegebenen Feld wird der Wert, wie er aktuell geparsed würde, zur Info angezeigt. Wenn der Wert so in Ordnung ist, wird fortgefahren, ansonsten wird die Abfrage der Felder wiederholt. Abschließend werden ggf. zusätzlich notwendige Parameter abgefragt. So wird beim validFrom z.B. ein Format abgefragt, bei der Starthaltestelle hingegen nicht. Abschließend wird der geparsede Wert nochmals zur Kontrolle angezeigt, sofern dieser vom Benutzer angenommen wird, wird das Ergebnis so gespeichert, falls nicht, beginnt die Abfrage für das Ergebnisfeld von vorne.
Am Ende wird nach einer Bezeichnung und einer Versionsinfo für den Interpreter, sowie einem Dateinamen gefragt und die finale Datei geschrieben.
Dieses Ticket dient als Epic zum kapseln der vier einzelnen Tickets bzgl. Assistentenumsetzung. Außerdem sollen in diesem Ticket globale Entscheidungen getroffen werden.
Folgende Punkte müssen noch überlegt werden:
Was für eine Sprache soll zur Interaktion genutzt werden? Deutsch oder Englisch? In Englisch wäre die Interaktion leichter zur Geltung zu bringen, auf Deutsch wäre ein breiterer Nutzerkreis abgedeckt, die Sprache allerdings deutlich formeller
Bestimmte Punkte wie z.B. das Parsen der einzelnen Felder sollte eigentlich von der Interpreterlogik übernommen werden, nicht über eine Zweitimplementierung im Assistenten. Nur so kann sichergestellt werden, dass auch die tatsächliche Reaktion des Interpreters sichtbar wird. Allerdings sind die meisten Felder im Interpreter protected oder private, d.h. diese müssten erst über Reflection sichtbar gemacht werden. Möglicherweise gibt es einen anderen Weg, bswp. eine externalisierte API? Es muss geklärt werden, bis auf welche Tiefe man mit dem Interpreter herunter muss. Dies wird interaktiv im entspr. Ticket ermittelt
Welche Kommandozeilenparameter soll die gesamte uic-interpreter-console.jar verarbeiten? Ein Argument mit dem auszuführenden Kommando wäre ausreichend.
Welche Kommandos sollten umgesetzt werden? Allen voran wohl view zum simplen Anzeigen der Ticket-Daten und assistant zum Ausführen des Assistenten.
Zusammenfassung Aktuell müssen JSON-Interpreter noch händisch angelegt und dann getestet werden. Das ist z.T. sehr Zeitraubend und nicht wirklich anwenderfreundlich. Daher soll ein interaktiver Kommandozeilen-Assistent entworfen werden, der es Endnutzern oder dem 1st-Levelsupport ermöglicht, selbst Interpreter erstellen zu können.
Der Ablauf nach dem Start des Assistenten soll folgendermaßen sein:
Dieses Ticket dient als Epic zum kapseln der vier einzelnen Tickets bzgl. Assistentenumsetzung. Außerdem sollen in diesem Ticket globale Entscheidungen getroffen werden.
Folgende Punkte müssen noch überlegt werden: