Turbine Konzepte und Dienste Arzt Manuel (Theorie) Berger-Schützeneder Stefan (Beispiele) Hammerle...

Preview:

Citation preview

Turbine Konzepte und Dienste

Arzt Manuel (Theorie)

Berger-Schützeneder Stefan (Beispiele)

Hammerle Gernot (Theorie)

2

Einführung

Servlet-basiertes Webapplikations-Framework Ermöglicht schnell, sichere Webanwendungen zu

erstellen Nützliches Framework zur Erstellung komplexer

Applikationen mit HTML-Schnittstelle MVC-Muster wird umgesetzt Nicht nur im Web einsetzbar; Stand Alone Modus

– man kann auch Einzelmodule verwenden Open Source (kostenlos, Quellcode frei verfügbar) Mögliche Einsatzgebiete: B2B, CRM, Portal-

Engine, Bug-Tracking System

3

MVC – Model View Controller

Modell zur Trennung bestimmter Programmeigenschaften

Idee des Modells ist die Trennung des Programms in die drei Einheiten: Datenmodell Präsentation Programmsteuerung

4

MVC – Model View Controller

Ziel: flexibles Programmdesign Änderung oder Erweiterung einfach zu halten. Übersicht und Ordnung in großen Anwendungen Trennung bringt Rollenverteilung mit sich:

Fachkräfte können optimal eingesetzt werden

5

MVC – Model View Controller

Model-Teil-beinhaltet die Werte und

Eigenschaften der Komponenten

Controller-Teil-werden Benutzer-Aktionen

geprüft, ausgewertet und an das Model weitergeleitetet

View-Teil-visuelle Darstellung der Komponenten

MVC-Architektur

6

MVC – Model View Controller

Vorteil: durch die Trennung der einzelnen

Teile, kann z.B. das Aussehen einer Komponente verändert werden, ohne ihr Verhalten zu modifizieren

neue Benutzer-Ereignisse erfordern nur neue Verhalten im Controller-Teil

7

MVC – Model View Controller

Nachteil: Kommunikationen zwischen View und

Controller sind äußerst komplex und unüberschaubar

Lösung:Entwicklung einer modifizierten MVC

durch die Swing-Entwickler

8

MVC – Model View Controller

Modifizierte MVC

Modifiziertes MVC

9

Request – Response Zyklus

Hauptaufgabe von Turbine

auf HTTP-Request eines Users reagieren gewünschte Seite mitsamt

Kopf, Navigation Fußgenerieren und anschließend zurückzuliefern.

Sukzessives Zusammensetzen und agieren auf User-Aktionen wird von so genannten Assemblern erledigt.

10

Assembler

Die fünf Assembler im Systemablauf

11

Request – Response ZyklusBei einem Aufruf werden mehrere Assembler benötigt, die gemeinsam an dem Endresultat arbeiten

12

Seitenstruktur

Page – lädt die angegeben Seiten, Screens, Layouts oder Default-Layout

Screen – stellt den Körper eines HTML-Dokument dar und ist verantwortlichfür Benutzerinteraktion und Daten-anzeige

Layout – gibt die physikalische Struktur derzu erzeugenden HTML-Seite an

Navigation – in den Navigationselementen können mehrere Seiten zusammen-gefasst und für mehrere Screensbenutzt werden.

13

Seitenstruktur

Nach Aufbau der einzelnen Komponenten wird die fertige HTML-Seite an den Benutzer zurückgegeben.

Page-Konzept ist eine objektorientierte Darstellung eines HTML-Dokuments.

14

Seitenstruktur

Alle zur Seitenerzeugung instantierten Objekte können durch einen Caching-Mechanismus wieder verwendet werden, um Ressourcen zu sparen.

15

Torque Ursprünglich ein Teil von Turbine Framework mittlerweile eigenständiges Projekt Objektrelationales Datenbanktool

Ist ein Object-Persistence-Layer, der sämtliche Aufgaben für die Datenbankanbindung übernimmt.

Generiert einerseits SQL-CREATE Scripts um notwendige Tabellen zu erstellen andererseits die notwendigen Java-Klassen

16

Views mit Template-Systemen

Besteht in Turbine aus einem Screen, der zusammen mit der Navigation durch das Layout einer Seite zusammengesetzt wird.

Ausgabeformat HTML, XML Template Engines – Tools die Platzhalter z.B.

HTML-Templates durch vom Modell gelieferte Daten ersetzen

Templates werden vom Template Service verwaltet

17

Seitenaufbau

Templates werden nicht direkt ausgegeben sondern vom Page-Modul mit Navigation versehen und gelayoutet

In der Layout-Datei werden Kopf, Menü, Hauptscreen und Fuß in einer Tabellenstruktur zusammengefasst

Positiver Aspekt: man muss nicht die gesamte Datei ändern sondern nur das betroffene Template

18

