<Insert Picture Here> Oracle Application Development Framework (ADF) Jürgen Menge TSBU Middleware Oracle Deutschland GmbH Agenda • Warum Oracle ADF ? • Was ist Oracle ADF ? • Wie entwickle ich mit Oracle ADF ? • Typische Herausforderungen der Anwendungsentwicklung • Weiterführende Informationen <Insert Picture Here> Herausforderungen der JEE-Entwicklung • Vielzahl von Standards und Technologien • JPA, EJB, Ajax, JavaScript, BPEL, SOAP, WSDL, RMI, JNDI, JDBC, O/R, HTML, DOM…. • schnelle Weiterentwicklund der Standards u. Technologien • Qualifikation der Entwickler im Unternehmen • • • • viele Entwickler kommen aus der 4GL-Entwicklung viele Entwickler kennen diese Technologien noch nicht wenig Zeit, sich in alle diese Technologien einzuarbeiten Entwickler sollen sich auf die fachlichen Anforderungen konzentrieren • Projektsituation • Projekte unter Kosten- und Termindruck • Anwendungen müssen zukunfts- und upgrade-fähig sein Zielstellungen für Oracle ADF • Entwicklungsplattform auf Basis offener Standards (JEE, SOA/SCA) bereitstellen • Integration verschiedener Standards und Frameworks, um komplette Anwendungen zu entwickeln • eine mit der 4GL-Entwicklung vergleichbare Produktivität erreichen • RAD-Arbeitsweise (deklarativ, visuell und programmatisch) • Abstraktion von technischen Details der Implementierung • Wiederverwendbarkeit • Stabilität der Plattform gegenüber zukünftigen Entwicklungen der Technologie gewährleisten Oracle und das Oracle ADF • Oracle entwickelt intern alle Fusion-Anwendungen mit dem Framework Oracle ADF (“eat your own dog food”) • Vorgaben für die Weiterentwicklung von ADF kommen primär aus dem eigenen Haus • Oracle ADF wird in vielen Oracle-Produkten verwendet (Oracle Enterprise Manager, Webcenter, BPEL Process Manager, …) Agenda • Warum Oracle ADF ? • Was ist Oracle ADF ? • Wie entwickle ich mit Oracle ADF ? • Typische Herausforderungen der Anwendungsentwicklung • Weiterführende Informationen <Insert Picture Here> Das Oracle Application Development Framework (ADF) • Weiterentwicklung und Integration bestehender Frameworks • Auswahlmöglichkeiten der einzusetzenden Technologien • Integration der ausgewählten Technologien • Entwicklung von SOA-Anwendungen • Entwicklung wiederverwendbarer Services • Entwicklung von Composite Applications • Entwicklung interaktiven Web-Anwendungen (AJAX, Flash, …) • Produktivität der Entwicklung • Oracle JDeveloper als Entwicklungsumgebung • Visuelle, deklarative und code-orientierte Arbeitsweise • Konzentration auf die Applikation und nicht auf technische Details der Implementierung • Umsetzung von JEE Best Practices Architektur – Oracle ADF Web and Mobile Rich Clients Controller View Controller Model Model (JSR-227) Business Services Business Services Architektur - Oracle ADF 11g Desktop Browser-Based View Metadata Services (MDS) ADF Swing JSP Office JSF ADF Faces / DVT Controller Struts JSF/ADF Task Flow Model ADF Bindings (JSR 227) Java EJB BAM BPEL Web Services ADFbc BI Essbase Portlets Business Services TopLink Data Services Relational Data XML Data Legacy Data Packaged Apps Oracle ADF – Fusion Applications Desktop Browser-Based View Metadata Services (MDS) ADF Swing JSP Office JSF ADF Faces / DVT Controller Struts JSF/ADF Task Flow Model ADF Bindings (JSR 227) Java EJB BAM BPEL Web Services ADFbc BI Essbase Portlets Business Services TopLink Data Services Relational Data XML Data Legacy Data Packaged Apps Agenda • Warum Oracle ADF ? • Was ist Oracle ADF ? • Wie entwickle ich mit Oracle ADF ? • Typische Herausforderungen der Anwendungsentwicklung • Weiterführende Informationen <Insert Picture Here> Oracle JDeveloper • Integrierte Entwicklungsumgebung • • • • Unterstützung des vollständigen Entwicklungszyklus Entwicklungsumgebung für Java, XML, Web Services, SQL, PL/SQL Integrierter Application Server – WebLogic Server IDE für Fusion- und Fusion Middleware-Projekte • JEE-Anwendungsentwicklung • UML-Modellierung • Entwicklung von Java-Clients, Applets, JSP, JSF, Servlets, Java Beans, EJBs, ... • Unterstützung für Open Source Software (Struts, Ant, JUnit, ...) • kostenfrei Entwicklung mit Oracle ADF Develop Expose Access Business Service Model View Oracle ADF - Business Services • Verantwortlich für Persistenz • O/R Mapping • Abfragen/DML • Durchführen der Validierung • Daten-Validierung • Geschäftslogik • Wahl der Implementierung EJB 3.0 TopLink /Java Beans EJB Session Beans ADF Business Components Web Services … ADF Business Components JEE-Framework zur Erstellung von Geschäftskomponenten Persistenz-Schicht Präsentation Kapselung der Geschäftslogik Implementierung von J2EE-Design Pattern Universeller Clientzugriff auf die gleiche Logik Auftrag Kunde Wichtiger Auftrag Auftrag Kunde seit 1999 als Framework „Business Components for Java“ (BC4J) im Einsatz (E*Business Suite) viele Ähnlichkeiten zu Oracle Forms Auftrag Kunde ADF Business Components UI HR_am EmpDept_vo Dept_eo DEPT DeptSals_vo 1 * Emp_eo EMP EmpMgr_vo Application Module Class ‘Container’ 3. Stufe der Abstraktion View Object Classes Select Statement 2. Stufe der Abstraktion Entity Obj. Classes Datenbank Mapping zu Objekte Relationen Relationale 1. Stufe d. Abstrakt. Welt Cache Layer Oracle ADF - Model • ADF Databinding (JSR-227) • Abstraktionsschicht des Modells • generisches Data Binding im User Interface • unabhängig, von welchem Business Service die Daten kommen • Business Services können einfach augetauscht werden Business Components Web Services Model Toplink EJB Java Classes Oracle ADF – View (User Interface) • Entwicklung der Präsentationsschicht • visuell (WYSIWYG) • deklarativ • Wahl der Implementierung ADF Swing JSP JSP / Struts Java Server Faces (JSF) Demonstration Entwicklung mit Oracle ADF Agenda • Warum Oracle ADF ? • Was ist Oracle ADF ? • Wie entwickle ich mit Oracle ADF ? • Typische Herausforderungen der Anwendungsentwicklung • Weiterführende Informationen <Insert Picture Here> Typische Herausforderungen (1) • Integration unterschiedlicher Business Binding Layer Services • EJB/JPA, ADFbc, Web Services, POJOs, … • Interaktive Benutzer-Oberflächen im Web • Verwaltung des Session-Status • Anpassungsmöglichkeiten der Applikation Rich ClientKomponenten Task Flows Metadata Services • Varianten der Applikation (Customizing) • Personalisierung • Datenänderungen im Backend in der Oberfläche sichtbar machen Active Data Service Typische Herausforderungen (2) • Unterstützung unterschiedlicher Endgeräte ADF mobile • Desktop, PDA, Mobile • Integration von Desktop-Anwendungen (MS Office) • Durchgängige Implementierung von Anwendungssicherheit • Integration mit Portal/PortletTechnologien (JSR: 168, 227) • Wiederverwendbare Seitenvorlagen • Unterstützung für Skinning ADFdi ADF Security Oracle WebCenter Templates Skins Integration unterschiedlicher Business Services ADF Data Binding (ADF Model) • zusätzliche Abstraktionsschicht vereinheitlicht den Zugriff auf unterschiedliche Business Service • deklaratives Data Binding (JSR 227) Komponenten der ADF Model-Schicht • Data Controls beschreiben das Public Interface eines Business Service • Bindings verbinden UI-Komponenten mit Daten oder Aktionen • Data Controls und Bindings werden mit Hilfe von XML-Metadaten definiert Bindings Bindings Data Control Business Service Data Binding - Zusammenhänge ADF Data Controls • Data Control Palette • visuelle Repräsentation des Business Service mit • Methoden • Parametern und Ergebnissen • Attributen • Collections • vordefinierten Operationen • ermöglicht ein automatisches Data Binding für alle Business Services Data Binding und Expression Language • Teil des Standards für JSP Standard Tag Library (JSTL) • ADF nutzt Expression Language (EL) zur Beschreibung des Data Binding • EL Ausdrücke werden zur Laufzeit ausgewertet, um die anzuzeigenden Daten zu bestimmen • ADF EL Ausdrücke haben typischerweise folgende Form: #{bindingVariable.BindingObject.propertyName} • Beispiel für eine Komponente inputText in einer JSF Page <af:inputText value="#{bindings.Ename.inputValue}” label="#{bindings.Ename.label}” required="#{bindings.Ename.mandatory}"> Expression Builder und Debugging • Editor zum Erzeugen von ELAusdrücken • EL-Ausdrücke können im DebugModus evaluiert werden Demonstration Unterschiedliche Business Services Entwicklung interaktiver Web-Oberflächen Java Server Faces (JSF) • Standard-JEE-Framework zur Generierung von Thin ClientBenutzeroberflächen • komponentenbasiert • nicht nur HTML-Seiten • Durch den Java Community Process definiert J2EE 1.4 JSF 1.1 JEE 5.0 JSF 1.2 JEE 6.0 JSF 2.0 • Implementierungen • Referenz-Implementierung von SUN (RI) • freie Implementierungen (Apache MyFaces) • kommerzielle Implementierungen Java Server Faces (JSF) • Standard-JEE-Framework, das die Entwicklung von Benutzeroberflächen für Web-Anwendungen vereinfacht • JSF umfasst • APIs zur Darstellung von UI-Komponenten • eine Default-Gruppe von UI-Komponenten • die Fähigkeit, in zugehörigen Java-Klassen, den sogenannten Managed Beans, benutzerdefinierte UI-Logik hinzuzufügen • ein server-seitiges Ereignismodell • Seitennavigation • Standard-Entwurf sieht Unterstützung durch Tools vor Architektur einer JSF Applikation Mobile Render Kit PDA Faces Servlet Phone HTML Render Kit Browser Page Managed Beans UI Component Objects UI Component Methods UI Component Model/ ADF UI Component Oracle Fusion Developer Guide, Frank Nimphius/Lynn Munsinger, Seite 24) Java Server Faces (JSF) und Oracle • Oracle ist Primary Contributor für JSR-127 • Oracle verfügt über keine eigene JSF-Implementierung • Oracle verfügte mit UIX seit 2002 über eine ähnliche Technologie, die dann auf den Standard portiert wurde • Oracle ADF Faces enthalten über 150 Komponenten • Schenkung an Apache MyFaces (Projekt Trinidad) • Oracle leitet das Eclipse JSF Tools-Projekt http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/doc/FAQ.html Oracle ADF Faces • >100 User Interface-Komponenten • Weiterentwicklung von ADF UIX auf Basis der JSF APIs • Funktionalität • • • • • Partial-page Refresh Integr. Support für Internationalisierung automatische Sortierung verschiedene Skins Unterstützung für versch. Clients • Browser, PDA, Telnet • • Anpassbares Look & Feel (Skins) HTML-Komponenten (ADF 10.1.3) • Schenkung an Apache (Projekt Trinidad) • Rich Client-Komponenten (ADF 11g) • AJAX Rendering Kit 36 Rich Enterprise Applications Browser Client AJAX View Active Client Flash Mobile Client XHTML, WML, ASK (SMS) ADF Faces ADF Faces: Rich Client-Komponenten ADF Faces: DVT-Komponenten • grafische Komponenten - Data Visualization Tools Demonstration ADF Faces Komponenten Verwaltung von Transaktionen und Session Status Oracle ADF - Controller • Controller • Verwendung für Web- und mobile Anwendungen • Controller interpretiert Maus- und Tastatureingaben • Controller steuert die Navigation • Apache Struts • Populäres Open Source Controller Framework • Wird für JSP und UIX Seiten eingesetzt • Verliert an Bedeutung als Open Source-Produkt • • JSF Controller • Page Flow Control • Teil des Standards JEE 5 • ADF Faces Controller • Erweiterung des JSF Controllers Vorteile des Oracle ADF Controller • Erweiterung zum JSF Standard Page Flow • zusätzliche Funktionen • Wiederverwendbarkeit von Seiten • Ausführung von Code in einem Ablauf (Task Flow anstelle von Page Flow) • Verwaltung des Session State • Exception und Transaction Management • Sicherheit • Flow Control • ADF Task Flow wird im Task Flow Diagramm definiert • Erzeugen von Managed Beans möglich • Task Flow Templates (zB. für Exception Handling) ADF Task Flow • Aktivitäten (View) und Navigationsregeln, die den Page Flow einer Applikation steuern • Unbounded Taskflow • für Menümodelle und als Top Level Task Flow • Bounded • • • • • • • • • ein definierter Einstiegspunkt und mehrere Austiegspunkte definierte Grenzen eigener Memory Scope Savepoints innerhalb des Flows möglich konditionales Routing möglich deklaratives Transaction Management deklarativer Back Button Support Input/Output Parameter Möglichkeit von “Trains” Bounded Task Flow - Beispiel addCust editRecord createCustomer Bounded Task Flow Wiederverwendbare Task Flows - Beispiel Bounded Task Flow Task Flow Private Implementation and State Page region Deklarativer Controller Transaction (New or Inherit) Back Button Support Save for Later Bookmarkable Declarative Trains Declarative Commit / Rollback Demonstration ADF Task Flows Anpassungsmöglichkeiten der Applikation Arten von Anpassungen • Seeded Customization • Design Time • durch Entwickler (Customizer) • JDeveloper Customization Role • Personalisierung • Runtime • durch den Anwender • Design Time@Runtime • Design Time • durch Administratoren • Beispiel: WebCenter Composer Oracle Metadata Services (MDS) • • • • Framework in ADF zur Implementierung von Anpassungen Verwendung einer einzigen Basis-Applikation Anpassungen werden auf die Basis-Applikation angewendet Anpassungen werden erzeugt • zur Design-Zeit im JDeveloper (Seeded Customization) • zur Laufzeit durch den Anwender (Personalisierung, Web Center) • alle Anpassungen basieren auf XML-Dateien von ADF • Anpassungen werden in einem Metadaten-Repository (File-based oder Datenbank) gespeichert und zur Laufzeit mit der Basis-Applikation zusammengeführt • die Basis-Applikation kann ohne Einfluss auf die Anpassungen geändert werden Was kann angepasst werden • • • • • ADF Business Components ADF Model ADF Controller ADF View ADF Library Artefakte Wie Anpassungen ausgeführt werden • Anpassungen können ausgeführt werden • für alle Benutzer • in Abhängigkeit von einem Kriterium (Site, …) • dynamisch in Abhängigkeit von bestimmten Kriterien • für den Benutzer • für die Organisation, zu der der Benutzer gehört • aktuelle Tageszeit • Browser Locale • … im Prinzip alles, was mit Java möglich ist • Anpassungen sind eine Reihe von Instruktionen, die die Metadaten der Applikation modifizieren Konfiguration der Customization • Customization Class • Interface, das von MDS benutzt wird, um die Anpassung zu ermitteln • vordefinierte Customization Classes (User, Role, Site) • es können eigene Customization Classes geschrieben werden • Customization Layer und Customization Value • • • • Customization Layer pro Customization Class Customization Layer entspricht einer “Dimension”, z.B. Country Customization Value entspricht einer Instanz (zB. Germany, France) Definition in <jdeveloper_home>/jdev/CustomizationLayerValues.xml • Konfiguration des MDS (<application>/.adf/adf-config.xml) • zulässige Anpassungen (Columns, Komponenten, …) • verwendete Customization Classes Vorbereitete Anpassungen … Application View Controller ADF Model ADF BC Base App Layer 1 Layer 2 Layer 3 Layer 4 Layer 5 Layer 6 Layer 7 Layer 8 … und die Applikation des Benutzers User Customization • Anpassungen, die der Benutzer zur Laufzeit ausführt • ADF Faces Change Persistence Framework • Varianten • für die Dauer der Session • Speicherung der Änderung in Session Variablen • persistent • Speicherung im MDS Seeded Customization • Anpassungen, die der Entwickler zur Design Time ausführt • Schritte • Starten des JDeveloper mit der Customization Role • Customization Context setzen (Layer und Value auswählen) • alle Änderungen werden in speziellen Change Documents gespeichert (Verzeichnisstruktur) • Deployment einer MAR-Datei (Metadata Archive) • Ausführung zur Laufzeit in der Reihenfolge der <cust-config> Anpassungen per MDS + + Metadata Repository File or DB Base Document User1’s User Customization Laura’s Page Site Customization No User Customization MDS Customization Engine John’s Page Demonstration ADF MDS Datenänderungen im Backend sichtbar machen ADF - Active Data Services (ADS) • Problemstellung • Änderung im Data Store sollen sofort in der Oberfläche sichtbar sein • Verwendung von HTTP (zustandsloses Protokoll) • sparsame Vewendung von Netzwerk-Ressourcen (Polling, Datenvolumen) Beispiel: RDBMS Change Notification Konsistenz bis zur GUI ADF - Active Data Services (ADS) • Integiertes Framework für Data Streaming • Java APIs und ADF Binding Support • Varianten • Polling • Long Polling • Push • Konfiguration • zentral in der adf-config.xml • für die ADF Faces-Komponenten • Push Updates: vom Server bis zum Browser ADS Architektur Agenda • Warum Oracle ADF ? • Was ist Oracle ADF ? • Wie entwickle ich mit Oracle ADF ? • Typische Herausforderungen der Anwendungsentwicklung • Weiterführende Informationen <Insert Picture Here> Begriffe & Kürzel Oracle Fusion Middleware Integriertes Portfolio aller MiddlewareProdukte von Oracle Rich Internet Applications / Rich Enterprise Applications • Web-Applikationen für den Einsatz inner- und außerhalb des Unternehmens • interaktive Oberflächen wie bei ClientServer-Applikationen Oracle ADF Kombination von Frameworks zur Entwicklung von Services und Oberflächen Oracle JDeveloper Entwicklungsumgebung (IDE) für Oracle ADF und SOA-Technologien SOA Service-orientierte Architektur Oracle Referenz Architektur Architekturrichtlinien der zufünftigen IT Landschaft Weiterführende Informationen • Oracle Application Development Framework (ADF) http://www.oracle.com/technology/products/adf • Oracle JDeveloper http://www.oracle.com/technology/products/jdev • Deutsche ADF Community http://www.oracle.com/de/community/adf • Oracle ADF Community auf XING https://www.xing.com/net/adfcomm/ • Google Group „ADF Methodology“ http://groups.google.com/group/adf-methodology Q&A 69