Sunteți pe pagina 1din 47

ADF EMG

A place to discuss best practices and methodologies for JDeveloper ADF enterprise applications Founded mid-2008 by Chris Muir, now 650+ members, staffed by many ACE Directors & ADF experts

Focus is Fusion Tech Stack (ADF Faces, ADF BC)


Online forum plus sessions at major Oracle conferences (OOW, ODTUG, UKOUG, DOAG)

http://groups.google.com/group/adf-methodology

<presenter, organisation>

SAGE Computing Services


Customised Oracle Training Workshops and Consulting

Angels in the Architecture


ADF Application Architectural Patterns

Chris Muir Consultant I do Oracle Stuff

http://one-size-doesnt-fit-all.blogspot.com

Oracle ACE Director

Angels in the Architecture


ADF Application Architectural Patterns

Assumptions & Prerequisites

11g ADF Business Components ADF Faces RC Task Flows ADF Libraries Resource Palette

Angels in the Architecture

Picture removed to reduce ppt download size

Design engineering is more than a mere balancing act between finding the best options among a sea of possibilities, and then implementing those options through the careful orchestration of available resources. To fully manage the challenges of the design process, it is also necessary to develop an instinct for choosing design paths and system configurations that provide some measure of flexibility. This maintains wiggle room as projects advance toward completion, often creating an angel in the architecture to serve as a countermeasure for situations in which the devil is in the details.

http://rfdesign.com/mag/radio_flexibility_designers_best/

ADF Architectural Patterns

Picture removed to reduce ppt download size

ADF Architectural Patterns


Part 1 Single Application Part 2 Single UTF-BTF Application Part 3 Master Application, Multi BTF Application Part 4 A Side Note on Reuse ADF BC, Skins, Pate Templates and more

Part 5 Multi Master Application, Multi BTF Application Part 6 The Services Pattern [Part 7 ...... Fusion Applications]

Part 1: Single Application

Picture removed to reduce ppt download size

Characteristics
Application Model Entity Object View Object Entity Object View Object

AppModule

ViewController Unbounded Task Flow jspx

jspx

Advantages
Simple architecture Self contained, no dependencies, easy to build & deploy Suited for small applications, teams & raw beginners

Disadvantages
Developers can: Break each others work Easily ignore modularization Poor separation of concerns & responsibilities
Re-architecting difficult

Picture removed to reduce ppt download size

Yet More Disadvantages


Complex transactions require careful ADF BC design (unsuitable for beginners) Poor mapping of business processes to technical solution inhibits design Build and deployment is an all or nothing affair Poor separation of concerns leads to difficult module testing
Picture removed to reduce ppt download size

Part 2: Single UTF-Multi BTF App

Picture removed to reduce ppt download size

Characteristics
Application Model Entity Object View Object Entity Object View Object

AppModule

ViewController Unbounded Task Flow jspx jspx

Bounded Task Flow jsff jsff

Bounded Task Flow jsff jsff

Advantages
Relatively simple architecture Sophisticated BTF transactions without ADF BC AM trickery Improved design: mapping between business process to BTFs Improved ability to test modules and re-architect

Disadvantages
Developers can tightly couple accidentally Version control tug of war Build & deployment all or nothing affair
Picture removed to reduce ppt download size

Part 3: Master App, Multi BTF App

Picture removed to reduce ppt download size

Characteristics
Common ADF BC Application Model Entity Object Entity Object View Object View Object View Object View Object Entity Object Entity Object

AppModule

ADF Library JAR

Master Application

BTF App Model View Object View View Object Object

BTF App Model View View Object Object

BTF App Model View Object

AppModule

AppModule

AppModule

ViewController Unbounded Task Flow jspx jspx

ViewController Bounded Task Flow jsff

ViewController

ViewController Bounded Task Flow jsff

Bounded Bounded Task Flow Task Flow jsff jsff

Bounded Bounded Task Flow Task Flow jsff jsff

ADF Library JAR

ADF Library JAR

ADF Library JAR

Advantages
Full power of BTFs
Suited for large applications & developer teams Excellent separation of concerns Each BTF is self contained, loose coupling Developers can become responsible for single BTF Team Leader for Composite Master Easier to reuse BTFs BTFs can be tested standalone

Disadvantages
Complex(er-er) architecture ADF BC security is not possible Dependency management is now an issue Not easy to build & deploy (-> ojdeploy)

TF transaction/scope options must be perfect


Not suitable for beginners

Part 4: A Side Note on Reuse

Picture removed to reduce ppt download size

Reuse is part of the Framework


Common Application Model Framework extensions ADF Library JAR Entity Object View Object Entity Object View Object BTF Application

BTF Application Model


Master Applications Model View View Object Object View View Object Object AppModule AppModule

AppModule

BTF Templates

ADF Library JAR ViewController

Declarative Components

ADF Library JAR

Bounded Task Flow jsff

ViewController Bounded Task Flow Bounded Bounded Task Flowjsff Task Flow jsff ViewController jsff Unbounded Task Flow

Page Templates

ADF Library JAR

Skins

JAR

jspx

jspx

Part 5: Multi Master App, Multi BTF App

Picture removed to reduce ppt download size

Characteristics
Master Application

BTF Application
ADF Library JAR

Master Application

BTF Application ADF Library JAR

BTF Application ADF Library JAR

BTF Application ADF Library JAR

BTF Application ADF Library JAR

Advantages

Total reuse of BTFs

Disadvantages
BTFs need to be very flexible Reuse must be a key design concept & concern Dependency management nightmare

Part 6: The Services Pattern

Picture removed to reduce ppt download size

OrganisationsList.jsff

Common common.model

Organisations Services TF App taskflow.org.model Common Model.jar

Organisations Entity Object

