Endlich APEX verstehen! Peter Raganitsch CEO, FOEX GmbH Hier geht es zur Vortragsbewertung: http://bit.ly/2pfE5tW Vielen Dank! apex.doag.org Verstanden? • Body Level One • Body Level Two • Body Level Three • Body Level Four • Body Level Five www.tryfoexnow.com Endlich APEX verstehen www.tryfoexnow.com Architektur Data Schemas OracleAPEX Engine Oracle Database Browser MidTier ORDS=OracleRESTDataServices www.tryfoexnow.com DatabaseTier Architektur - Browser Beliebiger moderner Webbrowser in der jeweils aktuellen und vorherigen Major Version Im Falle IE bedeutet dies aber min. Version 11 www.tryfoexnow.com Architektur - Mid-Tier Empfohlen: ORDS auf WLS, Tomcat, Glassfish Legacy: Oracle HTTP Server mit mod_plsql Test: Embedded PL/SQL Gateway www.tryfoexnow.com Architektur - DB DB ab 11.2.0.4 (und XE 11g) Alle DB Features / Editionen On Premises, Cloud, Hybrid, … www.tryfoexnow.com Architektur - Verbindungen www.tryfoexnow.com Ist doch ganz einfach www.tryfoexnow.com oder? www.tryfoexnow.com Ja, denn APEX ist nur PL/SQL Code www.tryfoexnow.com HTP.P(‘<h1>Oracle APEX</h1>’); www.tryfoexnow.com Beispiel HTP.P www.tryfoexnow.com Beispiel HTP.P www.tryfoexnow.com Beispiel leere Anwendung www.tryfoexnow.com Beispiel leere Anwendung www.tryfoexnow.com Beispiel leere Anwendung www.tryfoexnow.com Ablauf Browser apex.oracle.com/ords/f?p=100 Webserver Database /ords/f?p=100 ORDS nimm DB-Connection aus Pool rufe Procedure “f” auf APEX Verarbeitung (Magic) lese htp-Buffer (HTML) Connection clear, zurück in Pool HTML Code verarbeiten und anzeigen (Render) sende HTML an Client Fertig Verbindung zu WS ist nun zu www.tryfoexnow.com Procedure fertig, zurück an Aufrufer Wichtige Erkenntnisse • Es besteht keine dauerhafte Verbindung vom Client zur DB • Bei jedem Aufruf wird eine andere DB-Connection verwendet • Die gesamte Verarbeitung läuft in der Datenbank ab • Der Ablauf gilt für alle APEX Operationen, z.B.: • Seite laden - Page Render • Seite speichern (Submit) - Page Processing • A JAX Calls: DA, apex.server, .. www.tryfoexnow.com Ein paar Beispiele www.tryfoexnow.com Praktische Demonstration www.tryfoexnow.com Freiwillige: 1) 2) 3) 4) Client Webserver Datenbank Request (Läufer) www.tryfoexnow.com Seite laden www.tryfoexnow.com Redirect www.tryfoexnow.com Dynamic Action (change) www.tryfoexnow.com Dynamic Action (page load) www.tryfoexnow.com Daten eingeben www.tryfoexnow.com Speichern www.tryfoexnow.com APEX Verarbeitung (f?p) • Welche Applikation? -> f?p=123 • Parsing Schema ermitteln • Session / Authentifizierung prüfen • Welche Seite? -> f?p=123:1 • Regionen, Items, Buttons, … der Seite ermitteln • Elemente mit Template HTML-Code verbinden www.tryfoexnow.com Debug zeigt alle Schritte www.tryfoexnow.com Liste von No-No’s • A JAX Calls on Page Load (Execute PL/SQL, Set Item mit (PL)SQL) • Mehrere A JAX Calls an einem Event • A JAX Calls bei Tastendruck (Key-Up/Down/Pressed) www.tryfoexnow.com Wie kann ich mir selbst helfen? www.tryfoexnow.com Links • https://apex.oracle.com • https://otn.oracle.com/apex • https://builtwithapex.com • https://apex.world • https://docs.oracle.com/database/apex-5.1/ • http://www.oracle.com/technetwork/developer-tools/rest-dataservices/overview/index.html • http://tinyurl.com/apexcommunity www.tryfoexnow.com Viel Spass mit APEX ! @PeterRaganitsch www.oracle-and-apex.com www.tryfoexnow.com Let’s connect: @FOEXplugins FOEX-gmbh FOEXplugins