Objects Dirk Schober Senior Software Trainer leservices EMEA Fragen über Fragen Was ist eigentlich ein lication? Welche lication gibt es sonst noch? Was kostet sowas? Wer setzt denn eine solche Technologie ein? 1
Was ist Objects? DER original lication 100% pure Java +Tools +Persistence DB-Framework +Rapid Protoyping + sauberes OO-Design Im Großen Java Clients Browser Dienste Datenquellen Verteilte Objekte 2
Die Entwicklung 100% pure Java Verwendung von Objects Frameworks: Bestehende Bibliotheken mit Logik und Ressourcen J2SE bis J2EE Andere Java-Techniken: QuickTime, OpenGL,... Die Ausgabe HTML JavaClient (eigenständig oder als let) XML WAP/WML PDF oder Selbst entwickeln: Schnittstelle liegt offen 3
Datenquellen JDBC als Standard Selbst entwickeln: Schnittstelle liegt offen - Jeder der CGIs beherrscht Ergo: alle Apache NSAPI IIS Selbst anbinden: Schnittstelle liegt offen 4
Entwicklung + Betrieb Entwicklung Windows 2000 Mac OS X Betrieb Windows 2000, Mac OS X, Solaris 8 Weitere mit JDK 1.3 (nicht zertifiziert) Mischen nach Belieben Überblick Betrieb 5
Überblick Betrieb Browsers Mehrere HTTP Mehrere Anwendungsserver Mehrere Teile einer Anwendung HTML-Templates (Objects Builder) Datenbank-Modell (EOModeler) Geschäftslogik Controller-Logik Adaptoren (, ) Ressourcen (Grafiken, CSS, lets, Filme,... )... alles in der Entwicklung getrennt und zur Laufzeit zusammengefügt 6
Teile einer Anwendung Object Model lication Browser Java Mainframes Databases ERP Systems Directories XML Streams Templates Java and HTML Das Besondere an Frameworks Im Prinzip shared libraries +Logik +Ressourcen +volle Funktionalität von Anfang an +Verfeinerung bei Bedarf bis hin zur völligen Kontrolle auf unterster Ebene Top-Down Programmierung =>extrem wenig Code 7
Vorhandene Frameworks Objects-Framework Ablaufsteuerung Sitzungsverwaltung dynamische Erzeugung Enterprise Objects Framework (EOF) Anbindung an Sicherstellung der Persistenz von DB-Objekten Direct2 WAP, PDF, XML,... Datenbankanbindung Beschreibung über ein ER ähnliches Modell mittels EOModeler Datenbankunabhänige Datenmodellierung Mehrere Modelle für verschiedene gleichzeitig nutzbar Relationen über hinweg modellierbar Transparente Abbildung: Tabelle < > Entität < > Objekt 8
Vorteile Kein SQL nötig! DB-Objekt sind gewöhnliche Objekte Datenbankobjekte = Business-Objekte Persistenz überwacht durch Objects Datenbank- und GUI- unabhängig Sitzungsverwaltung Sitzungsobjekte zur Zustandsspeicherung einzelner Benutzer Anwendungsobjekt zur globalen Zustandsspeicherung mehrerer Sitzungen Zustand archivierbar 9
J2EE lication Objects Java lication FPO Objects Datenfluß 10
Internet 3 Dinge erledigte Objects automatisch 1. Werte auslesen + Wandeln 3. Antwortseite erzeugen 2. Verarbeitungsmethode aufrufen Aktion auslösen Internet Benutzer stellt Anfrage an den 11
Internet Der -Adaptor reicht die Anfrage and eine passende Anwendungsinstanz weiter. Erste oder unspezifische Anfrage? Eine Anwendung wird nach der gewählten Lastverteilungsstrategie ausgewählt. Nachfolgende Anfragen eines Benutzers? Die ursprüngliche Instanz wird kontaktiert. Internet Sitzungsobjekt erkennt die gewünschte Seite = eine WOComponent Login.wo <HTML> What s your user name? <WO NAME=FORM> <WO NAME=INPUT> <WO NAME=SUBMIT> INPUT: WOTextField { value = username; } SUBMIT: WOSubmitButton { action = handlelogin; } 12
Internet Die aufgerufene Komponente liest alle übergebenen Werte aus und weist sie den Variablen zu. Login.wo <HTML> What s your user name? <WO NAME=FORM> <WO NAME=INPUT> <WO NAME=SUBMIT> INPUT: WOTextField { value = username; } SUBMIT: WOSubmitButton { action = handlelogin; } Internet Nun wird entschieden welche Aktion ausgelöst werden soll. Das Ergebnis dieser Aktion ist eine neue Seite. // Login.java public Login.wo class Login extends WOComponent { public String username; public <HTML> WOComponent handlelogin() { What s session().fetchcustomer(username); your user name? <WO return NAME=FORM> pagewithname( Welcome ); } <WO NAME=INPUT> } <WO NAME=SUBMIT> INPUT: WOString { value = username; } SUBMIT: WOSubmitButton { action = handlelogin; } 13
Internet Die Aktion wird ausgeführt, und das Objects- Framework aktiviert die Componente welche die Antwort erzeugt. Welcome.wo <HTML> Welcome back, <WEBOBJECT NAME=UserName> UserName: WOString { value = session.customer.firstname; } Internet WEBOBJECTS - Tags werden identifziert für die Ersetzung vorbereitet. In diesem Fall soll eine Zeichenkette ausgegeben werden: der Name des Kunden, gespeichert im Kundenobjekt, welches wiederum über das Sitzungsobjekt referenziert wird. Welcome.wo <HTML> Welcome back, <WEBOBJECT NAME=UserName> UserName: WOString { value = session.customer.firstname; } 14
Internet Alle Objekte welche aus der Datenbank benötigt werden, werden geladen. SQL wird dazu automatisch im Hintergrund erzeugt. Welcome.wo <HTML> Welcome back, <WEBOBJECT NAME=UserName> EOModel Select FIRST,LAST, ID from CUST where ID= shayman Database ORACLE UserName: WOString Customer { value = CUST session.customer.firstname; Product PROD } Internet Das Ergebnis der Datenbank (eine Zeile der Tabelle) wird in eine Enterprise-Objekt (EO) umgewandelt Welcome.wo <HTML> Welcome back, <WEBOBJECT NAME=UserName> EOModel Steve, Hayman, shayman Database ORACLE UserName: Customer WOString CUST { value = session.customer.firstname; Product PROD } 15
Internet Nun wird das Kundenobjekt nach dem Namen-Attribut befragt Welcome.wo <HTML> Welcome back, <WEBOBJECT NAME=UserName> Steve UserName: WOString { value = session.customer.firstname; } Internet Das Ergebnis dieser Anfrage wird nun in die Antwortseite durch Ersetzung des WEBOBJECT-Tags eingebaut. Welcome.wo <HTML> Welcome back, Steve Customer Steve UserName: WOString { value = session.customer.firstname; } 16
Internet Response Reines HTML wird zurück zum Browser des Benutzers übertragen Welcome.wo <HTML> Welcome back, Steve UserName: WOString { value = session.customer.firstname; } Internet Das ist der /Response Loop public void takevaluesfrom public WOElement invokeaction public void appendtoresponse ( WO a, WOContext acontext ) ( WO a, WOContext acontext ) ( WOResponse aresponse, WOContext acontext ) Das Anwendungsobjekt, das Sitzungsobjekt und alle beteiligten Komponentenobjekte können an diesem Prozess teilnehmen und somit die Ausgabe beliebig beeinflussen. 17
Das ist wichtig: Keine Vermischung von Java und HTML! Keine Vermischung von SQL und HTML! SQL wird überhaupt nicht programmiert Ebenso muß man kein HTML programmieren Datenbankzugriff, Benutzerschnittstelle und Geschätfslogik sind voneinander getrennt. (Entwurfsmuster: Model-View-Controller) Wiederverwertbarkeit der Geschäftslogik ist extrem hoch Q & A leservices Iservices_euro@apple.com 18
Think different. 2001 and TM le Computer, Inc. All rights reserved. 19