Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian...

31
Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch

Transcript of Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian...

Page 1: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Fachhochschule Zittau/GörlitzFachbereich Informatik

Denny Israel, Daniel WinterChristian Schäfer, Michael Kohlsche

Dozent: Lars Rönisch

Page 2: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Aski - EinleitungWeb-Anwendung zur Durchführung einer

BefragungBefragung zum Thema Kinder mir

DownsyndromErstellt von René Hofmann

Umsetzung des Systems mit GrailsWeb-FrameworkBasiert auf Sprache Groovy

Page 3: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Aufüllung des FragebogensOnlineDurch Passwort zu schützen

AuswertungDurch angemeldete Manager (Passwortschutz)Mittels Diagrammen

SonstigesE-Mail-Versandt von EinladungenEinladungen als PDF-Dokument

Aski - Anforderungen

Page 4: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Aski - SystemNutzung der von Grails

vorgegebenen ProjektstrukturMVC-PatternDatenmodell durch

Domain-KlassenLogik durch ControllerOberfläche durch Grails-

Server-Pages (vgl. JSP)Programmierung in Groovy,

Unterstützt durch Java

Page 5: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Aski - WorkflowUmfrageausführung als Web-Flow

Grails Web-Flow System, basiert auf Spring Web FlowFestlegung Start-, End- und ZwischenstatesWeb Flow System kontrolliert Ablauf, ein „Mittenrein“-

Springen ist somit unmöglich → sichert Datenkonsistenz

Eingabenkontrolle beim Absenden einer MaskeSpeicherung der Ergebnisse am Ende des Flows

Page 6: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Aski - WorkflowStates der Umfrageausführung

Start – Begrüßungsseite, evtl. Eingabemöglichkeit für Ticket-Passwort

Zwischenstates - Eingabeseiten für jede Kategorie (1-6)

Ende – Abschlusseite

Page 7: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Aski - MailNutzung der Java-Mail-APIVersandt über SMTPDaten für SMTP werden in der Konfiguration

gespeichert und sind im Admin-Bereich einstellbarNutzung für das Versenden von Einladungen

Einladungstext ist ebenfalls in der Konfig. einstellbarNutzung auch für Versandt zurückgesetzter

Passwörter der Manager

Page 8: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

PDF-Erzeugung IPDF-Erzeugung mit iText mächtiges Open-Source Framework für Java

um PDF- Dateien zu erstellen und zu erweitern

ausgelagert in extra KlassePDF erhält kurzen Text, URL und ein Ticket

Page 9: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

PDF-Erzeugung IIneues Dokument wir erstellt

Document document = new Document(); Ränder werden gesetztdocument.setMargins(75, 75, 75, 75);

Paragraphen werden hinzugefügtParagraph paragraph = new Paragraph();

Font font = new Font(); Schriftgröße, Stylefont.setSize(14);

font.setStyle(Font.BOLD);

paragraph.setFont(font);

paragraph.add(subject);

document.add(paragraph);

Dokument wird geschlossendocument.close();

Page 10: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

PDF-Erzeugung IIIPDF-Datei wird nicht auf die Festplatte

geschrieben als Byte-Array weiter gegeben und verarbeitet

ByteArrayOutputStream output = new ByteArrayOutputStream();

PdfWriter.getInstance(document, output);

...

return output.toByteArray();

übernimmt die Änderungen und füllt Stream

gibt Stream als Byte-Array zurück

Page 11: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

PDF-Erzeugung IV

Page 12: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Chart-Erzeugung IChart-Erzeugung mit JFreeChart sehr populäres Open-Source Framework für

Java um Diagramme zu erstellen

für jede Frage kann ein BarChart erzeugt werden

zeigen die Antworten in % an

Page 13: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Chart-Erzeugung II

DataSet wird erzeugtDefaultCategoryDataset dataset = new DefaultCategoryDataset();

for(String key : keySet) {

double value = values.get(key) / allValues * 100;

dataset.addValue(value, key, "");

}

DataSet wird gefüllt

Page 14: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Chart-Erzeugung IIIChart wird erzeugt

CategoryDataset dataset = createDataSet(values);

JFreeChart chart = ChartFactory.createBarChart(

"" +question, // chart title

"", // domain axis label

"%", // range axis label

dataset, // data

PlotOrientation.VERTICAL, // orientation

true, // include legend

true, // tooltips

false // URLs

);

setzen das DataSet

Page 15: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Chart-Erzeugung IV

Page 16: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Fehlermeldungen IFehlermeldungen wichtig für den User um zu erkennen was er falsch gemacht hat! und wie er es richtig machen kann!

falsche Fehlermeldungen verwirren nur

Page 17: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Fehlermeldungen IIStandard-Fehlermeldungen von Grails treffen allgemeine Aussagen über die Fehler

sind ungeeignet für den normalen Nutzer zu spezifisch zu viele Informationen

Page 18: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Fehlermeldungen IIIFehlermeldungen angepasst anlegen eines neuen Verwalters oder Login

Problem: Anpassung der Fehlermeldungen im Workflow

Page 19: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Mockups IErste Entwürfe als HTML von allen Team-

Mitgliedern

Page 20: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Mockups II

Page 21: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Mockups III

Zusammenfassung aller Ideen

Page 22: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

OberflächeStandard Grails Layout

Anpassung der Grails Styles mit CSS

Page 23: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

AskI Oberfläche

Page 24: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Aufbau der GSPs IGrundlayout für alle GSPs in main.gsp

Definition von immer sichtbaren BereichenCSS-Includes, Locale-Auswahl, Kopf- und

FußzeilenDie eigentlichen Inhalte werden zur Laufzeit

mit <g:layoutBody /> eingefügt

Page 25: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Folgender Markup steht im Bodytag eines gewöhnlichen HTML-Grundgerüsts:

Aufbau der GSPs II

Page 26: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Einfühung einer TagLib

Kapselt MarkupVerbessert LesbarkeitSteigerung der WiederverwendbarkeitVerhinderung von duplicated Code

Page 27: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Einsatz von Ajax IProblem:

Abhängig von Auswahl eines Listen-Items soll andere Liste gefüllt werden

Klick zum Aktualisieren der zweiten Liste dem Nutzer möglichst ersparen

Page 28: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Lösung:

Einsatz von AjaxFüllen der 2. Liste bei onChange()-EventGute Unterstützung durch Grails

einfache UmsetzungUnstützte JavaScript Bibliotheken:

PrototypeDojoYahoo UI Library (YUI)

Einsatz von Ajax II

Page 29: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Zu implementierende Teile:In GSP:

In UmfrageController:

Einsatz von Ajax III

Page 30: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

Aski - Demo

DEMO – Aski 0.9

Page 31: Fachhochschule Zittau/Görlitz Fachbereich Informatik Denny Israel, Daniel Winter Christian Schäfer, Michael Kohlsche Dozent: Lars Rönisch.

ENDE

VIELEN DANK FÜR IHRE

AUFMERKSAMKEIT