Annotation based presentation models for view rendering and data binding with Linkki and Vaadin

Ähnliche Dokumente
JavaFX. Arthur Zaczek. Mar 2015

Multimedia im Netz Wintersemester 2012/13

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

WPF Steuerelemente Listbox, ComboBox, ListView,

JUnit 5 Die Plattform. Johannes Link

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Programmieren 2 07 JavaFX-Properties und Data-Binding

Softwaretechnik WS 16/17. Übungsblatt 01

WPF Steuerelemente. Dr. Beatrice Amrhein

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Technische Universität Braunschweig

Abschlussklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

UI-Architekturen mit JSF

VON MVC ZU MODEL-VIEW-VIEWMODEL

BIF/SWE - Übungsbeispiel

Model-View-ViewModel (MVVM)

Auszug aus JAX-WS Folien

NILS HARTMANN OLIVER ZEIGERMANN EINSTIEG IN. React.

11. Komponenten Grundlagen der Programmierung 1 (Java)

C# im Vergleich zu Java

GUI-Entwicklung 2: Windows Presentation Foundation

II.4.1 Unterklassen und Vererbung - 1 -

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

REST-Schnittstellen Dokumentation und Testing. Adrian Moos Technology Advisor Bedag Informatik AG

Programmieren in Java

Einstieg in die Informatik mit Java

Aufbau des Beispiels. Arthur Zaczek. Feb 2015

Übungsaufgabe Transaktion als Middleware

Instrumentierung und Dekodierung

JTable. W. Lang HWR Berlin, SS

Dokumentation: Content App Framework

Ich liebe Java && Ich liebe C# Rolf Borst

Objektorientierte Programmierung Studiengang Medieninformatik

Play Framework, MySQL, JPA, HQL, HTML, jquery,

Info B VL 11: Innere Klassen/Collections

Objektorientierung III

Oliver Paulus, 7. Februar Spring Framework Einführung. Oliver Paulus, Was ist Spring?

Anwendung der Aspektorientierung : Security

Eclipse Modeling Framework Modellgetriebene Softwareentwicklung Prof. Andreas Schmidt

II.4.5 Generische Datentypen - 1 -

M3 M4 M7 VORNAME: Compare VERTIEFUNG:

Allgemeine Hinweise:

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Verkettete Datenstrukturen: Listen

Pakete Software Entwicklung 1

Moderne Web- Anwendungen mit

JavaBeans Property-Editoren und Customizer

II.4.1 Unterklassen und Vererbung - 1 -

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

<Insert Picture Here> Oracle Forms Roadmap in Richtung SOA

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

OCP Java SE 8. Lambda

Frontend Migration from JSP to Eclipse Scout

WPF - Windows Presentation Foundation

II.4.1 Unterklassen und Vererbung - 1 -

OCP Java SE 8. Lambda

Prüfung Softwareentwicklung I (IB)

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Java Einführung Abstrakte Klassen und Interfaces

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Klausur: Java (Liste P)

H.1 FORMI: An RMI Extension for Adaptive Applications H.1 FORMI: An RMI Extension for Adaptive Applications

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Objektorientierung. Objekte

Vaadin 8 What s new Jakob Magun, Benjamin Schupp

Funktionen nur wenn dann

Oracle9i Designer. Rainer Willems. Page 1. Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH

Enterprise JavaBeans Überblick

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Windows Presentation Foundation

<Insert Picture Here> Generierung von ADF-Applikationen aus Metadaten des Oracle Designer

14. Java Objektorientierung

Handbuch für die Erweiterbarkeit

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Business Applika-onen schnell entwickeln JVx Framework - Live!

Übungen zu Softwaretechnik

Programmiermethodik 1. Klausur

Stapel (Stack, Keller)

Typumwandlungen bei Referenztypen

Prüfung Softwareentwicklung II (IB)

Nathan Burgener. Design by Contract. Modul SWE

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Übung 1: Object Inspector

