APEX 5 Oliver Lemm DOAG Schulungstag 19.11.2015
Facts & Figures Technologie-orientiert Branchen-unabhängig Hauptsitz Ratingen 240 Beschäftigte Inhabergeführt 24 Mio. Euro Umsatz Gründung 1994 Zertifizierter Partner von Oracle, Microsoft und SAP Ausbildungsbetrieb Niederlassung Frankfurt am Main 2
über mich Oliver Lemm Seit 02.2007 bei der MT AG in Ratingen Junior Berater > Berater > Senior Berater > Competence Center Leiter APEX Diplom Angewandte Informatik an der Universität Duisburg-Essen Projektleiter, IT-Architekt und Entwickler beschäftigt sich seit 2007 mit Oracle Application Express und Oracle Datenbanken Blog Twitter http://oliverlemm.blogspot.de https://twitter.com/oliverlemm 3
Agenda 1. Developer Preferences & Developer SSO 2. Page Designer 3. Universal Theme, Theme Roller & Template Options 4. Neue & überarbeitete Komponenten 5. Supporting Objects & Static Files 6. Import & Export von Anwendungen und Workspaces 7. Neue Packages (APEX_JSON, APEX_ZIP) und Erweiterung der API 8. Deprecated, Desupported, Changed Behaviour 4
1. Developer Preferences & Developer SSO 5
Developer Preferences entwicklerspezifische Einstellungen Anwendung in neuem Tab ausführbar Bei Entwicklung von mehreren Anwendungen 1 Tab nutzbar 6
Developer Preferences Foto quadratisch sonst verzerrt Passwordänderung ohne neuen Login 7
Developer SSO Internal -> Manage Instance -> Security -> Authentication Control Entwickleraccounts mit LDAP besitzen kein initiales Passwort im Workspace Bei Application Express Account Authentifizierung muss im Workspace das Passwort gesetzt werden 8
Login mittels LDAP Beispiel mit MS AD > 9
Achtung: Vor LDAP Nutzung Entwickleraccounts migrieren! Aktuelle Entwickleraccounts: Oliver, LemmO, Olemm Neuer Account (via LDAP) oliver.lemm@mt-ag.com per Skript migrieren (oder händisch) BEGIN APEX_UTIL.SET_USERNAME( p_userid => APEX_UTIL.GET_USER_ID('OLIVER'), p_username => 'OLIVER.LEMM@MT-AG.COM'); END; Zurückstellen auf Standard Login über Workspace Accounts SQL>exec apex_instance_admin.set_parameter('apex_builder_authentication','apex'); 10
2. Page Designer 11
Tree View Grid Layout Toolbar Properties Gallerie 12
Tree View Rendering Objekte nach Reihenfolge sortieren vs. Objekte nach Type sortieren Kontextmenü abhängig von ausgewähltem Objekt Auswahl in der Tree View beeinflusst die Properties und das Grid Layout Attribute als zusätzliche Auswahl unter einem Element Mehrere Elemente auswählen und gleiche Eigenschaften ändern 13
Tree View Dynamic Actions Darstellung der Dynamic Actions Sortierung nach Type Page Load und Dialog Closed besonders erkennbar Create Opposite Action neu 14
Tree View Processing war in APEX 4 im mittleren Bereich AJAX Callbacks werden angezeigt 15
Tree View Shared Components Wurden vorher rechts in APX 4 dargestellt 16
Grid Layout Vorab Ansicht Zoom Funktion Maximierung Ausblenden der Objekte der Global Page / von leeren Positionen, Buttons und Items Verschieben oder Kopieren von Objekten, inklusive enthaltenen Objekten (nur 1 Ebene) 17
Grid Layout Messages Fehler in beliebiger Komponente werden dargestellt Fehler aus importierten Anwendungen werden nur bei Änderungen dargestellt Bei Klick direkt zum Fehler Speicherung der Seite nur mit behobenen Fehler möglich 18
Grid Layout Page Search Suche auf Seite ohne nachladen direkter Sprung zu Objekte per Klick 19
Grid Layout Help Je nach Auswahl 20
Gallerie Drag & Drop Markierung (gelb) im Layout wo ein Element ablegbar ist 21
Properties Je nach ausgewählter Komponente Menüoptionen Haupteigenschaften/Alle Eigenschaften anzeigen Alles ausklappen/zusammenklappen Auswahl von Gruppen Nicht alle Eigenschaften einer Komponente sofort enthalten Teils weitere Eigenschaften mittels Attributes in Tree View Weitere Eigenschaften wie Template Options mittels Modal Dialog 22
Properties Code Editor Code Editor mittels modalem Dialog Autocompletion Inline highlighting Query Builder Undo Funktion Validate Replace Anpasspar in Darstellung 23
Toolbar Auswahl der Seite direkt per Eingabe oder Modalem Dialog Sperren der Seite direkt möglich Undo/Redo (zwischen Speicherung) Komponenten hinzufügen Utilities Component View (evtl. Entfernung in der Zukunft) Team Development Feedback Shared Components Speichern / Speichern & Ausführen 24
Toolbar Utilities Seite löschen Advisor prüft auf Fehler, Deprecated Eigenschaften Listet die Seiten/Regionen auf welche mit Caching arbeiten bzw. Cache besitzen Übersicht zu Kennzahlen und Verknüpfung von User Interface Defaults Darstellung der letzten Änderungen (Achtung beim Export nicht enthalten) Export der Seite (Achtung bei Änderungen von anderen Seiten) Bearbeiten, Löschen, Seiteneigenschaften und Seitensperren über mehrere Seiten Link zum Bereich Utilities Seitengruppen Möglichkeit Optimieren an alten Anwendungen vorzunehmen 25
Page Designer Navigation per Tastatur vollständig möglich Umschalten zwischen Page Designer und Component View. Zurück mittels Klick auf 26
Page Designer Shortcuts 27
3. Universal Theme, Theme Roller & Template Options 28
Universal Theme Material Design Google Richtlinie Modern/Flach Minimalistisch Responsive Content steht im Fokus https://www.google.com/design/spec/ material-design/introduction.html 29
Universal Theme Responsive Design (Material Design) Grid Layout (nutzt jetzt DIV s statt TABLE) Navigation basiert auf Listen und kann verschachtelt werden Maximieren von Inhalten (z.b. Reports) Font Awesome Unterstützung Region Selector Sample Application vorhanden oder über https://apex.oracle.com/pls/apex/f?p=42 30
Templates Breadcrumb Button Button Button Icon Text Text with Icon 31
Theme Roller Analog zum jquerymobile Theme Roller für APEX Nur im Universal Theme vollständig nutzbar Anpassung mittels Color Wheel nur Spielerei Neben Farbanpassungen auch runde Ecken definierbar Zusätzlich eigenes CSS möglich Änderungen Live in Anwendung zu sehen 32
Template Options Aus ehemals mehreren Templates wird in APEX 5 ein Template Region mit Überschrift Region ohne Überschrift Region 100% width Region mit Rahmen Werden zu einem Template Mit den Options Header Border Width 33
Migration zum Universal Theme 1. Eine APEX 4.x Anwendung oder kleiner installieren 2. Falls 2-Level-Tabs vorhanden sind müssen diese erst auf 1-Level migriert werden. Dabei am besten Parent-Tabs entfernen und später wieder hinzufügen 3. Universal Theme der Anwendung hinzufügen 4. Switch Theme 1. Reset fixed Region Positions oder Reset all ausführen 2. Map Template Classes -> No 5. Danach Prüfung der Seiten 1. Ggf. Navigation muss auf Navigation Menu (Top oder Side) wechseln 2. Füllen Elemente mehr als die 12 Grid Flächen aus müssen diese angepasst werden 34
4. Neue & überarbeitete Komponenten 35
Modaler Dialog Page Link von anderer Seite wie bisher aufrufende Seite nicht änderbar durch Endbenutzer Kein direktes Ausführen des modalen Dialogs über Page Designer Non-Modal auch möglich (siehe Advisor) 36
Modaler Dialog Region Mechanik für Region nicht deklarativ Link Target URL Ziel Region mit Static ID versehen Aufruf mittels JavaScript javascript:openmodal( ID ); Ziel Region als Inline Dialog im Universal Theme Schließen mittels JavaScript javascript:closemodal() 37
Modaler Dialog im alten Theme Neues Page Template vom Typ Dialog Page 38
Modaler Dialog Im alten Theme Im Theme als default definieren 39
Modaler Dialog Chained: Mehrere Dialoge öffnen Dialoge Skalier- & Verschiebbar Basierend auf jquery UI Modale Dialoge realisiert als iframe http://api.jqueryui.com/dialog/ 40
Developer Toolbar Home, Application, Edit Page, Session, View Debug und Debug wie bisher Show Grid hebt die Darstellung in Layouts hervor Quick Edit im Vergleich zu vorher wird kein Link mehr reingeniert, sondern ähnlich wie im Firebug wird das Element hervorgehoben Nachteil ist dabei, dass man nicht im neuen Fenster ein Element bearbeiten kann Theme Roller zur Anpassung des Layouts aufrufbar während der Entwicklung Zahnrad Anpassung wo die Toolbar angezeigt wird und das ob Sie ausgeblendet wird 41
Autorisierung APEX 5 APEX 4.2
Autorisierung APEX 5.x APEX 4.x 43
Autorisierung Individuelle Parameter in Autorisierung auswertbar APP_COMPONENT_TYPE => APEX_APPLICATION_PAGE_ITEMS, APP_COMPONENT_ID => 32421432434 (APEX_ELEMENT_ID) APP_COMPONENT_NAME => ITEM_NAME 44
Autorisierung auth_pkg.can_access(pi_app_id => :APP_ID,pi_app_page_id => :APP_PAGE_ID,pi_app_component_type => :APP_COMPONENT_TYPE,pi_app_component_name => :APP_COMPONENT_NAME,pi_app_component_id => :APP_COMPONENT_ID,pi_app_user => :APP_USER); Spezifische Auswertung pro Komponente möglich Über ein einziges Autorisierungsschema Achtung Branches ohne Namen! 45
Applikationsprozesse 46
Textfield Deklaratives Entfernen von führenden und/oder abschließenden Leerstellen 47
Branches andere Anwendung als Ziel möglich mehr als 3 Elemente änderbar 48
Kalender Drag & Drop Verschiedene Ansichten monatlich Tagesweise Agenda Liste responsive 49
Interactive Reports Mehrere IR Regionen pro Seite Achtung bei Reset oder weiteren Funktionen IR durch ID unterscheiden! Modale Dialoge ersetzen Push Down Dialoge für Filter, Formatierung, Speicher, Exportieren, usw. Neue HTML5 Struktur höhere Bedienbarkeit und kompaktere Darstellung Filter bleiben sichtbar beim Scrollen Einfrieren der Spaltenüberschriften Barrierefreie Darstellung 50
Interactive Reports Weniger Blackbox (Style nutzbar) APEX_IR Package erweitert (Umgang mit mehreren Reports) Kompletter Code neu geschrieben Achtung bei bisherigen händischen Anpassungen & Plugins Plugin Source Display (aus Packaged App Interactive Reports) gut für IR Analyse Vollbild Funktion für IR 51
Interactive Reports Pivot Erstellen von Pivotisierten Daten als Endbenutzer Auswahl einer oder mehrerer Spalten als Pivot Spalten Summieren der Spaltenwerte, Zuweisen von Labels und Formatierungsmasken 52
Navigationsmenüs Alternative zu Tabs und Navigationseinträgen Navigationsmenü kann seitlich oder oberhalb angezeigt werden Unterstützung von Menü-Hierarchien 53
Mobile Komponenten Einbindung des aktuellen jquerymobile 1.4.5 Neues mobile Theme 51 (Flat Look, 2 Theme Swatches) Neue Responsive Report Komponenten Reflow Table Column Table Panels für das List basierte Navigations Menu Custom Panels 54
Mobile Komponenten Column Toggle Reflow Table 55
Mobile Theme vs Universal Theme Mobile jquery Mobile vorhanden Lightweight Reflow Table, Column Toggle Touch optimiert Mobile Dynamic Actions (swipe ) Universal Theme Kein jquery Mobile Alle jquery Komponenten enthalten Interactive Reports Maus & Tastatur Template Options Form-Felder unterstützen spezifische Eingabeformen jquery Mobile Theme Roller APEX Theme Roller 56
5. Supporting Objects & Static Files 57
Supporting Objects
Static Files Logische Zusammenfassung Anwendung & Workspace Dateien gepackt/gezippt hochladbar Verzeichnis beim Upload definierbar pro Aktualisierung der Dateien neue Versionsnummer im Pfad APEX 4.x APEX 5
Static Files #APP_IMAGES#profil.jpg dient als Platzhalter und wird übersetzt: my_home/r/80810/files/static/v9/workshop/bilder/neu/profil.jpg /v9/: Beim hochladen der gleichen Datei, wird versioniert Und Browser-Cache gelöscht Löschen von allen Dateien in einem Verzeichnis nicht möglich Achtung beim Versionieren der Anwendung, dort sind immer alle Dateien enthalten 60
Statische Dateien In Anwendung Einfacher zu importieren & exportieren Mit APEX 5 direkt integriert beim Export & Import Caching Problematik mit APEX 5 geringer (Versionierung) Performance oft vernachlässigbar Auf Betriebssystem Dateien müssen außerhalb von APEX bereitgestellt werden Automatisierte Bereitstellung schwierig Performance besser Caching & Kompression über Apache besser Pflege einfacher APEX Anwendung selber ist kleiner und besser versionierbar 61
6. Import & Export von Anwendungen und Workspaces 62
Export Application Statische Dateien immer Bestandteil des Im/Exports IDs pro Komponente können gleich exportiert werden Statische Dateien nicht mehr einzeln exportierbar / deprecated importierbar 63
Export Workspace Exportiert alles (z.b.) Mails & Mail Log Users & Groups Preferences Workspace Files 64
7. Neue Packages & API 65
jquery jquery 2.1.3 Achtung Auswirkung auf Custom JS Code jquery UI 1.10.4 Dadurch Design Änderungen im Datepicker jquery Mobile 1.4.5 66
Packages APEX_JSON Erzeugen von JSON to_xmltype( l_json ); open_object(); write('element','wert'); close_object(); open_array('eigenschaften'); close_array(); close_all(); Verarbeiten von JSON parse( l_json ); l_val := apex_json.get_varchar2( p_path => Element ); 67
Packages APEX_JSON JSON erzeugen begin apex_json.initialize_clob_output; apex_json.initialize_output(p_http_header => false); apex_json.open_object(); apex_json.write('item1','value1'); apex_json.open_array('attributes'); apex_json.open_object(); for i in 1..3 loop apex_json.write('attr' i, i); end loop; apex_json.close_object(); apex_json.close_array(); apex_json.write('extradata','more to come'); apex_json.close_all(); dbms_output.put_line(apex_json.get_clob_output); end; { "Item1":"value1","Attributes":[ { "Attr1":1,"Attr2":2,"Attr3":3 } ],"ExtraData":"More to come" } 68
Packages- APEX_JSON JSON parsen declare l_json varchar2(32767) := '{"empno":333, "empname":"tom", "empsal":3000}'; begin apex_json.parse( l_json ); htp.prn( apex_json.get_number( p_path => 'empno' )); htp.prn( apex_json.get_varchar2( p_path => 'empname' )); end; 333 Tom https://docs.oracle.com/cd/e59726_01/doc.50/e39149/apex_json.htm#aeapi29635 69
Packages APEX_SPATIAL CHANGE_GEOM_METADATA Procedure CIRCLE_POLYGON Function DELETE_GEOM_METADATA Procedure INSERT_GEOM_METADATA Procedure INSERT_GEOM_METADATA_LONLAT Procedure POINT Function RECTANGLE Function (in 4.2.5 technisch aufgenommen, jetzt dokumentiert) 70
Packages APEX_ZIP ADD_FILE FINISH GET_FILE_CONTENT GET_FILES APEX_LDAP Search => Suchanfragen mittels PL/SQL fürs LDAP definieren (Community Tip vorhanden) 71
Packages APEX_UTIL feedback_enabled return boolean -> Ist Feedback aktiv oder nicht? reset_password -> eigene Passwordrücksetzung einbauen prepare_url -> Funktion wurde erweitert zur Unterstützung von Dialogen und Anzeige von Fehlern APEX_PAGE get_url => mittels Parameter einfacher die APEX URL erzeugen get_page_mode => NORMAL, MODAL oder NON_MODAL APEX_ESCAPE JSON => Anführungsstriche können einfach escaped werden Regexp => Bindestriche und weitere Sonderzeichen werden nicht interpretiert 72
API sys_context sys_context für APEX Sessionvariablen (schneller und entspricht anderen Sessionparameter innerhalb einer Datenbanksession) anstatt v( APP_USER ) select sys_context( APEX$SESSION, app_user ) from dual Dadurch sind die Sessionvariablen auch in Views nutzbar 73
API Item Handling &P1_ITEM. Syntax auch für Spalten, List View und weiteren Stellen möglich #P1_ITEM# wird weiterhin interpretiert soll aber durch &-Syntax abgelöst werden &P1_ITEM!HTML. => apex_escape.html &P1_ITEM!ATTR. => apex_escape.html_attribute &P1_ITEM!JS. => apex_escape.js_literal(,null) &P1_ITEM!RAW. => unescaped &P1_ITEM!STRIPHTML. => strip tags und apex_escape.html Neue Substitution Variable APP_PAGE_ALIAS 74
8. Deprecated, Desupported & Changed Behaviour 75
Changed Behaviour Item Handling Elemente mit Read Only können nicht durch Dynamic Action angepasst werden -> Fehler! Anordnung der Elemente kann zu Fehlern führen, dass die Seite nicht gerendert werden kann (maximal Anzahl von 12 Spalten) Elemente heißen anders bzw. der Name wird vom Type getrennt Vorher Select List SQL Query Nachher Name Select List und Type SQL Query 76
Deprecated Features Region Classic Tree SVG Charts Tabular Form Date Picker (Classic) Item Date Picker (Classic) Stop and Start Grid Layout 77
Deprecated Features WWV_FLOW_FILES -> APEX_APPLICATION_TEMP_FILES Automatisches Löschen nach Request Kein permanentes Speichern in APEX eigenen Tabellen mehr Package APEX_PLSQL_JOB Dynamic Actions DOM fällt weg Htmldb_get -> apex.server Umsteigen auf neue Logik für AJAX Aufrufe 78
Desupported Keine IE6 Unterstützung mehr Item: Textfield with Calculate PopUp entfällt Elemente werden als Textfields gerendert Flash 3 Charts entfallen Automatisches Update zu aktuellen Anycharts 79
@OliverLemm Vielen Dank! http://oliverlemm.blogspot.de/ http://de.linkedin.com/in/oliverlemm https://www.xing.com/profile/oliver_lemm