ApexII-2_Design_v0.1.0 - Opal

Werbung
Oracle APEX: Fortgeschrittene
Techniken aus der Praxis
=> Design
Patrick Wolf – Denes Kubicek - Dietmar Aust
17.03.2008 – 19.03.2008
Agenda
 Datenmodell
 Geschäftslogik
 Konfigdaten
 Parsing Schema
 Workspace
 Applikationsaufteilung
 Seitennummerierung/-gruppierung
 APEX Einstellungen
 Teamentwicklung
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 1
Datenmodell
Zeit investieren!
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 2
Datenmodell
 Datenmodell leben länger als Applikationen
 Ist letztes Bollwerk für konsistente Daten
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 3
Datenmodell – Grafisch visualisieren
 ERDs oder UML Diagramme
 Farben verwenden
 Logisch Gruppieren
 Von Oben nach Unten
 Hilft beim Denken
 Leichterer Einstieg für neue Entwickler
 Man diskutiert ganz anders
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 4
PA PER PR ODUCT
...
MA TER IAL TYPE
...
.
.
.
.
MA TER IAL
...
.
LPA L
.
INVENTO RY
.
BO XLABEL
.
REAMLA BEL
.
.
GLUE
.
PR ODUCTION PLAN
# PLAN_NO
o PLANNED_WEIGHT
* IS_LA BEL_TO_BE_CHECKED
* IS_IN_PRO DUC TION
* IS_FIX_PLANNED_BEGIN
o PLANNED_BEGIN_DA TETIME
o PLANNED_SETUP_DURATION
o PLANNED_DOWNTIME_DURATION
o PLANNED_DURA TIO N
...
PR ODUCTION ORDER
# ORDER_NO
* NASC O_CUSTO MER_NO
* NASC O_CUSTO MER_NAME
...
.
.
OUTPUT
.
PR ODUCTION ORDER S TEP
# SEQ
o NASC O_PR ODUCTIO N_STEP_NO
.
.
.
PR OD ORDER PAR T GR OUP
#
o
o
o
o
o
o
SEQ
SHEET_LENGTH
SHEET_WIDTH
GUILLOTINE
HOLE
SHEETS_PER_R EAM
IS_LA NDSC APE
.
.
.
PR ODUCTION ORDER PAR T
# SEQ
o GROUP_SEQ
* CONTROL_ID
...
.
.
.
LA BEL PRODUCTION
o PRINT_DA TETIME
o PRODUCTION_DATETIME
o PRODUCTION_QUANTITY
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 5
LABEL
Datenmodell
 Künstlicher Primary Key (mit Sequence)
 In APEX maximal 2 Primary Key Attribute
 Update auf natürlichen „Primary Key“ keine Auswirkungen
 Eine Sequence reicht
 Nachteil
− Eventuell mehr Joins
− Constraints können weniger überprüfen
 Unique Keys verwenden!
 Jede Tabelle hat meistens natürlichen Schlüssel! (Auftragsnr.,
Kundennr, Auftragsnr.+Position, …)
 Wenige Ausnahmen (Logging Tabelle, ...)
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 6
Datenmodell
 Foreign Keys verwenden!
 Schaft Sicherheit und konsistente Daten
 Nicht auf Applikation verlassen!!!
 Performance schon lange kein Thema mehr
 Foreign Key Spalten generell indizieren
− Schneller beim joinen
− Verhindert Table Locks
 Konsistentes Namensschema überlegen
 Keine Lookup Tabellen sparen!
