390 likes | 488 Views
Professionelle APEX Entwicklung: Projektbeispiele und Lessons learned. Dietmar Aust / Opal Consulting 17.09.2008. Agenda. Vorstellung Opal Consulting Applikation AbiT Applikation ShopDB Lessons learned Fragen?. Vorstellung Opal Consulting. Dipl.-Inform. Dietmar Aust, Freiberufler
E N D
Professionelle APEX Entwicklung:Projektbeispiele und Lessons learned Dietmar Aust / Opal Consulting 17.09.2008
Agenda • Vorstellung Opal Consulting • Applikation AbiT • Applikation ShopDB • Lessons learned • Fragen? Dietmar Aust
Vorstellung Opal Consulting • Dipl.-Inform. Dietmar Aust, Freiberufler • 1997-2000: Consultant bei der Oracle Deutschland GmbH / Düsseldorf • Schwerpunkte: Oracle Portal, Oracle Reports, Oracle Forms, PL/SQL, PLSQL Web Toolkit (OWA) • Seit 09/2000: Freiberuflich • Schwerpunkte: Oracle Portal, Oracle Reports, Oracle Application Express, Oracle Express Edition • Seit drei Jahren nur APEX Entwicklung • Advanced APEX Schulungen mit Patrick Wolf und Denes Kubicek • Aktivitäten • http://daust.blogspot.com/ • http://forums.oracle.com/forums/forum.jspa?forumID=137 (APEX) • http://forums.oracle.com/forums/forum.jspa?forumID=251 (XE) Dietmar Aust
T-Punkt Vertriebsgesellschaft mbH Dietmar Aust
T-Punkt Vertriebsgesellschaft mbH • 1986: Eröffnung erster T-Punkte • Mai 2004 : Ausgründung in eine eigenständige GmbH als 100%Tochter der Deutschen Telekom • Die T-Punkt Vertriebsgesellschaft ist der einzige stationäre Vertriebskanal der Deutschen Telekom in Deutschland • Betreuung von jährlich rund 60 Millionen Privatkunden und über2,5 Millionen mittelständischen Geschäftskunden (T-Punkt Business) • Rund 800 Filialen und eine Verkaufsfläche von über 93 000 Quadratmetern • Mehr als 6000 Mitarbeiter, zusätzlich 1450 Auszubildende Dietmar Aust
Applikation AbiTProblemstellung • Das Gehalt der Verkäufer in den Shops besteht aus einem Fixum und variablen, umsatzabhängigen Provisionen • Die Kundenaufträge werden direkt in den Auftragssystemen der Konzerntöchter erfasst (T-Com, T-Mobile) • Die Abrechnung zwischen den Konzerntöchtern und der TPG erfolgt auf Basis der erfolgreich durchgeführten Aufträge • Evtl. Stornos wegen Kreditwürdigkeit oder technischer Probleme, diese werden nicht vergütet • Die Mitarbeiter werden für die Bruttoabsätze vergütet (Absprache mit Betriebsrat), von den Konzerntöchtern kommen jedoch nur Nettoabsätze • Zeitverzug in der Übermittlung der Daten • => keine aktuelle Vertriebssteuerung möglich • Workarounds • Erfassung von Produktgruppen über Barcode Scanner • => 40, 68, 90 Barcodes Dietmar Aust
Applikation AbiTProblemstellung / Anforderungen • Management Entscheidung • Vereinbarung mit dem Betriebsrat • Zeit für Design, Implementierung und Pilot Phase: 6 Wochen! • Finanzieller Schaden bei Fehlschlag (130% Zielerfüllung für alle Mitarbeiter) • Anforderungen • Auftragserfassungsystem für ca. 5.000 Nutzer • Hochverfügbar (7 Tage pro Woche, 07:00 – 22:00) • Bundleverkäufe dokumentieren • Vertriebssteuerung ermöglichen • Schnittstellen: Produktdaten, Benutzerdaten, Shop Informationen, Absätze • Die Anforderungen haben sich bis zum Ende geändert! Dietmar Aust
Applikation AbiTWarum APEX? • Warum wurde APEX verwendet? • Der Kunde kannte APEX nicht • J2EE war die Standard-Technologie für Web-Anwendungen • Der Realisierungszeitraum war zu kurz, die üblichen Dienstleister konnten dies nicht leisten • Opal Consulting wurde aufgrund einer Empfehlung ausgewählt • Folglich: Keine Technologie-Diskussion, einfach nur umsetzen! Dietmar Aust
Applikation AbiTDie Umsetzung – Technische Architektur • Application Server (2): • Fujitsu Siemens RX 300 S2, 2 HT CPUs, 8GB RAM, Linux RH AS4 • Oracle Internet Application Server 10.1.3 • Database (2 node RAC): • Sun Fire V490 Server, 2 Dual Core CPUs, 8GB RAM, Solaris 10 • Oracle 10.2, APEX 2.2.1 Sql*net Mod_plsql http http http AbiT - Platform Sql*net http Clients Oracle RAC 10.2 Hardware Load Balancer Mod_plsql Application Server Dietmar Aust
Applikation AbiTDie Umsetzung - Performance und Nutzung • Nutzung • 3.500 aktive Nutzer pro Tag • ~ 25.000 Aufträge pro Tag • 400.000 Seitenaufrufe pro Tag • Serverauslastung • Application Server: • >95% idle • #http Sessions: 30 • Database Server • 30% (70% wenn nur ein Knoten aktiv ist) • Sessions: 25-35 concurrent (pro Knoten) • Dedicated, kein Shared Server (MTS) Dietmar Aust
Applikation AbiTDie Umsetzung • Demo Dietmar Aust
Applikation AbiTNächste Schritte • Von vornherein als Übergangslösung geplant • Mittlerweile seit Okt. 2006 in Betrieb • Die Applikation wird schrittweise abgelöst durch direkte Schnittstellen zu den Konzerntöchtern • Übermittlung von Brutto – Absätzen • Aufträge werden nur einmal erfasst Dietmar Aust
Applikation ShopDBProblemstellung • Neuausrichtung der Deutschen Telekom • Kunden zurückgewinnen, Umsätze steigern • Expansion mit neuen Shops kritisch für Umsatzziele • Expansionsziel in 2006 verfehlt • Anzahl der Neueröffnungen zu niedrig • Analyse zeigte Defizite auf • Keine klare Definition der Aufgaben und Verantwortlichkeiten • Fehlende Transparenz der Prozesse, wie ist der Status? • Fehlende Kommunikation, manche Aufgaben wurden doppelt von verschiedenen Abteilungen durchgeführt • Prozess für die Eröffnung dauerte zu lange • Kein zentrales Informationssystem vorhanden, falsche Adressen • Der neue Rollout-Prozess wurde externen Beratern überarbeitet Dietmar Aust
Applikation ShopDBAnforderungen • Implementierung einer zentralen Shop-Datenbank • Konsolidierung und Vereinheitlichung verschiedener Datenquellen • Datenkonsistenz und Datenqualität • Implementierung des neuen Rollout-Prozesses, basierend auf einer Workflow-Engine • Klare Verantwortlichkeiten, Deadlines pro Workflow-Schritt • Email - Benachrichtigungen • Rollenbasierte Lese- und Schreibzugriff • Automatische Validierung von Adressen, keine Tippfehler mehr • Visualisierung von Karten (Shops und Marktdaten) • Kaufkraft, Konsumschwerpunkte, Konkurrenz, … • Prozess – Überwachung und Protokollierung von Änderungen Dietmar Aust
Applikation ShopDBHerausforderungen • Projektplan wieder extrem ambitioniert • Kick-off im April 2007 (Kunde analysiert die Anforderungen) • Teilnahme im Projekt beginnt Mitte April • Erster Prototyp im Mai • Wirkbetriebsaufnahme am 13.06.2007 (Version 0.6) • Wirkbetriebsaufnahme am 10.08.2007 (Version 1.0) • Existierende MS Access Applikationen • Es konnte nicht alles sofort übernommen werden => schrittweise Migration • Die Applikation wurde bis zuletzt geändert (neue Spalten, Daten) • Downtime der MS Applikation sollte minimiert werden • Datenmodell ungünstig => Redesign • Viele Details unklar • => extrem iterativer Ansatz mit wöchentlichen Prototypen • Fortschritte früh zeigen • Die Fachabteilung involvieren Dietmar Aust
Applikation ShopDBWarum APEX? • APEX hatte sich bereits im Projekt AbiT bewährt • Kurze Entwicklungszyklen • Performante Plattform • Kein komplexes Setup notwendig, die existierende Infrastruktur konnte mitgenutzt werden, einfach eine weitere APEX Applikation installieren • Projekt-Team • Zwei Entwickler • Ein Projektleiter Dietmar Aust
Applikation ShopDBDie Umsetzung – Technische Architektur Sql*net Mod_plsql http http http AbiT - Plattform Sql*net http Clients Oracle RAC 10.2 Hardware Load Balancer Mod_plsql http ODBC / Sql*net Application Server http Map visualization Geo-Komponenten Geocoding MS Access Clients Geo / Application Server Dietmar Aust
Applikation ShopDBDie Umsetzung – MS Access Migration • Probleme: • Wer entwickelt diese Applikationen? • MS Access Power Users, keine echten Entwickler • Tabellennamen und Spaltennamen • >30 Zeichen und Sonderzeichen • 1:1 Migration nicht sinnvoll • Daten und Strukturen bis zum Ende geändert • Kurze Downtime • => Lösung: • Tabellen und Spalten normalisieren mit VBA Skript (Oracle – konform) • Datenbank-Link von Oracle zu MS Access (beliebige ODBC Quelle) • ETL Prozess für die Datenübernahme in PLSQL Packages • Schicht von Views in Oracle • Schicht von Views in MS Access Dietmar Aust
Applikation ShopDBDie Umsetzung – Workflow Dietmar Aust
Applikation ShopDBDie Umsetzung – Workflow • Open Source pl/sql Workflow Engine • http://plflow.sourceforge.net/ • XPDL 1.0 kompatibel, kein Import/Export von Prozessen • Kein User-Interface, nur PLSQL API • Einfach zu integrieren und stabil • Prozessvisualisierung möglichdurch Graphviz Dietmar Aust
Applikation ShopDBDie Umsetzung – Workflow • Rollenbasierte ToDo-Liste • Email Benachrichtigungen • Neue Aufgaben • Überfällige Aufgaben • Hyperlinks zur Aufgabe / Shop in der Email Dietmar Aust
Applikation ShopDBDie Umsetzung – Workflow • Status Informationen Dietmar Aust
Applikation ShopDBDie Umsetzung – Geokodierung von Adressen • Ziele • Eindeutige Schreibweise vonAdressen • Keine Tippfehler mehr! • Nutzung der Koordinaten • Abstände zwischen Shopssicherstellen • Software • JCoder Business (infas Geodaten) Dietmar Aust
Applikation ShopDBThe solution – Workflow • Visualisierung • Adressen / Shops • Informations-Layer • Software • MapSuite (infoware) • Marktinformationen (infas Geodaten) Dietmar Aust
Applikation ShopDBDie Umsetzung • Demo Dietmar Aust
Applikation ShopDBWeitere Schritte • Weitere Prozesse für das Shop Management umsetzen • MS Access Applikation vollständig ablösen • Die ShopDB als zentrale Informationsquelle für alle Systeme der TPG etablieren • Kostenkontrolle • Abrechnung der Mieten • Abrechnung der Kosten für Reinigung, Instandhaltung, etc. Dietmar Aust
Lessons learnedVorteile von APEX • Vorhandenes Oracle Know-How nutzen !!! • Entwickler können schnell produktiv werden • Keine steile Lernkurve (im Gegensatz zu anderen Web-Technologien) • Gute Trennung der Geschäftslogik von der UI Darstellung (Themes und Templates) • Datenmodelländerungen können schnell umgesetzt werden • APEX reagiert sehr flexibel • Hervorragendes Werkzeug für RAD oder agile Entwicklungsmethoden • Starker iterativer Ansatz (regelmäßige Prototypen) gewährleisten eine hohe Kundenzufriedenheit • Oracle Heterogenous Services !!! Dietmar Aust
Lessons learnedHerangehensweise • Solide Datenmodellierung • Es gibt keinen Ersatz Professionalität und Sorgfalt! • APEX Besonderheiten berücksichtigen • Technische Schlüssel (ID Spalten) • Iterative Implementierung • Kurze Feedback-Zyklen mit dem Kunden • Umsetzung Kundenlayout wichtig! • Beginnen mit voller Menüstruktur ohne Berechtigungen • Einzelne Funktionalitäten in voller Tiefe implementieren • Navigation / Ergonomie mit Fachabteilung abstimmen • Anwender bei Nutzung der Prototypen beobachten • Tatsächliche Business Cases durchspielen Dietmar Aust
Lessons learned Entwicklung- Tools • Firefox + Plugins • Firebug • WebDeveloper • MeasureIt • Yslow • Aardvark • ApexLib Framework • ApexBuilder Plugin • Aptana (Javascript Editor) • Toad / SQL Developer Dietmar Aust
Lessons learned Entwicklung • DEBUG Build Option • Einfaches Login der Testaccounts • Läuft die Applikation im Builder? • apex_application.g_edit_cookie_session_id IS NOT NULL • Security umgehen (kontrollierte „Backdoor“) • Versionsnummer im Template verwenden • #APP_VERSION# Dietmar Aust
Lessons learned Debugging • Build Option DISABLED (Status=Exclude) • Elemente und Regionen schnell deaktivieren • => Bedingungen bleiben erhalten • Debug Modus • Langsame Regionen ermitteln • Eigene Meldungen im Debug Modus hinzufügen • Apex_application.debug • AJAX • Firebug - HTTP Requests für analysieren • Vorsicht, Fehlermeldungen in OnDemand Prozessen werden unterdrückt aus Sicherheitsgründen! Dietmar Aust
Lessons learned Qualitätssicherung • APEX Essentials von Patrick Wolf • http://essentials.oracleapex.info/ • APEX Advisor • APEX Dictionary Views direkt auswerten Dietmar Aust
Lessons learned Deployment • Backup der Applikationen / Export der Applikationen • \apex\utilities\oracle\apex => Readme.txt • Workspace-ID in Entwicklung / Abnahme / Produktion identisch • Skriptbasierte Applikation der SQL – Dateien • Applikations-ID in Entwicklung / Abnahme / Produktion identisch • Entwicklung: Fehlermeldungen http-404 sichtbar machen • DAD Konfiguration anpassen • <Location /pls/apex> • PlsqlErrorStyle DebugStyle Dietmar Aust
Lessons learned Deployment • Applikation während Installation offline setzen • Custom Ansatz über Konfigurationstabelle • Applikationsprozess (Before Header) BEGIN IF xlib_conf_pck.get_value ('ABIT.RESTRICTED_MODE') = '1‚ THEN IF INSTR (xlib_conf_pck.get_value ('ABIT.RESTRICTED_USERS'),OWA_UTIL.get_cgi_env ('REMOTE_ADDR') ) = 0 THEN HTP.p (xlib_conf_pck.get_value ('ABIT.RESTRICTED_MESSAGE')); htp.p('<br /><spanstyle="color:white;>"'||owa_util.get_cgi_env('REMOTE_ADDR')||'</span>');apex_application.g_unrecoverable_error := TRUE; END IF; END IF;END; Dietmar Aust
Lessons learned Deployment – Apache Konfiguration • Mod_rewrite / sprechende URLs • Caching der Bilder / CSS / Javascript im Apache (/i/) # Modul mod_rewrite aktivierenLoadModule rewrite_module libexec/mod_rewrite.soRewriteEngine OnRewriteLog "/u01/app/oracle/product/10.2.0_HTTP/Apache/Apache/logs/rewrite.log"RewriteLogLevel 0# direkter Rewrite auf die SchulungRewriteRule ^/training$ http://%{SERVER_NAME}/apex/f?p=107:5 [R]# Redirect, wenn nur Server eingegeben wird (entspricht index.html)RewriteRule ^/$ http://%{SERVER_NAME}/apex/f?p=107:1 [R] Alias /i/ /u01/app/oracle/product/10.2.0_HTTP/apex/images/ <Directory "/u01/app/oracle/product/10.2.0_HTTP/apex/images/"> AllowOverride None Order allow,deny Allow from all <IfModule mod_expires.c> ExpiresActive on ExpiresDefault "access plus 1 hour" </IfModule> IndexOptions FancyIndexing </Directory> Dietmar Aust
Lessons learned Monitoring • Auswertung der Logeinträge • Langsame Seiten finden • Applikationsfehler proaktiv finden SELECT application_id, page_id, COUNT (*) AS hits,COUNT (*)/60 AShits_pro_min, MIN (elapsed_time) AS MIN, AVG (elapsed_time) AS AVG, MAX (elapsed_time) AS MAX, AVG (elapsed_time) * COUNT (*) weight FROM apex_workspace_activity_log WHERE view_date > SYSDATE - 1 / 24 / 60 * 60 /* 1 Stunde */GROUP BY application_id, page_id Dietmar Aust
Weitere Informationen • Sammlung von BLOGS • http://www.apexblogs.info • Deutsche APEX Community • http://www.oracle.com/global/de/community/index.html • APEX Forum • http://forums.oracle.com/forums/forum.jspa?forumID=137 • http://apex.oracle.com • Packaged Applications • HowTos Dietmar Aust
APEX Schulung Fortgeschrittene Techniken aus der Praxis Patrick Wolf (APEX Entwickler des Jahres 2007) Denes Kubicek (APEX Entwickler des Jahres 2008) Dietmar Aust http://www.opal-consulting.de März 2009 (3 Tage) Bensheim Dietmar Aust
Kontakt: • Opal-Consulting Dietmar Aust • Web: http://www.opal-consulting.de • Blog: http://daust.blogspot.com/ • E-Mail: dietmar.aust@opal-consulting.de Q & A Dietmar Aust