Vortrag von Ulrich Gerkmann-Bartels (@enpit) und Andreas Koop (@enpit) zu effektiven Blueprints für Oracle Forms zu Oracle ADF auf der DOAG 2013 Konferenz (#doag2013).
2. ÜBER MICH
Andreas Koop
Geschäftsführung & Consultant
Oracle Technologies
Beratung, Training Oracle Technologie
ADF Certified Implementation Specialist
Community
DOAG, ADF EMG, ADF German Community, Twitter @multikoop
Blog
Technical http://multikoop.blogspot.com
Sonstiges http://www.enpit.de/blog
2
3. ÜBER MICH
Ulrich Gerkmann-Bartels
Geschäftsführung & Consultant
Oracle Technologies
Beratung, Training Oracle Technologie
ADF Certified Implementation Specialist
Community
DOAG, ADF EMG, ADF German Community, Twitter @Gerkmann-Bartels
Blog
Technical http://maybe-interesting.blogspot.com
Sonstiges http://www.enpit.de/blog
Ulrich Gerkmann-Bartels
3
4. ENTERPRISE PRAGMATIC IT
Consulting
Oracle Business
Intelligence
Training
Oracle
WebCenter
Oracle ADF
ADF Mobile
Oracle Fusion Middleware
4
Development
Oracle
WebLogic
7. BLUEPRINT
ALS SPRACHBILD
‣
Ein Bauplan
‣
„...Metaphorisch steht das eigentlich rein
technologisch gemeinte Wort Blaupause für ein
maßgebendes Urmodell oder einen
Masterplan...“*
‣
Kommunikationshilfe -> Design Pattern
‣
Design und Implementierungsvorgabe
* Wikipedia: Blaupause - Verwendung als Sprachbild
DOAG 2013
8. FOKUS
‣
Die neue Applikation soll in der Darstellung und
User Interaktion der Forms - Anwendung gleichen.
‣
Business Logik befindet sich in der Datenbank
‣
Ergänzender und unterstützender Datenbankcode
ist akzeptabel
‣
Bestehendes Entwicklungsteam soll sich in der
Lernphase und Weiterentwicklung wiederfinden
DOAG 2013
13. HERAUSFORDERUNG
‣
Ein Dialog soll als ein Konstrukt im Konzept erkennbar sein
‣
Dialoge sollen keine separaten Datenbankverbindung öffnen
‣
Formulare sollen auch in anderen Rahmenapplikationen
einsetzbar sein
‣
Formulare im Dialog sollen ggfs. eigenen
Transaktionsrahmen setzen
‣
Dialoge sollen sehr einfach aus der ganzen Applikation
aufrufbar sein.
DOAG 2013
14. BLUEPRINT
1.
(Ggfs.) Dialog - Applikation / Workspace
im JDeveloper erstellen
2.
Dialog basierend auf dialog-template.jsf
erstellen
3.
Dialog BTF basierend auf dialog-copytemplate.xml erstellen
4.
Form basierend auf form-template.jsf
erstellen
5.
Dialog BTF durch View und
MethodeActivity auffüllen
6.
DOAG 2013
enpit.sample.dlgfrm
Punkt 1. - 4. sind
prinzipiell durch einen
Wizard generierbar.
Binding in der Form umsetzen
14
15. form-template.jsf
DESIGN
form.jsff
Menu
Register
Use Existing Transaction if Possible
Share Datacontrols with calling task flow entry
dialog-btf
dialog-copy-btf-template
dialog.jsf
codename.dialog
dialog-template.jsf
dialog-base-btf
DialogManager
Scope:View
adfc-config.xml
DOAG 2013
Dialog: Vollständige ausführbare Benutzeroberfläche
Form: Teil eines Benutzerinterfaces
15
16. BEWERTUNG
‣
Konzept ermöglicht eine einfache Orientierung für
Forms-Entwickler
‣
Flexible Granularität und Bereitstellung*
1-N Dialoge pro JDev-Application
ADF Library / Shared WLS Library / EAR
‣
Dialoge sind für sich alleine lauffähig und testbar
*DOAG Development 2013: Continuous Delivery in ADF Projekten...
DOAG 2013
16
18. HERAUSFORDERUNG
‣
Validierung bei Wechsel von Registerkarten
‣
Reduzierung der Komplexität (Standard-PanelTabbed
Komponente lädt alle Registerkarten-Inhalte!)
‣
Ausbaufähig zu einem Prozessfluss (BPM)
DOAG 2013
20. BLUEPRINT
‣
Realisierung durch ADF Taskflow Train
‣
Register werden durch af:navigationPane (hint=tabs)
auf dem Train-Model erzeugt
‣
Jeder Reiterinhalt ist ein Page-Fragment (JSFF)
‣
Von jedem Page-Fragment führt eine Navigation-Rule
namens „validate“ zur jeweiligen
Validierungsmethode
DOAG 2013
21. DESIGN
BTF als Train
tabs-template.jsf
Tabs by
navigationPane
on TrainModel!
DOAG 2013
tabs-template-btf
TabsController
Scope:PageFlow
TabsViewBean
Scope:View
#{pageFlowScope.TabsController.afterValidate}
22. DESIGN
‣
BTF (Train) auf Basis von Tabs-Template-BTF
‣
Validierungsmethoden, z.B. in AM-Impl Klasse
DOAG 2013
23. BEWERTUNG
‣
Clean and Simple Design Pattern
‣
Die Vorgehensweise ist für ADF Rookies / Forms
Veteranen transparent und wartbar
‣
Ausbaufähig zu einem Prozessablauf (da bereits als
Train implementiert ;)
DOAG 2013
25. HERAUSFORDERUNG
‣
Suchdialoge in klassischen Forms-Anwendungen
sind meist sehr komplex und umfangreich
‣
ADF BC ViewCriteria Ansatz ist zu unflexibel. Es
lassen sich nur wenige Anpassungen vornehmen
‣
Beispiel
DOAG 2013
27. BLUEPRINT
‣
Einführung eines transienten,
programmatischen ViewObjektes mit exakt
einer Row (als sog. ValueHolder) für die Aufnahme
der Suchkriterien
‣
Es können alle ADF BC Features für die
Erstellung der Suchmaske genutzt werden
‣
Der Flexibilität sind keine Grenzen gesetzt
‣
Gewohnte (ADF Minded) Arbeitsweise über die
DataControl Palette
DOAG 2013
27
30. BEWERTUNG
‣
Model-Driven LOVs können für den Aufbau des
Suchdialogs verwendet werden.
‣
Maximale Flexibilität beim Oberflächendesign der
Suchmaske
‣
Dynamische Zusammenstellung der WHERE- und
ORDER BY-Klausel möglich (bei Bedarf)
‣
Die Vorgehensweise ist für ADF Rookies / Forms
Veteranen transparent und wartbar
DOAG 2013
30
32. HERAUSFORDERUNG
‣
Sperren von Business Objekten / Datensätzen über
einen längeren Zeitraum ohne einen physikalischen
Sperre (Lock) zuhalten
‣
Nutzen von Connection Pooling
DOAG 2013
34. DESIGN
‣
Erweiterung der Tabellen oder eigenen Datenstruktur
zur Verwaltung einer Sperre
‣
Prüfung der Sperre durch generierte Trigger oder
Programmablauf
‣
Keep-Alive durch (ADF-) Anwendung notwendig
‣
Automatische entfernen einer Sperre durch
Datenbank - Job
DOAG 2013
34
37. BEWERTUNG
‣
Konzept lässt sich transparent in bestehende
Datenbankanwendungen einführen.
‣
Löst nicht die Problematik von globalen
Packagevariablen und im Code gesetzten Locks.
‣
Erfordert ein eigenes Management der Sperre
‣
Durch Integration in Dialog Task Flow Template leicht
nutzbar
DOAG 2013
37