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