Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek -...

Post on 06-Apr-2015

113 views 5 download

Transcript of Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design Patrick Wolf – Denes Kubicek -...

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

Seite 3

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

Datenmodell

Zeit investieren!

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

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

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

.

.

.

.

.

.

.

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

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

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

Seite 10

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

Datenmodell – Generische Werteliste

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

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

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

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)

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

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?

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

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

Seite 19

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

Geschäftslogik - Conclusio

Geschäftslogik raus aus dem UI !!!

Seite 20

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

Konfigdaten

Wiedereinspielbahre Scripts!

STORE Prozeduren Siehe statements.sql

Seite 21

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

Parsing Schema

Verwenden Sie das Applikationsschema?

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

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

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

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

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

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

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

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

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

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

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

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/

Seite 34

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

Teamentwicklung – Ticketsystem

Nachvollziehbar

Strukturiert

Viele Tools JIRA Bugzilla ...

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

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

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“