Programmiertechnik Klassenvariablen & Instantiierung

Objektorientierte Programmierung

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Model-View-Controller. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1

Design Patterns 2. Model-View-Controller in der Praxis

Transkript:

Annotation based presentation models for view rendering and data binding with Linkki and Vaadin jan.ortmann@faktorzehn.de 20.02.2017 Faktor-IPM - Architektur 1

Annotation based presentation models for view rendering and data binding with Linkki and Vaadin 20.02.2017 Faktor-IPM - Architektur 2

Annotation based presentation models for view rendering and data binding with Linkki and Vaadin 20.02.2017 Faktor-IPM - Architektur 3

Annotation based presentation models for view rendering and data binding with Linkki and Vaadin or How to code UIs really, really fast! 20.02.2017 Faktor-IPM - Architektur 4

In Anwendungen müssen Werte aus dem Domain Model in die UI übertragen werden und umgekehrt. UI Domain Layer VersichertePerson Partner Adresse beruf gefahrengruppe tarifvariante anrede vorname nachname geburtsdatum strasse hausnummer postleitzahl ort 20.02.2017 Faktor-IPM - Architektur 5

In Anwendungen müssen Werte aus dem Domain Model in die UI übertragen werden und umgekehrt. UI Domain Layer VersichertePerson Partner Adresse beruf gefahrengruppe tarifvariante anrede vorname nachname geburtsdatum strasse hausnummer postleitzahl ort 20.02.2017 Faktor-IPM - Architektur 6

Databinding: Verknüpfen von Eigenschaften von Modelobjekten mit UI-Controls mit einem Mechanismus zur Synchronisierung. Binding Binding UI Domain Layer VersichertePerson Partner Adresse beruf gefahrengruppe tarifvariante anrede vorname nachname geburtsdatum strasse hausnummer postleitzahl ort 20.02.2017 Faktor-IPM - Architektur 7

