You are on page 1of 46

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

To fully manage the challenges of the design process.com/mag/radio_flexibility_designers_best/ . 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.Design engineering is more than a mere balancing act between finding the best options among a sea of possibilities. often creating “an angel in the architecture” to serve as a countermeasure for situations in which “the devil is in the details. and then implementing those options through the careful orchestration of available resources.” http://rfdesign.

ADF Architectural Patterns Picture removed to reduce ppt download size .

Skins. Multi BTF Application Part 6 The “Services Pattern” [Part 7 . Multi BTF Application Part 4 A Side Note on Reuse ADF BC.. Fusion Applications] ..ADF Architectural Patterns Part 1 Single Application Part 2 Single UTF-BTF Application Part 3 Master Application... Pate Templates and more Part 5 Multi Master Application..

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 .

teams & raw beginners Disadvantages Developers can: Break each other’s work Easily ignore modularization Poor separation of concerns & responsibilities Re-architecting difficult Picture removed to reduce ppt download size . easy to build & deploy Suited for small applications.Advantages Simple architecture Self contained. no dependencies.

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 BTF App Model BTF App Model View Object View View Object Object View View Object Object View Object AppModule AppModule AppModule ViewController Unbounded Task Flow ViewController Bounded Task Flow jsff ViewController ViewController Bounded Task Flow jsff jspx jspx Bounded Bounded Task Flow Flow Task jsff jsff Bounded Bounded Task Flow Flow Task jsff jsff ADF Library JAR ADF Library JAR ADF Library JAR .

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

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 Model Application 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 .

.

jsff .OrganisationsList.

jar Common DecComp .jar common.taskflow taskflow.model OrganisationsView View Object OrgAppModule Common TaskFlow Template .model Organisations Entity Object Common Model.jar Organisations Services TF App taskflow.deccomp OrganisationsList.org.view OrganisationsList BTF common.Common common.org.jsff OrganisationsList .

OrganisationsForm.jsff .

deccomp OrganisationsList.model OrganisationsView View Object OrgAppModule Common TaskFlow Template .jar Organisations Services TF App taskflow.org.model Organisations Entity Object Common Model.org.jsff OrganisationsForm .taskflow taskflow.view OrganisationsList BTF common.jsff OrganisationsForm BTF OrganisationsForm.jar Common DecComp .Common common.jar common.

OrganisationsList.jsff .jsff Edit Back OrganisationsForm.

orgserv. orgcomp.mon Organisations Services TF App taskflow.view OrganisationsList BTF OrganisationsList.orgserv.view taskflow.model model ations bject taskflow.orgcomp.model Common Model.jar Organisations Composite TF App taskflow.jar Common DecComp .jsff Region .jsff Orgs Composite BTF OrganisationsView.jsff Region askflow eccomp Edit OrganisationsForm BTF OrganisationsForm.jsff Back OrganisationsEdit.jar OrganisationsView View Object OrgAppModule Common TaskFlow Template .

jsff .jsff EventsList.OrganisationsHeader.

jsff EventsComposite BTF EventsView.jsff taskflow.evtserv.evtserv.evtcomp.jsff .model OrganisationsView View Object OrgAppModule Events Composite TF App taskflow.orgserv.jsff EventsForm BTF EventsForm.view OrganisationsHeader BTF OrgHeader.model Events Services TF App taskflow.jsff Region OrganisationsForm BTF OrganisationsForm.orgserv.Organisations Services TF App taskflow.model EventsView View Object EvtAppModule taskflow.jsff OrganisationsList BTF OrganisationsList.view OrganisationsHeader Region EventsList BTF EventsList.jsff EventsList Region Edit Back EventsEdit.view taskflow. orgcomp.

OrganisationsHeader.jsff BookingsList.jsff .

model Bookings Services TF App Taskflow.bookcomp.orgserv.jsff .model OrganisationsView View Object OrgAppModule Bookings Composite TF App Taskflow.model BookingsView View Object BookAppModule taskflow.orgserv.Organisations Services TF App taskflow.jsff Region BookingsList BTF BookingsList.jsff BookingsComposite BTF BookingsView.bookserv.jsff Region taskflow.view OrganisationsList BTF OrganisationsList.view OrganisationsHeader BTF OrgHeader.jsff OrganisationsForm BTF OrganisationsForm.bookserv.view taskflow.bookcomp.

jspx Region Page3.view EventsComposite BTF EventsView.jspx Region Organisations Composite TF App taskflow.orgcomp.model Bookings Composite TF App taskflow.Main Application App app.view BookingsComposite BTF BookingsView.evtcomp.model App.jsff Region taskflow.jspx Region Page2.view OrgsComposite BTF OrganisationsView.orgcomp.evtcomp.model taskflow.jsff Region Region Region Region .bookcomp.bookcomp.jsff Region taskflow.model Events Composite TF App taskflow.view Unbounded Task Flow Page1.

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 .

just not the technical level . not a “nice to have” if you adopt this Reuse must be considered at the requirements level.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”.

Part 7: Fusion Applications Picture removed to reduce ppt download size .

.

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

.

.

Conclusion Picture removed to reduce ppt download size .

muir@sagecomputing.com.sagecomputing.blogspot.au chris.com.com.SAGE Computing Services Customised Oracle Training Workshops and Consulting Questions and Answers? Presentations are available from our website: www.au http://one-size-doesnt-fit-all.au enquiries@sagecomputing.com Twitter: chriscmuir Linkedin: http://au.linkedin.com/in/chriscmuir .

com/2010/08/jdev-11g-programmatic-contextual-events.blogspot.html JDev 11g.html .html JDev 11g.com/2010/09/master-child-btf-chaperone-contextual.html How to Reduce Database Connections and Reuse ViewController Layer http://andrejusb.htm#CACJBFGI JDev 11g: Programmatic Contextual Events http://one-size-doesnt-fit-all.com/2011/05/jdev-11g-task-flows-adf-bc-always-use.html Master-child BTF chaperone – a contextual event alternative http://one-size-doesnt-fit-all.oracle. Task Flows & ADF BC – the Always use Existing Transaction option – it's not what it seems http://one-size-doesnt-fit-all. Task Flows & ADF BC – one root Application Module to rule them all? http://one-size-doesnt-fit-all.Further Reading Inter-region communication techniques Contextual Events http://download.com/2010/06/adf-regions-and-nested-application.blogspot.blogspot.com/2010/10/how-to-reduce-database-connections-and.blogspot.html Task Flow transactions and ADF BC Application Module considerations ADF Regions and Nested Application Modules to Improve Performance http://andrejusb.com/docs/cd/E14571_01/web.blogspot.1111/b31974/web_adv.com/2011/05/jdev-11g-task-flows-adf-bc-always-use.blogspot.