Title: Professionelle APEX Entwicklung: Projektbeispiele und Lessons learned
1Professionelle APEX Entwicklung
Projektbeispiele und Lessons learned
- Dietmar Aust / Opal Consulting
- 17.09.2008
2Agenda
- Vorstellung Opal Consulting
- Applikation AbiT
- Applikation ShopDB
- Lessons learned
- Fragen?
3Vorstellung 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)
4T-Punkt Vertriebsgesellschaft mbH
5T-Punkt Vertriebsgesellschaft mbH
- 1986 Eröffnung erster T-Punkte
- Mai 2004 Ausgründung in eine eigenständige
GmbH als 100Tochter 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
6Applikation 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
- gt keine aktuelle Vertriebssteuerung möglich
- Workarounds
- Erfassung von Produktgruppen über Barcode Scanner
- gt 40, 68, 90 Barcodes
7Applikation 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, 0700 2200)
- Bundleverkäufe dokumentieren
- Vertriebssteuerung ermöglichen
- Schnittstellen Produktdaten, Benutzerdaten, Shop
Informationen, Absätze - Die Anforderungen haben sich bis zum Ende
geändert!
8Applikation 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!
9Applikation 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
Sqlnet
Mod_plsql
http
http
http
AbiT - Platform
Sqlnet
http
Clients
Oracle RAC 10.2
Hardware Load Balancer
Mod_plsql
Application Server
10Applikation 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
- gt95 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)
11Applikation AbiTDie Umsetzung
12Applikation 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
13Applikation 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
14Applikation 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
15Applikation 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 gt
schrittweise Migration - Die Applikation wurde bis zuletzt geändert (neue
Spalten, Daten) - Downtime der MS Applikation sollte minimiert
werden - Datenmodell ungünstig gt Redesign
- Viele Details unklar
- gt extrem iterativer Ansatz mit wöchentlichen
Prototypen - Fortschritte früh zeigen
- Die Fachabteilung involvieren
16Applikation 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
17Applikation ShopDBDie Umsetzung Technische
Architektur
Sqlnet
Mod_plsql
http
http
http
AbiT - Plattform
Sqlnet
http
Clients
Oracle RAC 10.2
Hardware Load Balancer
Mod_plsql
http
ODBC / Sqlnet
Application Server
http
Map visualization
Geo-Komponenten
Geocoding
MS Access Clients
Geo / Application Server
18Applikation ShopDBDie Umsetzung MS Access
Migration
- Probleme
- Wer entwickelt diese Applikationen?
- MS Access Power Users, keine echten Entwickler
- Tabellennamen und Spaltennamen
- gt30 Zeichen und Sonderzeichen
- 11 Migration nicht sinnvoll
- Daten und Strukturen bis zum Ende geändert
- Kurze Downtime
- gt 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
19Applikation ShopDBDie Umsetzung Workflow
20Applikation 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
21Applikation ShopDBDie Umsetzung Workflow
- Rollenbasierte ToDo-Liste
- Email Benachrichtigungen
- Neue Aufgaben
- Überfällige Aufgaben
- Hyperlinks zur Aufgabe / Shop in der Email
22Applikation ShopDBDie Umsetzung Workflow
23Applikation ShopDBDie Umsetzung Geokodierung
von Adressen
- Ziele
- Eindeutige Schreibweise vonAdressen
- Keine Tippfehler mehr!
- Nutzung der Koordinaten
- Abstände zwischen Shopssicherstellen
- Software
- JCoder Business (infas Geodaten)
24Applikation ShopDBThe solution Workflow
- Visualisierung
- Adressen / Shops
- Informations-Layer
- Software
- MapSuite (infoware)
- Marktinformationen (infas Geodaten)
25Applikation ShopDBDie Umsetzung
26Applikation 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.
27Lessons 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 !!!
28Lessons 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
29Lessons learned Entwicklung- Tools
- Firefox Plugins
- Firebug
- WebDeveloper
- MeasureIt
- Yslow
- Aardvark
- ApexLib Framework
- ApexBuilder Plugin
- Aptana (Javascript Editor)
- Toad / SQL Developer
30Lessons 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
31Lessons learned Debugging
- Build Option DISABLED (StatusExclude)
- Elemente und Regionen schnell deaktivieren
- gt 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!
32Lessons learned Qualitätssicherung
- APEX Essentials von Patrick Wolf
- http//essentials.oracleapex.info/
- APEX Advisor
- APEX Dictionary Views direkt auswerten
33Lessons learned Deployment
- Backup der Applikationen / Export der
Applikationen - \apex\utilities\oracle\apex gt 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
- ltLocation /pls/apexgt
- PlsqlErrorStyle DebugStyle
34Lessons 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_U
SERS'), OWA_UTIL.get_cgi_env
('REMOTE_ADDR') ) 0 THEN
HTP.p (xlib_conf_pck.get_value
('ABIT.RESTRICTED_MESSAGE')) htp.p('ltbr
/gtltspanstyle"colorwhitegt"'owa_util.get_cgi_e
nv('REMOTE_ADDR')'lt/spangt')
apex_application.g_unrecoverable_error TRUE
END IF END IFEND
35Lessons 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.soRewrite
Engine 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?p1075 R
Redirect, wenn nur Server eingegeben wird
(entspricht index.html)RewriteRule
/ http//SERVER_NAME/apex/f?p1071 R
Alias /i/ /u01/app/oracle/product/10.2.0_HTTP/ape
x/images/ ltDirectory "/u01/app/oracle/product/10
.2.0_HTTP/apex/images/"gt AllowOverride
None Order allow,deny Allow from
all ltIfModule mod_expires.cgt
ExpiresActive on ExpiresDefault "access
plus 1 hour" lt/IfModulegt
IndexOptions FancyIndexing lt/Directorygt
36Lessons learned Monitoring
- Auswertung der Logeinträge
- Langsame Seiten finden
- Applikationsfehler proaktiv finden
SELECT application_id, page_id,
COUNT () AS hits, COUNT ()/60 AS
hits_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 gt
SYSDATE - 1 / 24 / 60 60 / 1 Stunde /GROUP
BY application_id, page_id
37Weitere Informationen
- Sammlung von BLOGS
- http//www.apexblogs.info
- Deutsche APEX Community
- http//www.oracle.com/global/de/community/index.ht
ml - APEX Forum
- http//forums.oracle.com/forums/forum.jspa?forumID
137 - http//apex.oracle.com
- Packaged Applications
- HowTos
38APEX 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
39- Kontakt
- Opal-Consulting Dietmar Aust
- Web http//www.opal-consulting.de
- Blog http//daust.blogspot.com/
- E-Mail dietmar.aust_at_opal-consulting.de
Q A