OrganisationsView View Object


OrgAppModule

common.taskflow

Common TaskFlow Template .jar Common DecComp .jar

taskflow.org.view OrganisationsList BTF

common.deccomp

OrganisationsList.jsff

OrganisationsList

OrganisationsForm.jsff

Common common.model

Organisations Services TF App taskflow.org.model Common Model.jar

Organisations Entity Object

OrganisationsView View Object


OrgAppModule

common.taskflow

Common TaskFlow Template .jar Common DecComp .jar

taskflow.org.view OrganisationsList BTF

common.deccomp

OrganisationsList.jsff

OrganisationsForm BTF OrganisationsForm.jsff

OrganisationsForm

OrganisationsList.jsff

Edit Back

OrganisationsForm.jsff

mon

Organisations Services TF App taskflow.orgserv.model Common Model.jar

Organisations Composite TF App taskflow. orgcomp.model

model

ations bject

OrganisationsView View Object


OrgAppModule

askflow

Common TaskFlow Template .jar Common DecComp .jar

taskflow.orgcomp.view taskflow.orgserv.view OrganisationsList BTF OrganisationsList.jsff Orgs Composite BTF OrganisationsView.jsff Region

eccomp

Edit
OrganisationsForm BTF
OrganisationsForm.jsff

Back

OrganisationsEdit.jsff
Region

OrganisationsHeader.jsff

EventsList.jsff

Organisations Services TF App taskflow.orgserv.model OrganisationsView View Object OrgAppModule

Events Composite TF App taskflow. orgcomp.model

Events Services TF App taskflow.evtserv.model EventsView View Object EvtAppModule

taskflow.evtcomp.view taskflow.orgserv.view OrganisationsHeader BTF OrgHeader.jsff EventsComposite BTF EventsView.jsff taskflow.evtserv.view

OrganisationsHeader Region
EventsList BTF EventsList.jsff

OrganisationsList BTF OrganisationsList.jsff

EventsList Region
Edit Back
EventsEdit.jsff Region

OrganisationsForm BTF OrganisationsForm.jsff

EventsForm BTF EventsForm.jsff

OrganisationsHeader.jsff

BookingsList.jsff

Organisations Services TF App taskflow.orgserv.model OrganisationsView View Object OrgAppModule

Bookings Composite TF App Taskflow.bookcomp.model

Bookings Services TF App Taskflow.bookserv.model BookingsView View Object BookAppModule

taskflow.bookcomp.view taskflow.orgserv.view OrganisationsHeader BTF OrgHeader.jsff BookingsComposite BTF BookingsView.jsff Region taskflow.bookserv.view

OrganisationsList BTF OrganisationsList.jsff Region

BookingsList BTF BookingsList.jsff

OrganisationsForm BTF OrganisationsForm.jsff

Main Application App app.model

App.view Unbounded Task Flow

Page1.jspx
Region

Page2.jspx
Region

Page3.jspx

Region

Organisations Composite TF App taskflow.orgcomp.model

Events Composite TF App taskflow.evtcomp.model

Bookings Composite TF App

taskflow.bookcomp.model

taskflow.orgcomp.view OrgsComposite BTF OrganisationsView.jsff Region

taskflow.evtcomp.view EventsComposite BTF EventsView.jsff Region

taskflow.bookcomp.view BookingsComposite BTF BookingsView.jsff Region

Region

Region

Region

Advantages
Extreme reuse Patterns start to appear in BTFs themselves

Disadvantages
Not for the feint hearted Lots of unnecessary requerying data Overcomplicates even simple applications

Guidelines
Use fragments and regions Services should be promiscuous with transactions and data control scope Control overall transactions/data control scope from composite task flows If needed, wrap composites in composites
Reuse must be a mindset, not a nice to have if you adopt this Reuse must be considered at the requirements level, just not the technical level

Part 7: Fusion Applications

Picture removed to reduce ppt download size

Oracle ADF: Best Practices From Fusion Applications Teams (OpenWorld 2009)

http://www.scribd.com/doc/21018676/Best-Practices-From-Fusion-Applications-Teams-OpenWorld-2009

Conclusion

Picture removed to reduce ppt download size

SAGE Computing Services


Customised Oracle Training Workshops and Consulting

Questions and Answers?


Presentations are available from our website: www.sagecomputing.com.au enquiries@sagecomputing.com.au chris.muir@sagecomputing.com.au http://one-size-doesnt-fit-all.blogspot.com Twitter: chriscmuir Linkedin: http://au.linkedin.com/in/chriscmuir

Further Reading
Inter-region communication techniques
Contextual Events http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/web_adv.htm#CACJBFGI JDev 11g: Programmatic Contextual Events http://one-size-doesnt-fit-all.blogspot.com/2010/08/jdev-11g-programmatic-contextual-events.html Master-child BTF chaperone a contextual event alternative http://one-size-doesnt-fit-all.blogspot.com/2010/09/master-child-btf-chaperone-contextual.html

Task Flow transactions and ADF BC Application Module considerations


ADF Regions and Nested Application Modules to Improve Performance http://andrejusb.blogspot.com/2010/06/adf-regions-and-nested-application.html How to Reduce Database Connections and Reuse ViewController Layer http://andrejusb.blogspot.com/2010/10/how-to-reduce-database-connections-and.html JDev 11g, Task Flows & ADF BC the Always use Existing Transaction option it's not what it seems http://one-size-doesnt-fit-all.blogspot.com/2011/05/jdev-11g-task-flows-adf-bc-always-use.html JDev 11g, Task Flows & ADF BC one root Application Module to rule them all? http://one-size-doesnt-fit-all.blogspot.com/2011/05/jdev-11g-task-flows-adf-bc-always-use.html

S-ar putea să vă placă și