1 / 37

Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design

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

andren
Download Presentation

Oracle APEX: Fortgeschrittene Techniken aus der Praxis => Design

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Agenda • Datenmodell • Geschäftslogik • Konfigdaten • Parsing Schema • Workspace • Applikationsaufteilung • Seitennummerierung/-gruppierung • APEX Einstellungen • Teamentwicklung Patrick Wolf – Denes Kubicek – Dietmar Aust

  3. Datenmodell • Zeit investieren! Patrick Wolf – Denes Kubicek – Dietmar Aust

  4. Datenmodell • Datenmodell leben länger als Applikationen • Ist letztes Bollwerk für konsistente Daten Patrick Wolf – Denes Kubicek – Dietmar Aust

  5. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  6. Patrick Wolf – Denes Kubicek – Dietmar Aust

  7. 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, ...) Patrick Wolf – Denes Kubicek – Dietmar Aust

  8. 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, ...) Patrick Wolf – Denes Kubicek – Dietmar Aust

  9. 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, ...) Patrick Wolf – Denes Kubicek – Dietmar Aust

  10. Datenmodell – Generische Werteliste Patrick Wolf – Denes Kubicek – Dietmar Aust

  11. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  12. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  13. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  14. 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) Patrick Wolf – Denes Kubicek – Dietmar Aust

  15. Datenmodell - Conclusio • Constraints, Constraints, Constraints!!! • Nicht auf Applikation verlassen • Letztes Bollwerk • Zeit investieren Patrick Wolf – Denes Kubicek – Dietmar Aust

  16. Geschäftslogik • In die Applikation? • Direkt auf Tabellen inserten/updaten/löschen? • Was ist mit Überprüfungen? Patrick Wolf – Denes Kubicek – Dietmar Aust

  17. 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 ;-) Patrick Wolf – Denes Kubicek – Dietmar Aust

  18. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  19. Geschäftslogik - Conclusio • Geschäftslogik raus aus dem UI !!! Patrick Wolf – Denes Kubicek – Dietmar Aust

  20. Konfigdaten • Wiedereinspielbahre Scripts! • STORE Prozeduren • Siehe statements.sql Patrick Wolf – Denes Kubicek – Dietmar Aust

  21. Parsing Schema • Verwenden Sie das Applikationsschema? Patrick Wolf – Denes Kubicek – Dietmar Aust

  22. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  23. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  24. 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, ...) Patrick Wolf – Denes Kubicek – Dietmar Aust

  25. Applikationsaufteilung • Zentrale Master Applikation • Login • Allgemeine Seiten (Benutzerverwaltung, ...) • Navigationsleisten • Lovs • ... • Spezifische Applikationen • Subscription verwenden Patrick Wolf – Denes Kubicek – Dietmar Aust

  26. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  27. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  28. APEX Einstellungen • Application Builder Defaults • Developer Preferences • UI Interface Defaults • Defaults beim erstellen von Tabellen/Views • Titel, Labels, Templates, Format Masken • Applikationsübergreifend Patrick Wolf – Denes Kubicek – Dietmar Aust

  29. APEX Einstellungen • Default Templates für Komponenten und Regionen • Shared Components\Themes\Edit Theme • Ein wenig versteckt Patrick Wolf – Denes Kubicek – Dietmar Aust

  30. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  31. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  32. Teamentwicklung – Versionsverwaltung • Ist ein MUSS!!! • Auch bei 1 Mann Entwicklung! • Schnell etwas überschrieben/gelöscht • Historien Vergleich • Tools • CVS + TortoiseCVS • SVN + TortoiseSVN Patrick Wolf – Denes Kubicek – Dietmar Aust

  33. 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/ Patrick Wolf – Denes Kubicek – Dietmar Aust

  34. Teamentwicklung – Ticketsystem • Nachvollziehbar • Strukturiert • Viele Tools • JIRA • Bugzilla • ... Patrick Wolf – Denes Kubicek – Dietmar Aust

  35. 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 Patrick Wolf – Denes Kubicek – Dietmar Aust

  36. 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!!! Patrick Wolf – Denes Kubicek – Dietmar Aust

  37. Teamentwicklung – Conclusio • Codierrichtlinien • Versionsverwaltung • Ticketsystem • Regelmäßige Exports • Page Locks verwenden • Einzel Seiten Export mit „As of“ Patrick Wolf – Denes Kubicek – Dietmar Aust

More Related