37
Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Embed Size (px)

Citation preview

Page 1: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Oracle APEX: Fortgeschrittene Techniken aus der Praxis

=> Design Patrick Wolf – Denes Kubicek - Dietmar Aust

17.03.2008 – 19.03.2008

Page 2: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 2

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Agenda

Datenmodell

Geschäftslogik

Konfigdaten

Parsing Schema

Workspace

Applikationsaufteilung

Seitennummerierung/-gruppierung

APEX Einstellungen

Teamentwicklung

Page 3: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 3

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Datenmodell

Zeit investieren!

Page 4: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 4

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Datenmodell

Datenmodell leben länger als Applikationen

Ist letztes Bollwerk für konsistente Daten

Page 5: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 5

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 6: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 6

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

PROD ORDER PART GROUP# SEQo SHEET_LENGTHo SHEET_WIDTHo GUILLOTINEo HOLEo SHEETS_PER_REAMo IS_LANDSCAPE

LABEL PRODUCTIONo PRINT_DATETIMEo PRODUCTION_DATETIMEo PRODUCTION_QUANTITY

MATERIAL TYPE...

PAPER PRODUCT...

PRODUCTION ORDER STEP# SEQo NASCO_PRODUCTION_STEP_NO

PRODUCTION ORDER PART# SEQo GROUP_SEQ* CONTROL_ID...

PRODUCTION PLAN# PLAN_NOo PLANNED_WEIGHT* IS_LABEL_TO_BE_CHECKED* IS_IN_PRODUCTION* IS_FIX_PLANNED_BEGINo PLANNED_BEGIN_DATETIMEo PLANNED_SETUP_DURATIONo PLANNED_DOWNTIME_DURATIONo PLANNED_DURATION...

MATERIAL...

PRODUCTION ORDER# ORDER_NO* NASCO_CUSTOMER_NO* NASCO_CUSTOMER_NAME...

.

.

.

.

LABEL

.

.

.

.

.

.

.

.

BOXLABEL

.

OUTPUT

.

INVENTORY

.

GLUELPAL

.

REAMLABEL

.

.

.

.

.

.

.

Page 7: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 7

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 8: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 8

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 9: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 9

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 10: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 10

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Datenmodell – Generische Werteliste

Page 11: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 11

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 12: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 12

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 13: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 13

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 14: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 14

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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)

Page 15: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 15

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Datenmodell - Conclusio

Constraints, Constraints, Constraints!!!

Nicht auf Applikation verlassen

Letztes Bollwerk

Zeit investieren

Page 16: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 16

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Geschäftslogik

In die Applikation?

Direkt auf Tabellen inserten/updaten/löschen?

Was ist mit Überprüfungen?

Page 17: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 17

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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 ;-)

Page 18: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 18

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 19: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 19

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Geschäftslogik - Conclusio

Geschäftslogik raus aus dem UI !!!

Page 20: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 20

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Konfigdaten

Wiedereinspielbahre Scripts!

STORE Prozeduren Siehe statements.sql

Page 21: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 21

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Parsing Schema

Verwenden Sie das Applikationsschema?

Page 22: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 22

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 23: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 23

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 24: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 24

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 25: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 25

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Applikationsaufteilung

Zentrale Master Applikation Login Allgemeine Seiten (Benutzerverwaltung, ...) Navigationsleisten Lovs ...

Spezifische Applikationen Subscription verwenden

Page 26: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 26

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 27: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 27

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 28: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 28

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

APEX Einstellungen

Application Builder Defaults

Developer Preferences

UI Interface Defaults Defaults beim erstellen von Tabellen/Views Titel, Labels, Templates, Format Masken Applikationsübergreifend

Page 29: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 29

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

APEX Einstellungen

Default Templates für Komponenten und Regionen

Shared Components\Themes\Edit Theme

Ein wenig versteckt

Page 30: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 30

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 31: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 31

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 32: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 32

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Teamentwicklung – Versionsverwaltung

Ist ein MUSS!!!

Auch bei 1 Mann Entwicklung!

Schnell etwas überschrieben/gelöscht

Historien Vergleich

Tools CVS + TortoiseCVS SVN + TortoiseSVN

Page 33: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 33

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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/backing-up-your-applications/

Page 34: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 34

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Teamentwicklung – Ticketsystem

Nachvollziehbar

Strukturiert

Viele Tools JIRA Bugzilla ...

Page 35: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 35

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 36: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 36

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

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

Page 37: Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek - Dietmar Aust 17.03.2008 – 19.03.2008

Seite 37

Oracle APEX: Fortgeschrittene Techniken aus der PraxisPatrick Wolf – Denes Kubicek – Dietmar Aust

Teamentwicklung – Conclusio

Codierrichtlinien

Versionsverwaltung

Ticketsystem

Regelmäßige Exports

Page Locks verwenden

Einzel Seiten Export mit „As of“