− Z.B.: für Aufzählungen (E-Mail, Fax, Tel, ...)
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 7
Datenmodell – Keine Lookup Tabellen sparen
 Mehr Stellen zeigen Werte an als man denkt!
 Zu viele Lookup Tabellen?
 Generische Tabelle als Alternative
 DOMAIN (z.B.: KOMMUNIKATION)
 DOMAIN_VALUE (z.B.: TEL, FAX, E-MAIL, ...)
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 8
Datenmodell – Generische Werteliste
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 9
Datenmodell – Generische Werteliste
 Vorteile
 Eine generische Maske zum pflegen aller Werte
 Keine Datenmodell Änderung notwendig
 „Spart“ viele Tabellen
 Nachteile
 Weniger Aussagekraft von Foreign Key Constraints
 FK kann nicht auf bestimmte DOMAIN überprüfen
 CBO hat weniger Information
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 10
Datenmodell
 Check Constraints verwenden!
 Schaft Sicherheit und konsistente Daten
 Nicht auf Applikation verlassen!!!
 CBO hat mehr Informationen
 NOT NULL Constraints verwenden
 Gehört zum Analyse/Design Prozess
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 11
Datenmodell
 Domänen überlegen
 Vereinheitlichung der Datentypen
 Z.B.: Spalte DESCRIPTION ist immer VARCHAR2(40)
 Booleans
 NUMBER(1) mit Constraint auf 0 (FALSE) und 1 (TRUE)
 Normalerweise NOT NULL!
 Gleiche Namensgebung – z.B.: IS_MANAGER, HAS_CHILDS
 Verarbeitungsflag
 NUMBER(1) mit Constraint auf NULL und 1 (TRUE)
 Index erstellen -> Enthält nur Datensätze mit 1
 Historisierungsattribute
 Kann automatisch generiert werden
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 12
Datenmodell
 Konsistentes Namensschema überlegen
 Tabellen Prefix (z.B.: NPT_T_)
 Spalten Prefix
 Foreign Key Benennung
 Constraint Benennung (IX_, UK_, PK_, FK_, CK_, ...)
 Spalten mit gleicher Bedeutung (DESCRIPTION, CODE, ...)
 Tabellen und Spalten Kommentar verwenden
 Immer mit Scripts ändern (Dev., Test, Produktion)
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 13
Datenmodell - Conclusio
 Constraints, Constraints, Constraints!!!
 Nicht auf Applikation verlassen
 Letztes Bollwerk
 Zeit investieren
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 14
Geschäftslogik
 In die Applikation?
 Direkt auf Tabellen inserten/updaten/löschen?
 Was ist mit Überprüfungen?
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 15
Geschäftslogik - Objektkapselung
 Package für jede Tabelle oder logische Tabelle/Tabellengruppe
 Prozeduren




createObjektname
updateObjektname
deleteObjektname
validateSpalte/...
 Eine Zentrale Stelle wenn es um die Erstellung oder Änderung des
Objekts geht
 Andere Objekte Initialisieren
 Notification, ...
 Kann Initial generiert werden
 Hilft bei Datenmodell Änderungen – Eine Zentrale Stelle
 Auch andere Programme können Code verwenden (Batchjobs, ...) ->
eine Art von SOA ;-)
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 16
Geschäftslogik - Objektkapselung
 Wie in APEX verwenden?
 Eigene DML Prozess
 Verlust von „Lost Update Detection“/Optimistic Looking
 Viel Arbeit
 View mit INSTEAD OF TRIGGER
 Für APEX wie Tabelle
 Keine Änderung am Standardverhalten
 Siehe statements.sql
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 17
Geschäftslogik - Conclusio
Geschäftslogik raus aus dem UI !!!
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 18
Konfigdaten
 Wiedereinspielbahre Scripts!
 STORE Prozeduren
 Siehe statements.sql
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 19
Parsing Schema
 Verwenden Sie das Applikationsschema?
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 20
Parsing Schema
 Gefahr bei SQL Injection
 „Run User“ mit eingeschränkten Rechten verwenden
 Z.B.: Kein DROP TABLE Recht
 Mit Data Dictionary Scripts automatisch granten und Synonyms
