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?
DOAG Regionalgruppe 2008
Dietmar Aust
Page 1
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)
DOAG Regionalgruppe 2008
Dietmar Aust
Page 2
T-Punkt Vertriebsgesellschaft mbH
DOAG Regionalgruppe 2008
Dietmar Aust
Page 3
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 über
2,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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 4
Applikation AbiT
Problemstellung
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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 5
Applikation AbiT
Problemstellung / 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!
DOAG Regionalgruppe 2008
Dietmar Aust
Page 6
Applikation AbiT
Warum 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!
DOAG Regionalgruppe 2008
Dietmar Aust
Page 7
Applikation AbiT
Mod_plsql
http
http
Sql*net
http
Sql*net
http
Clients
Mod_plsql
AbiT - Platform
Die Umsetzung – Technische Architektur
Hardware Load Balancer
Oracle RAC 10.2
Application Server
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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 8
Applikation AbiT
Die 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)
DOAG Regionalgruppe 2008
Dietmar Aust
Page 9
Applikation AbiT
Die Umsetzung
Demo
DOAG Regionalgruppe 2008
Dietmar Aust
Page 10
Applikation AbiT
Nä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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 11
Applikation ShopDB
Problemstellung
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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 12
Applikation ShopDB
Anforderungen
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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 13
Applikation ShopDB
Herausforderungen
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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 14
Applikation ShopDB
Warum 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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 15
Applikation ShopDB
Mod_plsql
http
http
Sql*net
http
Sql*net
http
Clients
Mod_plsql
AbiT - Plattform
Die Umsetzung – Technische Architektur
Hardware Load Balancer
Geo-Komponenten
Application Server
Oracle RAC 10.2
http
http
ODBC /
Sql*net
Map visualization
Geocoding
MS Access Clients
Geo / Application Server
DOAG Regionalgruppe 2008
Dietmar Aust
Page 16
Applikation ShopDB
Die 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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 17
S&A9B_OUTLETVORSCHLAG_AUFNEHMEN_TPP
Outletvorschlag aufnehmen (Partner)
(Key Account Manager)
Applikation ShopDB
Die Umsetzung – Workflow
Standort auf
Suchliste?
2:NEIN
S&A10_STANDORT_ABSTIMMEN
Standort abstimmen
(Standortplaner)
17
1:JA
P&E0B_ANSTOSS_UNTERLAGEN_TPP
Anstoss zur Erstellung der
Prüfungsunterlagen (Partner)
(Standortplaner)
3
P&E1_EINHOLUNG_SICHTPRUEF
UNG
Einholung Sichtprüfung
(Standortmanager)
4
5
P&E3_STANDORTEXPOSE
Standortexpose erstellen
(Standortplaner)
14
P&E4B_ABSATZPROGNOSE_TPP
Absatzprognose erstellen
(ZVS)
6
9
8
P&E2_EINHOLUNG_MACHBARKEI
T
Einholung Machbarkeitsstudie
(Standortmanager)
7
P&E4C_ABSATZPROGNOSE_TPP
Einholung partnerspez. Kosten und
Absatzprognose
(Key Account Manager)
15
P&E4D_PROGNOSEN_KONSOLIDIEREN_TP
P
Zusammenführung Absatzprognosen
(Key Account Manager)
16
P&E5_SAMMLUNG_BEWERTUNG
Sammlung Daten und Bewertung
Absatzprognose
(Standortplaner)
10
P&E6_BC_BEWERTUNG_ABSATZ
Erstellung BC und qual. Bewertung
Absatzprognose
(Controlling)
11
P&E7_GF_VORLAGE
Erstellung GF-Vorlage
(Standortplaner)
12
P&E8_EINREICHUNG_GF_VORLAGE
Einreichung GF-Vorlage in Umlaufverfahren
(Standortplaner)
13
P&E9_FEEDBACK_GF_GO
Feedback GF go
(Standortplaner)
DOAG Regionalgruppe 2008
Dietmar Aust
Page 18
Applikation ShopDB
Die 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öglich
durch Graphviz
DOAG Regionalgruppe 2008
Dietmar Aust
Page 19
Applikation ShopDB
Die Umsetzung – Workflow
Rollenbasierte ToDo-Liste
Email Benachrichtigungen
Neue Aufgaben
Überfällige Aufgaben
Hyperlinks zur Aufgabe / Shop in der Email
DOAG Regionalgruppe 2008
Dietmar Aust
Page 20
Applikation ShopDB
Die Umsetzung – Workflow
Status Informationen
DOAG Regionalgruppe 2008
Dietmar Aust
Page 21
Applikation ShopDB
Die Umsetzung – Geokodierung von Adressen
Ziele
Eindeutige Schreibweise von
Adressen
− Keine Tippfehler mehr!
Nutzung der Koordinaten
− Abstände zwischen Shops
sicherstellen
Software
JCoder Business (infas Geodaten)
DOAG Regionalgruppe 2008
Dietmar Aust
Page 22
Applikation ShopDB
The solution – Workflow
Visualisierung
Adressen / Shops
Informations-Layer
Software
MapSuite (infoware)
Marktinformationen (infas Geodaten)
DOAG Regionalgruppe 2008
Dietmar Aust
Page 23
Applikation ShopDB
Die Umsetzung
Demo
DOAG Regionalgruppe 2008
Dietmar Aust
Page 24
Applikation ShopDB
Weitere 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.
DOAG Regionalgruppe 2008
Dietmar Aust
Page 25
Lessons learned
Vorteile von APEX
Vorhandenes Oracle Know-How nutzen !!!
Entwickler können schnell produktiv werden
Keine steile Lernkurve (im Gegensatz zu anderen WebTechnologien)
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 !!!
DOAG Regionalgruppe 2008
Dietmar Aust
Page 26
Lessons learned
Herangehensweise
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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 27
Lessons learned
Entwicklung- Tools
Firefox + Plugins
Firebug
WebDeveloper
MeasureIt
Yslow
Aardvark
ApexLib Framework
ApexBuilder Plugin
Aptana (Javascript Editor)
Toad / SQL Developer
DOAG Regionalgruppe 2008
Dietmar Aust
Page 28
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#
DOAG Regionalgruppe 2008
Dietmar Aust
Page 29
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!
DOAG Regionalgruppe 2008
Dietmar Aust
Page 30
Lessons learned
Qualitätssicherung
APEX Essentials von Patrick Wolf
http://essentials.oracleapex.info/
APEX Advisor
APEX Dictionary Views direkt auswerten
DOAG Regionalgruppe 2008
Dietmar Aust
Page 31
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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 32
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 /><span
style="color:white;>"'||owa_util.get_cgi_env('REMOTE_ADDR')||'</span>');
apex_application.g_unrecoverable_error := TRUE;
END IF;
END IF;
END;
DOAG Regionalgruppe 2008
Dietmar Aust
Page 33
Lessons learned
Deployment – Apache Konfiguration
Mod_rewrite / sprechende URLs
# Modul mod_rewrite aktivieren
LoadModule rewrite_module
libexec/mod_rewrite.so
RewriteEngine On
RewriteLog "/u01/app/oracle/product/10.2.0_HTTP/Apache/Apache/logs/rewrite.log"
RewriteLogLevel 0
# direkter Rewrite auf die Schulung
RewriteRule ^/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]
Caching der Bilder / CSS / Javascript im Apache (/i/)
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>
DOAG Regionalgruppe 2008
Dietmar Aust
Page 34
Lessons learned
Monitoring
Auswertung der Logeinträge
Langsame Seiten 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 > SYSDATE - 1 / 24 / 60 * 60
/* 1 Stunde */
GROUP BY application_id, page_id
Applikationsfehler proaktiv finden
DOAG Regionalgruppe 2008
Dietmar Aust
Page 35
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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 36
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
DOAG Regionalgruppe 2008
Dietmar Aust
Page 37
Q&A
Kontakt:
Opal-Consulting Dietmar Aust
Web: http://www.opal-consulting.de
Blog: http://daust.blogspot.com/
E-Mail: [email protected]
DOAG Regionalgruppe 2008
Dietmar Aust
Page 38