Download - Next Generation Controller for JSF
![Page 1: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/1.jpg)
Next Generation Controller for JSF Shay ShmeltzerShay ShmeltzerSr. Group Manager – Oracle JDeveloper and Oracle ADF
![Page 2: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/2.jpg)
Agenda
• The Traditional JSF ControllerExtending the Controller Functionality• Extending the Controller Functionality
• Adding Reusability to the Controller
![Page 3: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/3.jpg)
What is a Controller in a Java EE web application?application?
• Inherent in the Model-View-Controller architecture• Decouples the view from the navigation logic• Orchestrates interaction application view and model• Connects pages to a logical flow that defines the
application‘s business process• A map of navigation targets and the paths between• A map of navigation targets and the paths between
them
![Page 4: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/4.jpg)
It’s all about maintenance…
• Without a web controller page links are hardcodedg• For example:
<a href=“orderLines.jsp">
Th h
customer.jsp orderLines.jsp
• Then we have a change:
customer.jsp orderLines.jsp
orderSelect.jsp
<a href=“orderSelect.jsp"> <a href=“orderLines.jsp">
![Page 5: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/5.jpg)
Web Controllers provide an AbstractionAbstraction
• We deal with named targets or eventsg
• Changing flow no longer requires
showOrder
customer jsp orderLines jsplonger requirespage changes
customer.jsp orderLines.jsp
• Controller metadatadefines how to handlethe event
customer.jsp orderLines.jsp
showOrder showOrderDetailthe eventorderSelect.jsp
showOrder showOrderDetail
![Page 6: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/6.jpg)
The JSF Controller
• Part of the Java EE Standard• But it has some shortcomings for larger applications
• Applications are one large flow where everything is visible, no logical application partitioningno logical application partitioning
• Limited object scoping (in JSF 1.2)– Nothing that spans several pages but less than session– Nothing partitioned by browser window / frame
• Everything is a page– the only way to invoke application logic is to tie it to a UI y y pp g
component the user activates
![Page 7: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/7.jpg)
Agenda
• The Traditional JSF ControllerExtending the Controller Functionality• Extending the Controller Functionality
• Adding Reusability to the Controller
![Page 8: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/8.jpg)
ADF Controller’s Mission
• Extend the controller functionalityy• Taskflow (mini-process flow)• Granular memory scopes• Reusability• Reusability
• Build on top of existing Java EE standards• Facilitate building modular & easy to maintain web g y
applications• Fully declarative development
D & d d t di• Draw & drag-n-drop components on a diagram
![Page 9: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/9.jpg)
ADF Controller Model
• Built from standard JSF extension points• e.g. NavigationHandler, PhaseListener, etc.
• Applications consist of “page flows”C t l fl t t ll d “ ti iti ”• Control flow targets are called “activities”
• Basic ADF activity types– ViewView– Router– Method-call
C• Control Flow Rules– Source and destination activity– Matching “outcome” nameg
![Page 10: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/10.jpg)
Example ADF Page Flow
![Page 11: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/11.jpg)
View Activity
• Used to display a pagey g• Attributes:
– Page file (e.g. specialDeals.jspx)R di t b h i– Redirect behavior
– Input parameters– Bookmark behavior
![Page 12: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/12.jpg)
Router Activity
• Conditional Control Flow• Similar to switch statement• Series of EL expressions
– First to evaluate to true wins
• Default outcome if no expressions are trueexpressions are true
![Page 13: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/13.jpg)
Method-Call Activity
• Invokes application logic gvia an EL expression
• May generate a fixed outcome or use methodoutcome or use method return value
![Page 14: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/14.jpg)
ADF Memory Scopes
• PageFlowScopeg– Spans multiple pages– Can have lifespan shorter than session (more later)
• ViewScope• ViewScope– Lifespan equal to the current viewId– Very similar to JSF2’s view scope
• BackingBeanScope (advanced topic)– Essentially a portioned request scope
• one instance per view source document• one instance per view source document– Useful for avoiding conflicts in composite pages
![Page 15: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/15.jpg)
Agenda
• The Traditional JSF ControllerExtending the Controller Functionality• Extending the Controller Functionality
• Adding Reusability to the Controller
![Page 16: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/16.jpg)
Reusable Units: Bounded Task Flowf
• A logical grouping of activities and control flow rules
A web application’s equivalent of a method
g g g• Single entry point – the default activity• Multiple end points – return activities• Input parameters and return values• Optional initializer and finalizer methods
H it Fl S i t• Has its own pageFlowScope instance– “local” variables
• Localized managed bean definitionsoca ed a aged bea de t o s
![Page 17: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/17.jpg)
Example: Checkout Flow
![Page 18: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/18.jpg)
Example: Checkout Bounded Task FlowFlow
![Page 19: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/19.jpg)
Example: Call to Checkout Task Flow
![Page 20: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/20.jpg)
Bounded Task Flow Definition
• Separate XML metadata file• Can be version controlled independently• Loaded on demand – reducing memory footprint
• Defines input parameters (e g shoppingCartBean)• Defines input parameters (e.g. shoppingCartBean)• Defines return values• Defines local activities and control flow rulesDefines local activities and control flow rules• Defines local beans
![Page 21: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/21.jpg)
Task Flow Call Activity
• Which bounded task flow to invoke
• Where to get input parameter values fromvalues from
• Where to store returned values• Advanced Options:Advanced Options:
• Invoke in a remote web app via URL• Launch in a separate dialog window
![Page 22: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/22.jpg)
Bounded Task Flow – Advanced FeaturesFeatures
• Transaction semantics• Begin / commit / rollback on task flow entry / exit
• Re-entry behaviorb b k b tt• e.g. browser back-button
• Exception handling• AuthorizationAuthorization
• Which users & groups can invoke a task flow?
• ADF Model DataControl sharing
![Page 23: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/23.jpg)
Train Flow
• Multi-step flows (wizards)( )• Built in train model• Built in train navigation components• Can dynamically enable/skip stations
![Page 24: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/24.jpg)
Reuse TaskFlows In Pages - Regions
• Build portions of a page from task flowsg• Page constructed from regions• Regions are independent
![Page 25: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/25.jpg)
Dynamic Regions
• Enables single page interface designg g g• Switch content shown in region at runtime• Drop bounded taskflow on a page as dynamic region• Creates a managed bean holding information on
which task to display• Create links to switch content• Create links to switch content
![Page 26: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/26.jpg)
Contextual Events
• Communicate events between regions on pageg g• Enables one region to influence another• Publish/Subscribe events• Managed at the containing page level
![Page 27: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/27.jpg)
Memory Scopes Example
ViewRegion
R
D1
Request Scope
View Router View
RS1 RS2 RS3 RS4
D2
Request Scope
P Fl S PFS1
RS1 RS2 RS3 RS4
Backing BeanScope
BBS1
BBS2
Page Flow Scope
View Scope
PFS1
PFS2
VS1 VS2
Session Scope
Application Scope
VS3 VS4
S1
A1
VS5
![Page 28: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/28.jpg)
Demo
• House buying applicationy g• Demands:
• Bookmarkable house info pageR bl i th t f th li ti• Reusable in other parts of the application
• Make and offer guided flow• Single page to see a house and make an offer
![Page 29: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/29.jpg)
Demo Recap
• HouseInfoFlow Task Flow • Find a house -> Show it in page• TaskFlow input parameter• Make it bookmarkable• Make it bookmarkable
• Reusing the HouseInfoFlow• JSF page calls the taskflow using taskFlowActivity
• Reusable Train TaskFlow offerFlow• Bounded, page fragments, train, transaction management
Dynamic Region• Dynamic Region• Add two taskflows to the HouseInfo page
![Page 30: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/30.jpg)
Summary
• ADF Controller extends the JSF controller functionality
• Transition from page flows to task flowsI li ti ’ bilit• Increases your application’s reusability
• Enables more dynamic user interface
![Page 31: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/31.jpg)
For more information
• http://www.oracle.com/technetwork/jdev• Downloads on Oracle Technology Network (OTN)• Product Documentation• Data Sheets and Whitepapers• Blogs• OTN Discussion Forums• Books
![Page 32: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/32.jpg)
Learn More at ODTUG K-Scope 2011
• http://kscope11.com/• Special Fusion Middleware Track• 50 dedicated sessions and hands on labs• Presented by Oracle ACEs, developers and product
managers• ADF WebCenter SOA Suite and more• ADF, WebCenter, SOA Suite and more
![Page 33: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/33.jpg)
The preceding is intended to outline our general product direction. It is intended for information
purposes only, and may not be incorporated into any contract. It is not a commitment to deliver anycontract. It is not a commitment to deliver any
material, code, or functionality, and should not be relied upon in making purchasing decisions.The development release and timing of anyThe development, release, and timing of any
features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
![Page 34: Next Generation Controller for JSF](https://reader031.vdocuments.us/reader031/viewer/2022020620/61e3b350c4b67f044362834f/html5/thumbnails/34.jpg)