• Save
DOAG 2006: More than Dept and Emp mit JDeveloper and ADF
Upcoming SlideShare
Loading in...5
×
 

DOAG 2006: More than Dept and Emp mit JDeveloper and ADF

on

  • 880 views

My presentation from DOAG 2006. Topic Oracle ADF, Best Practice

My presentation from DOAG 2006. Topic Oracle ADF, Best Practice

Statistics

Views

Total Views
880
Views on SlideShare
880
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • http://www.sendspace.com/file/8kn03w
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

DOAG 2006: More than Dept and Emp mit JDeveloper and ADF DOAG 2006: More than Dept and Emp mit JDeveloper and ADF Presentation Transcript

  • Mehr als Dep und Emp Erfahrungen mit JDeveloper und Oracle ADF Ulrich Gerkmann-Bartels Berater
  • Zahlen und Fakten TEAM in Paderborn Paderborn - Schloß Neuhaus Gründung 1982 Geschäftsführung Michael Baranowski - Heike Käferle FirmenzentraleDOAG 2006 Unternehmensgruppe Materna 1.100 Mitarbeiter 120 Mio. Euro Umsatz in 2004 50 Mitarbeiter Copyright TEAM, Paderborn Nov-06 Seite 2
  • Ein Minimum an Vorbereitung (1) Erstelle ein separates Projekt (fwk-ext) das alle Basisklassen des ADF BC – Framework als Unterklasse enthält (2) Verwende das Projekt als Library und konfiguriere diese Klassen als „Business Components: Base Classes“DOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 3
  • ADF BC: Base ClassesDOAG 2006 Hinweis: Sinnvolle Namenwahl kann so manche Missverständnisse verhindern ! (java.lang.Number vs. oracle.jbo.domain.Number) Copyright TEAM, Paderborn Nov-06 Seite 4
  • Was ist ein Applikation Modul ? A unit of work ?!? Denke in Services/Funktionen nicht in UI‘s Vereinige Business Objekte und Services zu einer AM*, die einen gemeinsamen Aufgabenkontext erfüllen Wie groß ist die gesamte Applikation ? (Baustein oder kleine Applikation) Die Anzahl der enthaltenen ViewObjekte in einem AM beeinflussen das Startverhalten einer ApplikationDOAG 2006 AM* - Applikation Module Copyright TEAM, Paderborn Nov-06 Seite 5
  • AM – Mittlere bis größere Applikationen Betrachte das AM immer als Modul, dass in eine bestehende Umgebung eingebunden wird Verwende ein RootService – AM, in das die eigentlichen AM ggfs. zu Laufzeit geladen werden können Die Verwendung einer definierten Hierarchie innerhalb der AM erleichtert das Auffinden von Services und VO* Verteile diese Module in eigene Projekte und importiere diese in die eigentliche ApplikationDOAG 2006 service.findViewObject("RootService.Inventory.Locations"); VO* - ViewObject Copyright TEAM, Paderborn Nov-06 Seite 6
  • AM - RootServiceDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 7
  • AM - LadeverhaltenDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 8
  • AM - LadeverhaltenDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 9
  • AM – Schnittstelle zum UI / Binding Erfahrungen: Funktionalität wird als Service implementiert in der Business Schicht – Testbarkeit unabhängig vom UI – Saubere Trennung – Man schreibt ja auch nicht PL/SQL-Code in den Forms-Trigger oder ? Zu jedem Dialog gibt es eindeutig zugeordnete (Main-) VO – Welcher Dialog benutzt noch mal dieses VO ?DOAG 2006 – Warum hab ich jetzt in diesem Dialog nur noch 4 Datensätze ? Copyright TEAM, Paderborn Nov-06 Seite 10
  • ADF BC: Wann machen wir einen Post.. Gründe für einen Post: Trigger löst Aktionen innerhalb der Datenbank aus – Datenänderungen in anderen Tabellen, die im Model verwendet werden Prüfung von Constraints in der Datenbank (SWING: Frühzeitiges Feedback im UI zu erzwingen!)DOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 11
  • ADF BC: Wann machen wir einen Post.. Wenn man schon einen postChanges machen muss, dann aber..: Commit bzw. Rollback unmittelbar folgen lassen WebApp: Commit oder Rollback muss vor Abschluss der Verarbeitung des Request erfolgen (Es ist nicht sichergestellt, das man den gleichen Connect wieder bekommt) Tip: Wir verwenden den postChanges nur innerhalb unsererDOAG 2006 Tests, um ein Commit zu simulieren Copyright TEAM, Paderborn Nov-06 Seite 12
  • Berechtigung auf Satzebene Aufgabe: Suche in einer Organisationsstruktur nach Adressen, Projektinformationen oder Dokumenten unter der Berücksichtigung von Berechtigungen. Zeige die gefunden Elemente in einer Baumstruktur an.DOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 13
  • Berechtigung auf Satzebene Ansätze: Rollenbasierte Berechtigungen(ADF Security / JAAS- Provider) auf Satzebene – Wie vergebe ich das Recht einen privaten Kontakt nur für bestimmte Benutzer zugänglich zu machen ? Verwendung von java.security.Permission, um so Funktionen bzw. Fundmengen zu autorisieren – Wie bekomme ich zum aktuelle Benutzer meine Permission in das ViewObject ?DOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 14
  • Berechtigung auf Satzebene Umsetzung: Rollenbasierte Berechtigungen wird nur verwendet, um einzelne Applikationsmodule (Benutzerpflege) zu autorisieren PODC Berechtigungen werden als PermissionToken in einer Datenbanktabelle gehalten Zugriff auf zu autorisierende Daten erfolgt nur wenn in der Datenbank Session ein entsprechender Benutzerkontext gesetzt ist (Ansatz: VPD oder Oracle Portal)DOAG 2006 Business Schicht erhält nur autorisierte Daten PODC – Plain Old Database Code ☺ Copyright TEAM, Paderborn Nov-06 Seite 15
  • Binding: Drag and Drop oder doch besser.. Erfahrungen: Drag und Drop ganz schön und gut aber.. – Probleme beim Löschen, Umbenennen.. – Sobald man eigene Action bzw. MethodeAction mit Parameter definiert, muss man editieren – Sei Dir immer im klaren was in der PageDef steht – Seit 10.1.3 nicht mehr schreibgeschützt, im Jdev ☺ Migration von UI (UIX-Tags in JSP oder ADF UIX) waren nicht wirklich ein GewinnbringerDOAG 2006 Verwende ein Try-Projekt im JDeveloper, um nicht erklärbare Erscheinungen ohne großes Umfeld nach zu prüfen Copyright TEAM, Paderborn Nov-06 Seite 16
  • Binding: Drag and Drop oder doch besser.. Was fehlt / Nice to have: Include bzw. Vererbung von PageDefs MethodeAction, die Methoden in einer BackingBean bzw. POJO innerhalb eines ApplicationContext im UI aufrufen können ☺DOAG 2006 POJO – Plain Old Java Object Copyright TEAM, Paderborn Nov-06 Seite 17
  • JSF for nonbelievers Aufgabe: Suche in einer Organisationsstruktur nach Adressen, Projektinformationen oder Dokumenten unter der Berücksichtigung von Berechtigungen. Zeige die gefunden Elemente in einer Baumstruktur an.DOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 18
  • JSF for nonbelievers Ansätze: ADF Tree mit entsprechenden VO ADF TreeTable mit entsprechenden VO Entwurf einer eigenen JSF Komponente Ergebnis: Verwendung der ADF Faces Komponenten mit Bindung an VO zeigte sich als nicht praktikabel.DOAG 2006 Entwurf einer eigenen JSF Komponente führte schnell zu einen erheblichen Mehraufwand, bei der benötigten Funktionalitäten. Copyright TEAM, Paderborn Nov-06 Seite 19
  • JSF for nonbelievers Lösung: ADF TreeTable mit angepassten Model ohne direkte Bindung an ein VO ☺ Ergebnis: Implementierung eines angepassten Models auf der Basis von ADF Faces. Hohe Flexibilität, da der Inhalt des Knoten selbst definiert wird. Layout des Baumes bzw. der Zeile kann wieder mit JSF Komponenten geschehen.DOAG 2006 Viele Funktionen des ADF TreeTable müssen nicht selber implementiert werden. (Decoding des Key, SelectMany, SelectOne) Copyright TEAM, Paderborn Nov-06 Seite 20
  • ADF TreeTableDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 21
  • ADF TreeTableDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 22
  • ADF Faces StyleDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 23
  • ADF Faces Style CSS Kenntnisse erforderlich ! Geänderter Style wird im WYSIWYG mal angezeigt und ein anderes mal nicht ! CSS Preview hilft nicht wirklich Problem mit „Body“ – Style konnten nur direkt in der JSPX gelöst werden Viele Möglichkeiten der Darstellung lassen sich durch das Stylesheet oder durch Inline-Style lösen aber nicht allesDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 24
  • ADF Faces Style <afh:head> : <style type="text/css"> body { background-image: url(<jsp:expression>request.getContextPath()</jsp:expression>/images/...); background-repeat: repeat-x; margin: 0px; padding: 0px; } </style> : </afh:head>DOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 25
  • ADF Faces Style http://www.oracle.com/technology/products/jdev/htdocs/partners /addins/exchange/jsf/doc/skin-selectors.htmlDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 26
  • Umfeld: Version – CVS oder Subversion Viele haben in den letzten Jahren CVS eingesetzt und tun dies noch immer, warum zu Subversion wechseln. Es ist einfach einfacher ! Löschen, Umbenennen bzw. Refactoring Es geht zwar nicht alles, man wird nicht immer noch vom Version-Tool so oft aufgehaltenDOAG 2006 Zusätzliches Tool: http://www.tortoisesvn.org Copyright TEAM, Paderborn Nov-06 Seite 27
  • Umfeld: Maven Maven ist vom Grundsatz ein Build-Tool, bietet aber einige wesentlichen Funktionen, die in einem Projektumfeld sehr hilfreich sind: Unternehmensweites Repository für Java-Libraries Erzeugen von JavaDoc, Checkstyle- und Dependency – Reports Unabhängige Testumgebung außerhalb des JDevelopers Generierung einer Projekt-SiteDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 28
  • Umfeld: Maven Erfahrungen: Einführung benötigt Zeit – Alle Libraries sollten ins JLib Repository – Einmalige Erstellung der pom.xml für ADF BC – Anpassung der Styles etc. Integration im JDeveloper über External Tools Maven setzt man nicht für ein Projekt ein, es sollte als grundsätzliches Element in der Entwicklungsumgebung eingeführt werdenDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 29
  • Umfeld: MavenDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 30
  • Umfeld: MavenDOAG 2006 Copyright TEAM, Paderborn Nov-06 Seite 31
  • HABEN SIE FRAGEN ? Hermann-Löns-Str. 88 33104 Paderborn Fon: 0 52 54 / 80 08-0 Fax: 0 52 54 / 80 08-19 eMail: team@team-pb.de www.team-pb.de
  • Vielen Dank für IhreAufmerksamkeit! Hermann-Löns-Str. 88 33104 Paderborn Fon: 0 52 54 / 80 08-0 Fax: 0 52 54 / 80 08-19 eMail: team@team-pb.de www.team-pb.de