Presentation Model Objects / View Model Represent the state and behavior of the presentation independently of the GUI controls used in the interface. (http://martinfowler.com/eaadev/presentationmodel.html) Controls View Model VersichertePersonSectionPmo UI Domain Layer Service VersichertePerson Partner Adresse Operation Repository <<Entity>> beruf gefahrengruppe <<Entity>> anrede vorname <<Entity>> strasse hausnummer Any other domain layer class tarifvariante nachname geburtsdatum postleitzahl ort 20.02.2017 Faktor-IPM - Architektur 8

So könnte das PMO aussehen public class VersichertePersonSectionPmo { private final UvVersichertePerson vp; } public Beruf getberuf() { return vp.getberuf(); } public void setberuf(beruf beruf) { vp.setberuf(beruf); } 20.02.2017 Faktor-IPM - Architektur 9

So könnte das PMO aussehen public class VersichertePersonSectionPmo { private final UvVersichertePerson vp; public Beruf getberuf() { return vp.getberuf(); } public void setberuf(beruf beruf) { vp.setberuf(beruf); } public String getversicherteperson() { Partner partner = vp.getpartner(); Address address = partner.getdefaultaddress(); return partner.getanrede() + ", " + partner.getvorname() + ", } } public LocalDate getgeburtsdatum() { } return vp.getpartner().getdateofbirth(); 20.02.2017 Faktor-IPM - Architektur 10

Kurzer Blick in ein reales System 20.02.2017 Faktor-IPM - Architektur 11

Auch andere Aspekte von UI Komponenten können / sollten per Data Binding berücksichtigt werden: UI Domain Layer Service Operation Repository Any other domain layer class VersichertePerson beruf gefahrengruppe tarifvariante Partner anrede vorname nachname geburtsdatum Readonly / Enabled Visible Required Erlaubte Werte Tooltip Die Fachlogik steht idr entweder in den Domain Model Klassen oder in anderen Klassen des Domainy Layers Adresse zur Verfügung. strasse hausnummer postleitzahl ort 20.02.2017 Faktor-IPM - Architektur 12

So könnte das PMO für das enablen / disablen des Bezugsberechtigten erweitert werden public class VersichertePersonSectionPmo { private final UvVersichertePerson vp;. public boolean isbezugsberechtigterenabled() { } return vp.gettodesfalllvb()!= null; } 20.02.2017 Faktor-IPM - Architektur 13

Herausforderung: Berücksichtigung der Abhängigkeit zwischen Feldern. UI Domain Layer Szenario: 1. Der Benutzer ändert den Wert in einem Feld. 2. Dadurch ergeben sind neue Werte in anderen Feldern. 3. Die erlaubten Werte in Comboboxen ändern sind. 4. Der enabled / disabled State anderer Felder ändert sich. 5. VersichertePerson Partner Adresse beruf gefahrengruppe tarifvariante anrede strasse Wie refreshed man welche Bereiche der vorname hausnummer UI? nachname postleitzahl geburtsdatum ort 20.02.2017 Faktor-IPM - Architektur 14

Linkki - Idee Unterteile das User Interface von Geschäftsanwendungen in Pages und jede Pages in Sections. Verwende einige Standard-Layouts für die Sections. Schreibe für jede Section ein PMO und annotiere es mit Anweisungen, wie die Section gerendert werden soll. Linkki rendert die Sections auf Basis der annotierten PMOs und führt das Databinding durch. Nach jeder Änderung werden die Bindings auf einer Page refreshed. 20.02.2017 Faktor-IPM - Architektur 15

Und nun zur Praxis 20.02.2017 Faktor-IPM - Architektur 16

Anzeige von Fehlermeldungen Anforderungen: Fachliche Prüfungen sollen in der Geschäftslogik implementiert werden, ohne Bezug zum UI. Fehlerhafte Felder sollten markiert werden. 20.02.2017 Faktor-IPM - Architektur 17

Durch das Data Binding gibt es eine Zuordnung der Modellobjekte und ihrer Eigenschaften zu Eingabefeldern User Interface Domain Layer Versichertes-Gebäude Gebäude tarifzone Wohnfläche Nutzungsart Gebäudeart Bauart Sicherungen 20.02.2017 Faktor-IPM - Architektur 18

ValidationService liefert eine Liste von Messages zurück MessageList * Message code severity text Jede Message weiß auf welche Eigenschaften welcher Objekte sich die Nachricht bezieht. Einfachster Fall: ModelObject 1 * ObjectProperty property Eine Eigenschaft eines Objekts ist fehlerhaft. 20.02.2017 Faktor-IPM - Architektur 19

Damit können die Felder als fehlerhaft markiert werden und auch einer Seite zugeordnet werden 20.02.2017 Faktor-IPM - Architektur 20

Und nun zur Praxis 20.02.2017 Faktor-IPM - Architektur 21

What else? Tabellen können genauso einfach mit PMOs erstellt werden. 1 PMO für die Tabelle, 1 PMO für die Zeilen. Einfache Dialog können mit PMOs erstellt werden. Definition von Querschnittsaspekte möglich Beispielsweise alles readonly, wenn keine Berechtigung vorhanden. Wenn die Standard-Layouts nicht passen, können einzelne Sections individuell designed werden und die Controls an ein PMO gebunden werden (ebenfalls per Annotation). 20.02.2017 Faktor-IPM - Architektur 22

Fazit User Interface für Geschäftsanwendungen im Back-Office können extrem schnell entwickelt werden. Klare Strukturierung des UI Codes. 1 PMO pro Section 2 PMOs pro Tabelle Klare Trennung von Layout, Inhalt der UI und Geschäftslogik. Es reichen grundlegende Java Kenntnisse, um ein UI zu bauen. Vaadin erlaubt es einem, so ein Framework zu bauen. 20.02.2017 Faktor-IPM - Architektur 23