Seitenerstellung mit Screen

Screen ist eine Spezialisierung der abstrakten Klasse Screen.

Ist ein Assembler und normalerweise mit einem gleichnamigen Template verknüpft.

Abstrakte Methoden werden vom Layout aufgerufen

19

UI-Manager

Service für die Benutzerschnittstelle (ähnlich CSS)

Ermöglicht das festlegen eines vordefinierten Designs unter Verwendung von einfachen Einstellungen

wird im Template-File eingebunden WEBAPP/resources/ui/skins/

20

Sicherheit

ausgeklügeltes Benutzerkonzept wird zur Verfügung gestellt

Einem Benutzer können: mehrere Rollen in verschieden Gruppen

zugewiesen sein

21

Sicherheit

Security Model User Group Role Permission

org.apache.turbine.services.security Package

22

Sicherheit / Benutzerkonzept

LOGIN

Für jeden identifizierten, also eingeloggten Benutzer wird eine AccessControlList aufgebaut, in der geprüft wird, ob der Benutzer die entsprechenden Rechte hat

23

Sicherheit / Benutzerkonzept

Im Standardfall wird obige Aufteilung mittels Torque in die angegebene Datenbank persistiert.

Turbine stellt unter dem Namen Flux eine Reihe von einfachen Screens und Aktionen zur Verfügung ermöglichen webbasierte Benutzerverwaltung

24

Turbine Service

Unterstützen MVC-Komponenten Services sind Einzelanwendungen Selbstaufrufend Ressourcensprarend Könne auch ohne Turbine ausgeführt

werden Ingesamt 26 Services

25

Turbine Service - Beispiele

Scheduler Service - Funktionen können zu einem beliebigen Zeitpunkt gestartet werden.

Security Service - Management von Benutzern, Gruppen und Berechtigungen mittels Speicherung in eigener Datenbank

26

Turbine - Beispiele

Grundlayout und Defaulteinstellungen Benutzerverwaltung und Login-

Vorgang Neue Seite generieren

27

NEWAPP

Beispielanwendung von Turbine Nach erfolgreicher Installation kann die

Beispielanwendung aufgerufen werdenhttp://localhost:8080/newapp/servlet/newapp

Login Screen erscheint Nach erfolgreichem Login Weiterleitung auf das

erste „Turbine Data Manager“ Layout Einfügen/Löschen/Editieren von Einträgen in die

Standarddatenbank Anlegen und managen von Benutzer mit Flux, dem

eingebauten Benutzermanagementsystem von Turbine

28

NEWAPP – Anpassung Layout

Grundlayout der Beispielanwendung:/newapp/templates/app/layouts/Default.vm

$screen_placeholder Platzhalter für die Anzeige

Zentrale Einstellung für Farben und Schriften:/newapp/resources/ui/skins/default/skins.props

Vergleichbar mit CSS

29

NEWAPP – Beispiel (1)

Anlegen eines neuen Benutzersmit Rolle „Turbine_Root“

Erstellung einer neuen Seite /newapp/templates/app/screens/UserInfo.vm

Ausgabe folgender Informationen: Benutzername Passwort Vorname Nachname E-Mail

30

NEWAPP – Beispiel (2) Source sollte wie folgt aussehen:

$page.setTitle("UserInfo")$page.setBgColor($ui.bgcolor)

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body>$benutzername$passwort$vorname$nachname$email</body>

31

NEWAPP – Beispiel (3)

Die zuvor generierte Seite benötigt eine JAVA Datei, welche Sie mit Werten versorgt

Erstellung einer neuen JAVA-Source

/newapp/WEB-INF/src/java/org/mycompany/newapp/modules/screens/UserInfo.java

32

NEWAPP – Beispiel (4)

33

NEWAPP – Beispiel (5)

JAVA Source sollte wie folgt aussehen:

package org.mycompany.newapp.modules.screens;

import org.apache.turbine.modules.screens.VelocityScreen;import org.apache.turbine.services.servlet.TurbineServlet;import org.apache.turbine.util.RunData;import org.apache.velocity.context.Context;

public class UserInfo extends VelocityScreen {

public void doBuildTemplate(RunData data, Context context) {

context.put("benutzername", data.getUserFromSession().getUserName());context.put("passwort", data.getUserFromSession().getPassword());context.put("vorname", data.getUserFromSession().getFirstName());context.put("nachname", data.getUserFromSession().getLastName());context.put("email", data.getUserFromSession().getEmail());

}}

34

NEWAPP – Beispiel (6)

Apache starten

Beispiel aufrufen:http://localhost:8080/newapp/servlet/newapp

Anmelden mit dem neu erstellten Benutzer

Nun folgende URL aufrufen:http://localhost:8080/newapp/servlet/newapp/template/UserInfo.vm

35

ENDE

Danke für die Mitarbeit und Aufmerksamkeit.

Recommended