1 / 39

Professionelle APEX Entwicklung: Projektbeispiele und Lessons learned

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

leane
Download Presentation

Professionelle APEX Entwicklung: Projektbeispiele und Lessons learned

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Professionelle APEX Entwicklung:Projektbeispiele und Lessons learned Dietmar Aust / Opal Consulting 17.09.2008

  2. Agenda • Vorstellung Opal Consulting • Applikation AbiT • Applikation ShopDB • Lessons learned • Fragen? Dietmar Aust

  3. 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

  4. T-Punkt Vertriebsgesellschaft mbH Dietmar Aust

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. Applikation AbiTDie Umsetzung • Demo Dietmar Aust

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. Applikation ShopDBDie Umsetzung – Workflow Dietmar Aust

  20. 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

  21. Applikation ShopDBDie Umsetzung – Workflow • Rollenbasierte ToDo-Liste • Email Benachrichtigungen • Neue Aufgaben • Überfällige Aufgaben • Hyperlinks zur Aufgabe / Shop in der Email Dietmar Aust

  22. Applikation ShopDBDie Umsetzung – Workflow • Status Informationen Dietmar Aust

  23. 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

  24. Applikation ShopDBThe solution – Workflow • Visualisierung • Adressen / Shops • Informations-Layer • Software • MapSuite (infoware) • Marktinformationen (infas Geodaten) Dietmar Aust

  25. Applikation ShopDBDie Umsetzung • Demo Dietmar Aust

  26. 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

  27. 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

  28. 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

  29. Lessons learned Entwicklung- Tools • Firefox + Plugins • Firebug • WebDeveloper • MeasureIt • Yslow • Aardvark • ApexLib Framework • ApexBuilder Plugin • Aptana (Javascript Editor) • Toad / SQL Developer Dietmar Aust

  30. 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

  31. 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

  32. Lessons learned Qualitätssicherung • APEX Essentials von Patrick Wolf • http://essentials.oracleapex.info/ • APEX Advisor • APEX Dictionary Views direkt auswerten Dietmar Aust

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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

More Related