EFFEKTIVE BLUEPRINTS
FÜR FORMS2ADF

Ulrich Gerkmann-Bartels
und

Andreas Koop

DOAG 2013
Ü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
Ü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
ENTERPRISE PRAGMATIC IT

Consulting
Oracle Business
Intelligence

Training
Oracle
WebCenter

Oracle ADF
ADF Mobile

Oracle Fusion Middleware

4

Development
Oracle
WebLogic
AGENDA
Blueprint

Dialog-BTF-Form

No. One

Dialog-Register
ValueHolder-ViewObject
Reserve-BusinessObject

DOAG 2013

5
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
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
AGENDA
Blueprint

Dialog-Form

No. One

Dialog-Register
ValueHolder-ViewObject
Reserve-BusinessObject

DOAG 2013

9
SMILE
AGENDA
Blueprint

Dialog-Form

No. One

Dialog-Register
ValueHolder-ViewObject
Reserve-BusinessObject

DOAG 2013

12
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
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
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
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
AGENDA
Blueprint

Dialog-Form

No. One

Dialog-Register
ValueHolder-ViewObject
Reserve-BusinessObject

DOAG 2013

17
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
BLUEPRINT
‣

Register als ADF Train mit Validierung

DnD

DOAG 2013
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
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}
DESIGN
‣

BTF (Train) auf Basis von Tabs-Template-BTF

‣

Validierungsmethoden, z.B. in AM-Impl Klasse

DOAG 2013
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
AGENDA
Blueprint

Dialog-Form

No. One

Dialog-Register
ValueHolder-ViewObject
Reserve-BusinessObject

DOAG 2013

24
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
BLUEPRINT
‣

ValueHolder VO definieren

‣

ValueHolder VO-Instanz im AM exponieren

DOAG 2013

26
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
DESIGN

DOAG 2013

28
DESIGN
‣

Suche durchführen in einer Service-Methode (AM
oder
VO
Level)

‣

Suchdialog erstellen

DOAG 2013

29
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
AGENDA
Blueprint

Dialog-Form

No. One

Dialog-Register
ValueHolder-ViewObject
Reserve-BusinessObject

DOAG 2013

31
HERAUSFORDERUNG
‣

Sperren von Business Objekten / Datensätzen über
einen längeren Zeitraum ohne einen physikalischen
Sperre (Lock) zuhalten

‣

Nutzen von Connection Pooling

DOAG 2013
BLUEPRINT
throw exception if
business object is locked !

DOAG 2013

33
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
DESIGN

DOAG 2013

35
DESIGN

DOAG 2013

36
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
*One more thing...
DOAG 2013

39
DOAG 2013

40
VIELEN DANK FÜR IHRE
AUFMERKSAMKEIT
Join our team
We‘re HIRING
!

HABEN SIE NOCH FRAGEN?
Effective Blueprints for Forms 2 Oracle ADF

Effective Blueprints for Forms 2 Oracle ADF