470 likes | 644 Views
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)
E N D
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…) <presenter, organisation> http://groups.google.com/group/adf-methodology
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 Entity Object AppModule View Object View Object 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 other’s work • Easily ignore modularization • Poor separation of concerns & • responsibilities • Re-architecting difficult • c 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 Entity Object AppModule View Object View Object ViewController Unbounded Task Flow jspx jspx Bounded Task Flow Bounded Task Flow jsff jsff 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 AppModule EntityObject EntityObject View Object View Object View Object View Object EntityObject EntityObject BTF App BTF App ADF Library JAR Master Application BTF App Model Model Model ViewController ViewController AppModule AppModule AppModule View Object View Object View Object View Object View Object View Object Bounded Task Flow Bounded Task Flow Bounded Task Flow Bounded Task Flow jsff jsff jsff jsff ViewController ViewController Unbounded Task Flow Bounded Task Flow Bounded Task Flow jspx jspx 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 BTF Application BTF Application Model Model Master Applications Model Framework extensions AppModule View Object View Object ADF Library JAR AppModule View Object View Object Entity Object Entity Object AppModule View Object View Object ViewController ViewController BTF Templates ADF Library JAR Bounded Task Flow Bounded Task Flow Bounded Task Flow Bounded Task Flow jsff jsff Declarative Components ADF Library JAR jsff jsff Page Templates ADF Library JAR ViewController Unbounded Task Flow jspx jspx Skins JAR
Part 5: Multi Master App, Multi BTF App Picture removed to reduce ppt download size
Characteristics Master Application BTF Application Master Application ADF Library JAR 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
Common Organisations Services TF App common.model taskflow.org.model OrgAppModule Organisations Entity Object Common Model.jar OrganisationsView View Object Common TaskFlow Template.jar common.taskflow taskflow.org.view OrganisationsListBTF OrganisationsList common.deccomp Common DecComp.jar OrganisationsList.jsff
Common Organisations Services TF App common.model taskflow.org.model OrgAppModule Organisations Entity Object Common Model.jar OrganisationsView View Object Common TaskFlow Template.jar common.taskflow taskflow.org.view OrganisationsListBTF common.deccomp Common DecComp.jar OrganisationsList.jsff OrganisationsFormBTF OrganisationsForm OrganisationsForm.jsff
OrganisationsList.jsff Edit Back OrganisationsForm.jsff
Common Organisations Services TF App Organisations Composite TF App common.model taskflow.orgserv.model taskflow. orgcomp.model OrgAppModule Organisations Entity Object Common Model.jar OrganisationsView View Object taskflow.orgcomp.view Common TaskFlow Template.jar common.taskflow taskflow.orgserv.view Orgs Composite BTF OrganisationsListBTF OrganisationsView.jsff common.deccomp Common DecComp.jar OrganisationsList.jsff Region Edit Back OrganisationsFormBTF OrganisationsEdit.jsff OrganisationsForm.jsff Region
OrganisationsHeader.jsff EventsList.jsff
Organisations Services TF App Events Composite TF App Events Services TF App taskflow.orgserv.model taskflow. orgcomp.model taskflow.evtserv.model OrgAppModule EvtAppModule OrganisationsView View Object EventsView View Object taskflow.evtcomp.view taskflow.orgserv.view EventsCompositeBTF taskflow.evtserv.view OrganisationsHeaderBTF EventsView.jsff OrganisationsHeader OrgHeader.jsff Region OrganisationsListBTF EventsListBTF EventsList Region OrganisationsList.jsff EventsList.jsff Edit Back EventsEdit.jsff OrganisationsFormBTF EventsFormBTF Region OrganisationsForm.jsff EventsForm.jsff
OrganisationsHeader.jsff BookingsList.jsff
Organisations Services TF App Bookings Composite TF App Bookings Services TF App taskflow.orgserv.model Taskflow.bookcomp.model Taskflow.bookserv.model OrgAppModule BookAppModule OrganisationsView View Object BookingsView View Object taskflow.bookcomp.view taskflow.orgserv.view BookingsCompositeBTF taskflow.bookserv.view OrganisationsHeaderBTF BookingsView.jsff OrgHeader.jsff Region OrganisationsListBTF BookingsListBTF Region OrganisationsList.jsff BookingsList.jsff OrganisationsFormBTF OrganisationsForm.jsff
Main Application App app.model App.view Unbounded Task Flow Page3.jspx Page1.jspx Page2.jspx Region Region Region OrganisationsComposite TF App Events Composite TF App Bookings Composite TF App taskflow.orgcomp.model taskflow.evtcomp.model taskflow.bookcomp.model taskflow.orgcomp.view taskflow.evtcomp.view taskflow.bookcomp.view OrgsCompositeBTF EventsCompositeBTF BookingsCompositeBTF OrganisationsView.jsff EventsView.jsff BookingsView.jsff Region Region 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 • c
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 • JDev11g, 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