APEX ‐ Applikationen im Expressverfahren erstellen Denes Kubicek Vorstellung Denes Kubicek Dipl. oec. Denes Kubicek, selbstständiger Unternehmensberater 5 Jahre Abteilungsleiter in Logistik, Auftragsbearbeitung, Einkauf 7 Jahre Erfahrung als Abteilungsleiter IT im internationalen Umfeld 12 Jahre Erfahrung mit Oracle – seit 6 Jahren im Hauptfokus Selbstständig seit Mai 2007 mit dem Fokus auf APEX und Oracle Datenbanken Eigener Blog – http://deneskubicek.blogspot.com Denes Kubicek Seite 1 APEX - Applikationen im Expressverfahren erstellen Vorstellung Denes Kubicek Oracle APEX und XE in der Praxis Erschienen am 21.12.2009 Autoren: Denes Kubicek Jens‐Christian Pokolm Dietmar Aust Denes Kubicek Seite 2 APEX ‐ Applikationen im Expressverfahren erstellen Vorstellung Denes Kubicek Expert Oracle Application Express Erschienen am 25.05.2011 Charity Projekt für Carl Backstrom und Scott Spadafore (verstorbene Mitglieder aus dem APEX Team) Autoren: Denes Kubicek Dietmar Aust Denes Kubicek Doug Gault Dimitri Gielis Roel Hartman Michael Hichwa Sharon Kennedy… Seite 3 APEX - Applikationen im Expressverfahren erstellen Vorstellung Denes Kubicek Oracle Apex Entwickler des Jahres 2008 Denes Kubicek Seite 4 APEX - Applikationen im Expressverfahren erstellen Vorstellung Denes Kubicek Oracle ACE Director Denes Kubicek Seite 5 APEX - Applikationen im Expressverfahren erstellen Vorstellung Denes Kubicek APEX Advisory Board Member https://apex.oracle.com/pls/apex/f?p=55447:1 Denes Kubicek Seite 6 APEX - Applikationen im Expressverfahren erstellen Vorstellung Denes Kubicek Denes Kubicek APEX und Oracle PL/SQL Projekte Anbindung APEX ‐ eBusiness Suite 11g bei Synventive GmbH Interseroh AG und ALBA ‐ Angebotserfassungsysteme Siemens AG Interne Anwendungen T‐Systems SAP und Apex – mehrere Projekte T‐Shop Interne Applikationen BASF Interne Applikationen Postbank mehrere Projekte Einige Kunden im Ausland (Australien, USA und Luxemburg) Interne Schulungen (Oracle und Apex) für viele Unternehmen Seite 7 APEX - Applikationen im Expressverfahren erstellen Vorstellung Denes Kubicek Zu erreichen unter [email protected] training@opal‐consulting.de Denes Kubicek Seite 8 APEX - Applikationen im Expressverfahren erstellen Agenda Denes Kubicek RAD – Was kann APEX und was kann es nicht? APEX Komponenten – Übersicht Web Browser ist alles, was man für APEX benötigt APEX Listener APEX und Excel Import APEX und Web‐Services APEX Plugins und Dynamic Actions APEX Entwickler – Skills Seite 9 APEX - Applikationen im Expressverfahren erstellen RAD – Was kann APEX und was kann es nicht? APEX wird häufig als eine gute Alternative für Java ins Gespräch kommen Die Gründe dafür sind die Zeiten, die man für die Entwicklung benötigt Dadurch ist die Erwartungshaltung falsch – es wird erwartet, dass APEX auf die gleiche Art und Weise entwicklelt und Deployed wird, wie Java Anwendungen Merge und SVN sind die populärsten Begriffe APEX Anwendungen können nicht „gemerged“ werden Denes Kubicek Seite 10 APEX - Applikationen im Expressverfahren erstellen RAD – Was kann APEX und was kann es nicht? APEX ist kein Allheilmittel und kann nicht alles ersetzen APEX ist datenbankzentrisch und lebt in der Datenbank Die Vorteile davon sind: Sicherheit im Bezug auf die Daten und Entwicklungsergebnisse Die Möglichkeit alle Datenbankfeatures zu nutzen: Oracle Text Oracle Spatial Data Encryption VPD und viele andere Features Denes Kubicek Seite 11 APEX - Applikationen im Expressverfahren erstellen RAD – Was kann APEX und was kann es nicht? Bei der Entwicklung von APEX Anwendungen müssen folgende Punkte berücksichtigt werden: der Programmcode wird in Packages ausgelagert die Anwendung benutzt die Funktionen und Prozeduren kein Code wird direkt in die Anwendung geschrieben der Code ist formatiert und gut leesbar die einzelnen APEX Komponenten werden „funktionsgerecht“ eingesetzt – eine Dynamic Action wird z.B. das tun, worür sie gedacht wurde Denes Kubicek Seite 12 APEX - Applikationen im Expressverfahren erstellen RAD – Was kann APEX und was kann es nicht? Was kann APEX sehr gut? Alles, was in der HTML Welt entwickelt werden kann bzw. Sinn macht Diese Technologie entwickelt sich immer weiter und erschließt immer mehr Möglichkeiten durch: Bessere Browser und support für den HTML 5 Schnelleres Internet Neue Komponenten (jQuery) Denes Kubicek Seite 13 APEX - Applikationen im Expressverfahren erstellen RAD – Was kann APEX und was kann es nicht? Performance ist kein Thema – APEX ist immer so schnell, wie die darunterliegende Datenbank die Anzahl der Benutzer, die man mit einer Anwendung bedient spielt keine Rolle die Grösse einer Anwendung kennt keine Limits APEX hat sich weiterentwickelt und ist nicht mehr nur ein Ersatz für MS Access sondern viel mehr Denes Kubicek Seite 14 APEX - Applikationen im Expressverfahren erstellen APEX Komponenten ‐ Übersicht Application Builder Database Applications Websheets Packaged Applications SQL Workshop Object Browser SQL Commands Viele Utilities Team Development Administration Denes Kubicek Seite 15 APEX - Applikationen im Expressverfahren erstellen Web Browser ist alles, was man für APEX benötigt APEX Entwicklung benötigt nur einen guten Browser Firefox ist und bleibt die erste Wahl Chrome kann auch benutzt werden Internet Explorer muss zum Testen genutzt werden da noch viele Firmen IE einsetzen IE9/10 ist nicht für eine ernsthafte Entwicklung geeignet obwohl es etwas schneller ist als Firefox oder Chrome Denes Kubicek Seite 16 APEX - Applikationen im Expressverfahren erstellen Web Browser ist alles, was man für APEX benötigt Firefox hat die grösste Anzahl an Extentions Webanwendungen benötigen entsprechende Tools, mit denen man diese testen und weiterentwickeln kann Die wichtigsten Extentions: Firebug Webdeveloper Toolbar Measureit Colorzilla Denes Kubicek Seite 17 APEX - Applikationen im Expressverfahren erstellen Web Browser ist alles, was man für APEX benötigt Denes Kubicek Seite 18 APEX - Applikationen im Expressverfahren erstellen APEX Listener http://docs.oracle.com/cd/E37099_01/doc/doc.20/e25066/in stall.htm#CHDIDHCD APEX Listener 2.0 hat kein Interface für die Verwaltung Es wird über die Komandozeile verwaltet oder über SQL Developer Kann nur mit der Datenbank 11g und höher verwendet werden Denes Kubicek Seite 19 APEX - Applikationen im Expressverfahren erstellen APEX Listener Die Konfiguration kann entweder: als APEX Listener Standalone erfolgen oder in Kombination mit einem der folgenden Server: Oracle Weblogic Oracle Glasfish OC4J Container Denes Kubicek Seite 20 APEX - Applikationen im Expressverfahren erstellen APEX Listener WICHTIG! Nach der Installation von APEX unbedingt @apex_rest_config.sql ausführen Denes Kubicek Seite 21 APEX - Applikationen im Expressverfahren erstellen APEX Listener Schritt 1: Konfiguration von APEX Listener java ‐jar apex.war configdir C:\apex_listener (Konfigurationslokation) Images unter C:\apex_listener\images kopieren, falls Standaloneoption gewählt wird. Ansonsten werden Images für einen der Webserver konfiguriert java ‐jar apex.war standalone ‐‐apex‐images C:\apex_listener\images (für Standalone Konfiguration) java ‐jar apex.war (für die Konfiguration mit einem Webserver) Denes Kubicek Seite 22 APEX - Applikationen im Expressverfahren erstellen APEX Listener Denes Kubicek Seite 23 APEX - Applikationen im Expressverfahren erstellen APEX Listener Schritt 2: Parametereingabe Databaseserver Port SID APEX_PUBLIC_USER / Passwort APEX_REST_PUBLIC_USER / APEX_LISTENER User Passwort Konfiguration beenden oder Standalone ausführen Denes Kubicek Seite 24 APEX - Applikationen im Expressverfahren erstellen APEX Listener Denes Kubicek Seite 25 APEX - Applikationen im Expressverfahren erstellen APEX Listener Schritt 3: Konfiguration des Zugriffs über SQL Developer java ‐jar apex.war user adminlistener "Listener Administrator" ADMINLISTENER Benutzerpasswort eingeben Authentifizierung über HTTPS ist default. Um diese auszuschalten muss die defaults.xml Datei unter dem Konfigurationspfad (C:\apex_listener) editiert und <entry key="security.verifySSL">false</entry> vor dem </properties> Tag eingefügt werden Denes Kubicek Seite 26 APEX - Applikationen im Expressverfahren erstellen APEX Listener Denes Kubicek Seite 27 APEX - Applikationen im Expressverfahren erstellen APEX Listener Denes Kubicek Seite 28 APEX - Applikationen im Expressverfahren erstellen APEX Listener Denes Kubicek Seite 29 APEX - Applikationen im Expressverfahren erstellen APEX Listener Schritt 4: Konfiguration von Glasfish http://docs.oracle.com/cd/E37099_01/doc/doc.20/e2506 6/install.htm#CHDIDHCD Denes Kubicek Seite 30 APEX - Applikationen im Expressverfahren erstellen APEX und Excel Import APEX Listener kann Exceldateien lesen Auch Umlaute werden richtig verstanden Ein Setup ist relativ einfach Kein Speichern als CSV notwendig APEX kann mehrere Excel‐Blätter importieren und deuten Denes Kubicek Seite 31 APEX - Applikationen im Expressverfahren erstellen APEX und Excel Import Ein File‐Browse‐Element auf der Seite erstellen Denes Kubicek Seite 32 APEX - Applikationen im Expressverfahren erstellen APEX und Excel Import Ein Button mit der ID XLS2COLLECTION auf der Seite erstellen (die ID ist wichtig – wird als REQUEST benutzt): Denes Kubicek Seite 33 APEX - Applikationen im Expressverfahren erstellen APEX und Excel Import defaults.xml in dem Konfigurationsverzeichnis von APEX Listener anpassen und folgende vier Zeilen hinzufügen – den Listener danach neu Starten: <entry <entry <entry <entry Denes Kubicek key="apex.excel2collection">true</entry> key="apex.excel2collection.onecollection">true</entry> key="apex.excel2collection.name">EXCEL_COLLECTION</entry> key="apex.excel2collection.useSheetName">true</entry> Seite 34 APEX - Applikationen im Expressverfahren erstellen APEX und Excel Import Einen Bericht auf der Seite erstellen mit der folgenden SQL: Denes Kubicek Seite 35 APEX - Applikationen im Expressverfahren erstellen APEX und Excel Import DECLARE v_column VARCHAR2 (4000); v_sql VARCHAR2 (4000); v_length_0 NUMBER; v_length_1 NUMBER; v_length_2 NUMBER; BEGIN FOR c IN (SELECT c002 || ':' || c003 || c006 || ':' || c007 || c010 || ':' || c011 FROM apex_collections WHERE LOOP v_column := c.column_title; END LOOP; || ':' || c004 || ':' || c005 || ':' || ':' || c008 || ':' || c009 || ':' column_title collection_name = 'P2_UPLOAD' AND seq_id = 1) v_column := RTRIM (v_column, ':'); v_length_1 := LENGTH (v_column); v_length_2 := LENGTH (REPLACE (v_column, ':')); v_length_0 := (v_length_1 - v_length_2) + 1; v_sql := 'SELECT '; FOR d IN 1 .. v_length_0 LOOP v_sql := v_sql || 'c' || LPAD (d + 1, 3, '0') || ', '; END LOOP; v_sql := RTRIM (v_sql, ', '); v_sql := v_sql || ' FROM apex_collections WHERE collection_name = ''P2_UPLOAD'' AND seq_id > 1 AND c004 IS NOT NULL'; RETURN v_sql; EXCEPTION WHEN OTHERS THEN RETURN 'SELECT ' || 1 || ' error FROM DUAL WHERE 1 = 2'; END; Denes Kubicek Seite 36 APEX - Applikationen im Expressverfahren erstellen APEX und Excel Import Report Attributes > Headings Type > PL/SQL DECLARE v_column VARCHAR2 (4000); BEGIN FOR c IN (SELECT c002 || ':' || c003 || ':' || c004 || ':' || c005 || ':' || c006 || ':' || c007 || ':' || c008 || ':' || c009 || ':' | c010 || ':' || c011 column_title FROM apex_collections WHERE collection_name = 'P2_UPLOAD' AND seq_id = 1) LOOP v_column := c.column_title; END LOOP; v_column := RTRIM (v_column, ':'); RETURN v_column; EXCEPTION WHEN OTHERS THEN RETURN NULL; END; Denes Kubicek Seite 37 APEX - Applikationen im Expressverfahren erstellen APEX und Excel Import Ein Excel‐Sheet erstellen und hochladen: Denes Kubicek Seite 38 APEX - Applikationen im Expressverfahren erstellen APEX und Excel Import Nach dem Upload sieht der Bericht wie folgt aus: Denes Kubicek Seite 39 APEX - Applikationen im Expressverfahren erstellen APEX Deployment Die empfolene Vorgehensweise, wenn die Entwicklung auf Test oder Produktion geht ist die skriptbasierte Installation durchzuführen ‐ Komandozeile Die Skripte umfassen sowohl DML als auch DDL und die Anwendungsskripte Denes Kubicek Seite 40 APEX - Applikationen im Expressverfahren erstellen APEX Deployment Deployment‐Skript Denes Kubicek Seite 41 APEX - Applikationen im Expressverfahren erstellen APEX Deployment Ihre DBA’s müssen nicht wissen, wie man APEX installiert Installation erfolgt durch einen Benutzer – SYS as SYSDBA Die Installation der übersetzten Anwendungen ist dadurch problemlos und es müssen keine Eingriffe nach der Installation erfolgen Das Testen der Installation kann jederzeit in einer Integrationsumgebung erfolgen Das verkürzt die Zeit, die für einen reibungslosen Übergang zwischen der Entwicklung, Test und Produktion Geeignet für die Umgebungen in denen die Anwendungen nicht einmal entwickelt und profuktiv gesetzt werden sondern dort, wo die Entwicklung fortlaufend ist Denes Kubicek Seite 42 APEX - Applikationen im Expressverfahren erstellen APEX Deployment Deployment‐Skript – readme.txt IMPORTANT: Prior to the installation set the NLS_LANG to GERMAN_GERMANY.AL32UTF8. This is different for C-Shell or K-Shell/Bash. On the OS level do the following: Bourne or Korn shell: NLS_LANG=GERMAN_GERMANY.AL32UTF8 export NLS_LANG C shell: setenv NLS_LANG GERMAN_GERMANY.AL32UTF8 Windows: set NLS_LANG=GERMAN_GERMANY.AL32UTF8 After that, you can proceed with the installation: 1. Start sqlplus and login as sys 2. run @install.sql 3. The installation will create a log file: apex_deployment_26c.log Denes Kubicek Seite 43 APEX - Applikationen im Expressverfahren erstellen APEX Deployment Deployment‐Skript – install.sql set define '&' spool install_apex_deployment_26c.log set verify off prompt prompt Run ccp_load_ddl.sql for the schema CCP_LOAD set define '&' ALTER SESSION SET CURRENT_SCHEMA = CCP_LOAD; @ccp_load_ddl.sql; set define '&' prompt prompt Run ccp_adm_ddl.sql for the schema CCP_ADM set define '&' ALTER SESSION SET CURRENT_SCHEMA = CCP_ADM; @ccp_adm_ddl.sql; Denes Kubicek Seite 44 APEX - Applikationen im Expressverfahren erstellen APEX Deployment Deployment‐Skript – install.sql set define '&' prompt prompt Switch User to SYS ALTER SESSION SET CURRENT_SCHEMA = SYS; set define '&' prompt prompt Install Application 900 @f900.sql CCP_OC; set define '&' prompt prompt Install Application 1901 @f1901.sql CCP_OC; set define '&' prompt prompt Recompile Schema @?/rdbms/admin/utlrp prompt prompt End of Installation spool off Denes Kubicek Seite 45 APEX - Applikationen im Expressverfahren erstellen APEX Deployment Nachdem die DDL und DML Skripte fertig gestellt wurden, kann die Anwendung (primäre Anwendung und Übersetzte Versionen) exportiert werden Zwei Änderungen an der Exportdate müssen durchgeführt werden Denes Kubicek Seite 46 APEX - Applikationen im Expressverfahren erstellen APEX Deployment APEX Installationsskripte set define '&' prompt prompt Switch User to SYS set define off set verify off set serveroutput on size 1000000 set feedback off WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK begin wwv_flow.g_import_in_progress := true; end; / ALTER SESSION SET CURRENT_SCHEMA = SYS; set define '&' prompt prompt Install Application 900 @f900.sql CCP_OC; Denes Kubicek Seite 47 APEX - Applikationen im Expressverfahren erstellen APEX Deployment APEX Installationsskripte begin -- Assumes you are running the script connected to SQL*Plus as the Oracle user APEX_040200 -- or as the owner (parsing schema) of the application. wwv_flow_api.set_security_group_id(p_security_group_id=>nvl(wwv_flow_application_install.get_work space_id,14513926354519974)); end; / declare v_sgi number; begin select TO_CHAR (HTMLDB_UTIL.find_security_group_id ('&1')) into v_sgi from dual; dbms_output.put_line(v_sgi); -- Assumes you are running the script connected to SQL*Plus as the Oracle user APEX_040200 -- or as the owner (parsing schema) of the application. wwv_flow_api.set_security_group_id(p_security_group_id => v_sgi); end; / set define off Denes Kubicek Seite 48 APEX - Applikationen im Expressverfahren erstellen APEX Deployment install.log als Ergebniss der Installation Wenn keine Fehler, Installation erfolgreich und kann freigegeben werden Denes Kubicek Seite 49 APEX - Applikationen im Expressverfahren erstellen APEX und Web‐Services Grants setzen: ALTER USER dkubicek GRANT CONNECT THROUGH apex_rest_public_user; Denes Kubicek Seite 50 APEX - Applikationen im Expressverfahren erstellen APEX und Web‐Services ACL nicht vergessen: DECLARE acl_path VARCHAR2 (4000); acl_id RAW (16); BEGIN SELECT acl INTO acl_path FROM dba_network_acls WHERE HOST = '*' AND lower_port IS NULL AND upper_port IS NULL; SELECT sys_op_r2o (EXTRACTVALUE (p.res, '/Resource/XMLRef')) INTO acl_id FROM xdb.xdb$acl a, path_view p WHERE EXTRACTVALUE (p.res, '/Resource/XMLRef') = REF (a) AND EQUALS_PATH (p.res, acl_path) = 1; DBMS_XDBZ.validateacl (acl_id); IF dbms_network_acl_admin.check_privilege (acl_path, 'APEX_040200', 'connect') IS NULL THEN dbms_network_acl_admin.add_privilege (acl_path, 'APEX_040200', TRUE, 'connect'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN dbms_network_acl_admin.create_acl ('power_users.xml', 'ACL that lets power users to connect to everywhere', 'APEX_040200', TRUE, 'connect'); dbms_network_acl_admin.assign_acl ('power_users.xml', '*'); END; / COMMIT ; Denes Kubicek Seite 51 APEX - Applikationen im Expressverfahren erstellen APEX und Web‐Services Webservices werden im SQL Workshop unter RESTfull Services konfiguriert Ein in APEX erstellter Webservice kann von allen Fremdsystemen benutzt werden, die RESTfull verstehen Alle APEX Anwendungen können diesen Webservice nutzen Denes Kubicek Seite 52 APEX - Applikationen im Expressverfahren erstellen APEX und Web‐Services Webservice – Definition Denes Kubicek Seite 53 APEX - Applikationen im Expressverfahren erstellen APEX und Web‐Services Parameter – Definition Denes Kubicek Seite 54 APEX - Applikationen im Expressverfahren erstellen APEX und Web‐Services Innerhalb einer Anwendung, die den Webservice nutzt, wird dieser wie dargestellt definiert: Denes Kubicek Seite 55 APEX - Applikationen im Expressverfahren erstellen APEX und Web‐Services Die Definition und die Funktionalitäten der Webservices in 4.2 wesentlich besser, einfacher und stabieler als in den früheren Versionen Denes Kubicek Seite 56 APEX - Applikationen im Expressverfahren erstellen APEX und Web‐Services Die Einbindung auf einer Seite mit Hilfe von dem Wizard ‐ Form and Report on Web Service: Denes Kubicek Seite 57 APEX - Applikationen im Expressverfahren erstellen APEX Plugins und Dynamic Actions Plugins (und Dynamic Actions) wurden mit der Version 4.0 von APEX vorgestellt Alles, was man früher aus Einzelteilen immer wieder bauen musste, wurde standardisiert Die meisten Plugins basieren auf jQuery Sourcen kombiniert mit dem PL/SQL Code Das Ziel ist feste Standarde einzuführen und die Redundanz vom Code zu minimisieren Denes Kubicek Seite 58 APEX - Applikationen im Expressverfahren erstellen APEX Plugins und Dynamic Actions Dynamic Actions wurden mit APEX 4.0 eingeführt Deklarative Definition der Prozesse auf der Client‐Seite Definition der Dynamic Actions per Wizard Wann? Aktion? Betroffene Elemente? Viele Möglichkeiten Eingebaute ‘Actions’ (Show / Hide, Add / Remove Class, Enable / Disable, Set Value, Execute JavaScript Code, Execute PL/SQL Code and more) Plug‐in ‘Actions’ (7 Oracle / 100+ nicht‐Oracle, und viele die dazu kommen) Denes Kubicek Seite 59 APEX - Applikationen im Expressverfahren erstellen APEX Plugins und Dynamic Actions Wir haben plötzlich jede Menge an Plugins, die wir in unserer Anwendung benutzen können Eine zentrale Seite für die Plugins: http://www.apex‐plugin.com/ Viele Anbieter: http://www.enkitec.com/products/plugins http://skillbuilders.com/Oracle‐APEX/APEX‐Consulting‐ Training.cfm?category=apex‐plug‐ins&tab=free‐plugin‐ downloads Denes Kubicek Seite 60 APEX - Applikationen im Expressverfahren erstellen APEX Plugins und Dynamic Actions Denes Kubicek Seite 61 APEX - Applikationen im Expressverfahren erstellen APEX Plugins und Dynamic Actions Denes Kubicek Seite 62 APEX - Applikationen im Expressverfahren erstellen APEX Plugins und Dynamic Actions Plugins können in mehrere Gruppen geteilt werden: Item‐Plugins Region‐Plugins Dynamic‐Action Plugins Process‐Plugins Authentication und Authorization Plugins Denes Kubicek Seite 63 APEX - Applikationen im Expressverfahren erstellen APEX Plugins und Dynamic Actions „Gute“ Plugins, die sich auf jeden Fall lohnen: http://www.enkitec.com/products/plugins/clob‐load http://skillbuilders.com/Oracle‐APEX/APEX‐Consulting‐ Training.cfm?category=apex‐plug‐ins&tab=free‐plugin‐ downloads Denes Kubicek Seite 64 APEX - Applikationen im Expressverfahren erstellen APEX Entwickler ‐ Skills PL/SQL an der ersten Stelle Javascript und jQuery HTML und CSS APEX und Oracle entwickeln sich ständig – ein guter Entwickler muss in der Lage sein Schritt zu halten Denes Kubicek Seite 65 APEX - Applikationen im Expressverfahren erstellen APEX Entwickler ‐ Skills Beteiligung in den APEX Foren und generell in der APEX und Oracle Community Weiterbildung durch regelmässige Trainings bezüglich Best Practices New Features Denes Kubicek Seite 66 APEX - Applikationen im Expressverfahren erstellen Fragen? Denes Kubicek Seite 67 APEX - Applikationen im Expressverfahren erstellen