ADF EMG A place to discuss best practices
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 11 g 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 App. Module View. Controller Unbounded Task Flow 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 App. Module View. Controller Unbounded Task Flow jspx Bounded Task Flow 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 View Object Entity Object App. Module ADF Library JAR Master Application BTF App Model View Object View. Controller Unbounded Task Flow jspx View Object View Object App. Module View. Controller Bounded Task Flow jsff Bounded Task Flow jsff ADF Library JAR jsff Bounded Task Flow jsff 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 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 BTF Application Common Application Model. BTF Application Model Framework extensions Entity Object ADF Library JAR Entity Object Master Applications Model View Object App. Module View Object App. Module BTF Templates ADF Library JAR View. Controller Declarative Components Page Templates ADF Library JAR Bounded Task Flow jsff View. Controller Bounded Task Flowjsff Task Flow jsff View. Controller jsff Unbounded Task Flow Skins JAR jspx
Part 5: Multi Master App, Multi BTF App Picture removed to reduce ppt download size
Characteristics Master Application BTF Application ADF Library JAR BTF Application ADF Library JAR Master Application
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
Organisations. List. jsff
Common Organisations Services TF App common. model taskflow. org. model Organisations Entity Object Common Model. jar Organisations. View Object Org. App. Module common. taskflow common. deccomp Common Task. Flow Template. jar Common Dec. Comp. jar taskflow. org. view Organisations. List BTF Organisations. List. jsff Organisations. List
Organisations. Form. jsff
Common Organisations Services TF App common. model taskflow. org. model Organisations Entity Object Common Model. jar Organisations. View Object Org. App. Module common. taskflow common. deccomp Common Task. Flow Template. jar Common Dec. Comp. jar taskflow. org. view Organisations. List BTF Organisations. List. jsff Organisations. Form BTF Organisations. Form. jsff Organisations. Form
Organisations. List. jsff Edit Back Organisations. Form. jsff
mon model ations bject askflow eccomp Common Model. jar Organisations Services TF App Organisations Composite TF App taskflow. orgserv. model taskflow. orgcomp. model Organisations. View Object Org. App. Module Common Task. Flow Template. jar Common Dec. Comp. jar taskflow. orgcomp. view taskflow. orgserv. view Orgs Composite BTF Organisations. List BTF Organisations. View. jsff Organisations. List. jsff Region Edit Back Organisations. Form BTF Organisations. Edit. jsff Organisations. Form. jsff Region
Organisations. Header. jsff Events. List. jsff
Organisations Services TF App Events Composite TF App Events Services TF App taskflow. orgserv. model taskflow. orgcomp. model taskflow. evtserv. model Organisations. View Object Events. View Object Org. App. Module Evt. App. Module taskflow. evtcomp. view taskflow. orgserv. view Events. Composite BTF Organisations. Header BTF Events. View. jsff Org. Header. jsff Region Organisations. Header Organisations. List BTF Events. List Region Organisations. List. jsff Edit Organisations. Form BTF Organisations. Form. jsff taskflow. evtserv. view Events. List BTF Events. List. jsff Back Events. Edit. jsff Region Events. Form BTF Events. Form. jsff
Organisations. Header. jsff Bookings. List. jsff
Organisations Services TF App Bookings Composite TF App Bookings Services TF App taskflow. orgserv. model Taskflow. bookcomp. model Taskflow. bookserv. model Organisations. View Object Bookings. View Object Org. App. Module Book. App. Module taskflow. bookcomp. view taskflow. orgserv. view Bookings. Composite BTF Organisations. Header BTF Bookings. View. jsff Org. Header. jsff Region Organisations. List BTF Organisations. List. jsff Organisations. Form BTF Organisations. Form. jsff taskflow. bookserv. view Bookings. List BTF Region Bookings. List. jsff
Main Application App app. model App. view Unbounded Task Flow Page 3. jspx Page 1. jspx Page 2. jspx Region Organisations Composite 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 Orgs. Composite BTF Events. Composite BTF Bookings. Composite BTF Organisations. View. jsff Events. View. jsff Bookings. View. jsff 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 (Open. World 2009) http: //www. scribd. com/doc/21018676/Best-Practices-From-Fusion-Applications-Teams-Open. World-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/E 14571_01/web. 1111/b 31974/web_adv. htm#CACJBFGI JDev 11 g: Programmatic Contextual Events http: //one-size-doesnt-fit-all. blogspot. com/2010/08/jdev-11 g-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 View. Controller Layer http: //andrejusb. blogspot. com/2010/10/how-to-reduce-database-connections-and. html JDev 11 g, 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-11 g-task-flows-adf-bc-always-use. html JDev 11 g, Task Flows & ADF BC – one root Application Module to rule them all? http: //one-size-doesnt-fit-all. blogspot. com/2011/05/jdev-11 g-task-flows-adf-bc-always-use. html
- Slides: 47