Adf Architectural Patterns - Longbeach Odtug Minus Pics

ADF Architectural Patterns - LongBeach ODTUG Minus Pics
View more...
   EMBED

Share

Preview only show first 6 pages with water mark for full document please download

Transcript

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 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 other’s 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.documento.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 [email protected] [email protected] 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