erstellen
 Nachteil
 Wizard sieht die Synonyme nicht
 Workspace braucht auch Applikationsschema
 Immer Applikationsschema auswählen
 Applikationsschema hardcodiert
 Alternative
 „Run User“ Parsing Schema erst bei Deployment setzen
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 21
Workspace
 Einen? Mehrere?
 Abhängig von Berechtigungsstruktur (Entwickler, Power User ,
Abteilungen)
 Tendiere zu Einem
 Single Sign On zwischen Applikationen im Workspace
 Über gleiche „Cookie Attributes“ in Authentification Scheme
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 22
Applikationsaufteilung
 Bei kleinen Applikationen nicht sinnvoll
 Bei größeren überlegenswert
 Vorteile
 Unabhängige Release Zyklen
 Besser handhabbar
 Übersichtlicher
 Leichtere Teamentwicklung
 Mögliche Nachteile
 Weniger integriert
 Unterschiedliche Templates
 Uneinheitliche Navigationsleisten
 Übergreifende Navigation komplizierter
 Weniger Synergie (gleiche Seiten, Lovs, ...)
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 23
Applikationsaufteilung
 Zentrale Master Applikation
 Login
 Allgemeine Seiten (Benutzerverwaltung, ...)
 Navigationsleisten
 Lovs
 ...
 Spezifische Applikationen
 Subscription verwenden
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 24
Seitennummerierung
 Fortlaufend? APEX weiß es am besten?
 Nur bei kleine Applikationen
 APEX Seitennummern sind nicht wirklich limitiert!
 Es gibt immer zusammengehörige Seiten
 Übersichtsbericht mit Suche
 Detail Formular
 Vielleicht noch weiteres Detail Formular
 50 oder 100 Schritte pro zusammengehörige Seiten
 1.000 oder 10.000 Schritte pro Seitengruppe
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 25
Seitengruppen
 Wer kennt Sie? Verwendet Sie?
 Gutes Mittel um Applikation zu Strukturieren
 Admin Bereich
 Öffentlicher Bereich
 Shop
 ...
 Verschiedene Darstellungsmöglichkeiten
 Hilft Page Flow Diagram von ApexLib
 Zuordnen über Seiteneigentschaften
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 26
APEX Einstellungen
 Application Builder Defaults
 Developer Preferences
 UI Interface Defaults
 Defaults beim erstellen von Tabellen/Views
 Titel, Labels, Templates, Format Masken
 Applikationsübergreifend
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 27
APEX Einstellungen
 Default Templates für Komponenten und Regionen
 Shared Components\Themes\Edit Theme
 Ein wenig versteckt
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 28
Teamentwicklung – Codierrichtlinien
 Jeder entwickelt anders
 Emotionales Gebiet!
 Einheitliche Namensgebung





Filenamen
Variablen
Parameter
Konstanten
Felder
 Einheitliche Formatierung




Gross-/Kleinschreibung
Klammern
Einrückung
Leerzeichen
 PL/SQL Aufrufe mit Non-Positional Syntax/Parameter
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 29
Teamentwicklung – Codierrichtlinien
 Einheitliche Vorgehensweise
 Gleiche Patterns (z.B.: Geschäftslogik, APEX Seiten, ...)
 Einheitliches Layout
 Labels, Tabs, Breadcrums, ...
 Feldtypen vereinheitlichen (Datum, Geldbeträge, …)
 Für Oracle APEX und PL/SQL und SQL
 Schriftlich!!!
 Reviews durchführen
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 30
Teamentwicklung – Versionsverwaltung
 Ist ein MUSS!!!
 Auch bei 1 Mann Entwicklung!
 Schnell etwas überschrieben/gelöscht
 Historien Vergleich
 Tools
 CVS + TortoiseCVS
 SVN + TortoiseSVN
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 31
Teamentwicklung – Versionsverwaltung
 Alle Projekt relevanten Dateien
 Create Table Scripts
 Konfigdaten
 Packages
 Dokumente
 ...
 APEX Applikations Export
 Manueller Export am Abend (APEX Builder oder SQL Developer)
 Automatisiert mit apex\utilities\oracle\apex\APEXExport.class und
APEXSplitter.class
 Details siehe http://jes.blogs.shellprompt.net/2006/12/12/backingup-your-applications/
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 32
Teamentwicklung – Ticketsystem
 Nachvollziehbar
 Strukturiert
 Viele Tools
 JIRA
 Bugzilla
 ...
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 33
Teamentwicklung – Gleichzeitige Entwicklung
 Versionsverwaltung hilft dabei
 Locks
 Merge
 Nicht für APEX Export geeignet
 APEX
 Page Locks verwenden
 Nicht alles geschützt (Shared Components)
 In 3.1 ein paar Bugs korrigiert
 Themengebiete für Entwickler festlegen
 Eine Zentrale Entwicklungsinstanz
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 34
Teamentwicklung – Gleichzeitige Entwicklung
 Wenn was schief geht...
 Seiten Export mit „As of xx min“ verwenden
 Komplett Import beeinträchtigt andere Entwickler
 DBA soll höheres Zeitfenster einstellen!!!
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 35
Teamentwicklung – Conclusio
 Codierrichtlinien
 Versionsverwaltung
 Ticketsystem
 Regelmäßige Exports
 Page Locks verwenden
 Einzel Seiten Export mit „As of“
Oracle APEX: Fortgeschrittene Techniken aus der Praxis
Patrick Wolf – Denes Kubicek – Dietmar Aust
Seite 36
Herunterladen