SlideShare a Scribd company logo
<Insert Picture Here>




          Building Highly Reusable ADF Task Flows

Steven Davelaar                    twitter:@stevendavelaar
blogs: blogs.oracle.com/jheadstart and blogs.oracle.com/ateam_webcenter
Oracle Fusion Middleware Architects Team (the “A-team”)
Agenda


•   Reusability requirements - generic
•   Addressing generic reusability requirements
•   Reusability requirements – taskflow specific
•   Task flow reuse cases




                                                   2
Reusability Requirements - Generic


•   Use with traditional menu structure
•   Use with dynamic tabs
•   Use with human workflow task list
•   Use as WebCenter portlet
•   Add at runtime using WebCenter Composer



Develop User Interface Services – Not Pages!




                                               3
Addressing Reusability Requirements


• Use bounded taskflows with page fragments
  – Reusable UI service with clearly defined contract
• Embed as (Dynamic) ADF Region in any page.
• An ADF region:
  – Represents a task flow as part of a page
  – Is similar to a portlet, but for local functionality
  – Can share information and transaction boundaries with other
    page content




                                                                  4
UIShell – Tabbed Menu




                        5
UIShell – Dynamic Tabs with Tree Menu




                                        6
Using Dynamic ADF Regions – Additional
complexity

• You can no longer use standard JSF navigation
  – No pages to go to, only regions
• XMLMenuModel cannot be used out of the box
  – focusRowKey maps to current page
• “Unioned” parameter list for all regions
  – Parameters of each task flow in taskflow binding




                                                       7
Addressing the complexity


• Use DynamicRegionManager to provide current task
  flow and params
• Task flow details provided by TaskflowConfigBean
• Subclass NavigationHandlerImpl to allow your
  developers to use JSF-like navigation to regions
• Subclass XMLMenuModel to add support for regions
• Use parameter map for dynamic region binding
• Keep track of changed parameters
  – Refresh=ifNeeded does not work with param map




                                                     8
UI Shell at Runtime
                                   UIShell.jsf
                               Dynamic Region
               <af:region value=“#{bindings.mainRegion.regionModel />




                                UIShellPageDef
<taskFlow id="mainRegion“
taskFlowId="${pageFlowScope.dynamicRegionManager.currentTaskFlowId}"
parametersMap="${pageFlowScope.dynamicRegionManager.currentParamMap}"
RefreshCondition="{pageFlowScope.dynamicRegionManager.currentParamMapChanged}“ />




DynamicRegionManager                                          TaskFlowConfigBean
get/setCurrentTaskFlowName                                              name
getCurrentTaskflowId                                                    taskflowId
getCurrentParamMap                                                      paramMap




                                                                                     9
UIShell at Runtime – Managed Beans




                                     10
TaskFlowConfigBean - Jobs




                            11
Navigating Using Dynamic Regions


• Create custom RegionNavigationHandler
  – configure in faces-config.xml
  – Provides standard JSF navigation through superclass
  – Allows setting current dynamic region: region name specified
    after navigation outcome, separated by colon




                                                                   12
Navigating Using Dynamic Regions


• Action ”uishell:Jobs”
  –   navigates to UIShell.jsf page (if needed)
  –   sets current task flow “Jobs” on mainRegionManager
  –   TaskFlowId picked up from JobsTaskFlowConfigBean
  –   Parameters picked up from JobsTaskFlowConfigBean




                                                           13
Reusability Requirements – Taskflow Specific


• Configure to show in read-only mode
• Configure to show one specific row (deeplinking)
• Configure to go to summary or detail page
• Configure to start in create mode (new row)
• Configure to hide UI components buttons (Save,
  Cancel, Nav. Buttons, Search region)
• Configure to use both as “parent” or as “child” within
  another region
• Configure to use in popup / details lookup




                                                           14
Reuse Case 1 – Adding Menu Entry to View Jobs




                                                15
Reuse Case 1 – Adding Menu Entry to View Jobs


• Enable jobs task flow to run in read-only mode
  –   Add readOnly parameter to the jobs task flow
  –   Set job fields readOnly based on readOnly param
  –   hide save button based on readOnly param
  –   Set title to View Job in readOnly mode
• Add menu entry “ViewJobs” to menu.xml
• Create ViewJobsTaskFlowConfig bean
  – Set readOnly parameter to true




                                                        16
Reuse Case 1 – Adding Menu Entry to View Jobs




                                                17
Reuse Case 2 – Add Deeplinking to Edit Job




                                             18
Reuse Case 2 – Add Deeplinking to Edit Job

Prepare Jobs task flow:
• Add rowKeyValue parameter
• Create method activity SetCurrentRow
  – DnD SetCurrentRowWithKeyValue method, or
  – DnD custom queryByKeyValue AM method
  – Navigate to EditJob page
• Start task flow with router activity
  – Check value rowKeyValue parameter
  – If not null, go to setCurrentRow method activity
  – If null, go to SearchJobs page




                                                       19
Reuse Case 2 – Add Deeplinking to Edit Job




                                             20
Reuse Case 2 – Add Deeplinking to Edit Job




                                             21
Reuse Case 2 – Add Deeplinking to Edit Job

Prepare Employees task flow:
• Add task flow call activity CallJob to Employees TF
• Create Page Definition for CallJob
• Set rowKeyValue param to current JobId:
  – Reuse EditEmployee Page Def for CallJob activity
  – How: Change usage in PageMap in Databindings.cpx, delete
    newly created page def
• Add control flow rule from EditEmployee to CallJob
• Add editJob command link to EditEmployee page




                                                               22
Reuse Case 2 – Add Deeplinking to Edit Job




                                             23
Reuse Case 3 – View Job Details in Popup




                                           24
Reuse Case 3 – View Job Details in Popup

Two implementation strategies:
• Jobs TF Call with Run as Dialog option
  – This option cannot be used with page fragments!
  – Need PopupShell TF with PopupShell page that embeds Jobs
    region
  – Too complex ....
• Add popup component, and drag and drop Jobs TF
  as region inside popup




                                                               25
Reuse Case 3 – View Job Details in Popup

• (Add readOnly param to Jobs TF)
• Add Popup with Dialog to EditEmployee
  – Set childCreation=deferred to prevent premature region
    loading
  – Set contentDelivery=lazyUncached
• DnD Jobs TF into Dialog
  – Set readOnly and rowKeyValue params
  – Set refresh=ifNeeded
• Set rowKeyValue param to current JobId
• Add ViewJob command link to invoke Popup
  – Or use contextFacet on JobId
• Optional: add hideToolbarButtons param

                                                             26
Reuse Case 3 – View Job Details in Popup




                                           27
Reuse Case 4 – Employees TF as Child in
Department Page




                                          28
Reuse Case 4 – Employees TF as Child in
Department Page

• Restrict query employees based on department
   – Set up view criteria with departmentId bind var, or
   – Use dynamic iterator to bind to EmployeesView3
• Using dynamic iterator binding
   – Add TF parameter dataCollection
   – Set “Binds” property of iterator to dataCollection param
• Auto-query in Departments page
   – Use initialQueryOverridden property on search binding
• Hide DepartmentId, Save, Cancel items when used in
  Departments page
   – Check dataCollection parameter, or add new params



                                                                29
Reuse Case 4 – Employees TF as Child in
Department Page




                                          30
Reuse Case 4 – Employees TF as Child in
Department Page




                                          31
Reuse Case 5 – Deeplinking from External Source




                                                  32
Reuse Case 5 – Deeplinking from External Source

• DynamicRegionManager checks request params
  – PostConstruct method looking for taskFlowName param
  – Set current taskflow
  – Map other request params to TF params

 ../faces/UIShell?taskFlowName=Jobs&rowKeyValue=AC_MGR




                                                          33
Data Control Scope and Transactions

• Data Control Scope
  – Shared: all TF’s share same app module instance
  – Isolated: Each TF instance has own app module instance
• Transaction Scope
  – With isolated data control scope each TF has own transaction
  – With shared data control scope, transaction is shared by
    default, but can be changed using Transaction setting




                                                                   34
Data Control Scope and Transactions

• Data Control Scope and Transaction are defined at
  task flow definition level
  • Limits reuse options!
  • Isolated transactions needed for dynamic tabs
  • Shared transaction needed for child region
• Enhancement request: set DC scope and transaction
  on TF Call activity and TF binding
• Work around:
  • Create complete TF as template (templates can be nested)
  • Create one TF with isolated transaction based on this
    template
  • Create one TF with shared transaction based on this
    template

                                                               35
Testing Task Flows

• ADF EMG Taskflow Tester
   •   Testing of bounded task flows with pages and fragments
   •   Support for complex, composite input parameters
   •   Input parameters and run options can be saved as testcases
   •   XML Import/export facility for testcases
• It’s Free! Install through Help -> Check for Updates




                                                                    36
Summary

• Use bounded task flows with page fragments
• Set up infrastructure to use ADF regions in UIShell
• Think about possible reuse cases
   •   Define required input parameters
   •   Add router activity for reuse-case-based conditional flows
   •   Configure use of dynamic iterator binding
   •   Configure conditional display of UI components
• Think carefully about data control scope and
  transaction settings
• Use the ADF EMG Task Flow Tester




                                                                    37
Useful Resources

• Blog post: UIShell with Menu Driving a Dynamic Region
  • Contains links to presentation and sample application
  • blogs.oracle.com/jheadstart/entry/core_adf11_uishell_with_menu
• ADF EMG Samples
  • java.net/projects/smuenchadf/pages/ADFSamples
• ADF EMG Task Flow Tester
  • java.net/projects/adf-task-flow-tester
• ADF Architecture Square
  • Task Flow Fundamentals
    (http://www.oracle.com/technetwork/developer-
    tools/adf/learnmore/adf-task-flow-trans-fund-v1-1-1864319.pdf)




                                                                     38
39
Ad

More Related Content

What's hot (20)

Using the Features API
Using the Features APIUsing the Features API
Using the Features API
cgmonroe
 
Weblogic Console Customization labs
Weblogic Console Customization labsWeblogic Console Customization labs
Weblogic Console Customization labs
Peter van Nes
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMS
Magnolia
 
Weblogic Console Customization
Weblogic Console CustomizationWeblogic Console Customization
Weblogic Console Customization
Peter van Nes
 
AMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van Dongen
AMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van DongenAMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van Dongen
AMIS Oracle JDeveloper 12c 07 ADF faces skin editor-Betty van Dongen
Getting value from IoT, Integration and Data Analytics
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, maven
Fahad Golra
 
JSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian HlavatsJSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian Hlavats
jaxconf
 
Maven II
Maven IIMaven II
Maven II
princeirfancivil
 
Jsp element
Jsp elementJsp element
Jsp element
kamal kotecha
 
Building and managing java projects with maven part-III
Building and managing java projects with maven part-IIIBuilding and managing java projects with maven part-III
Building and managing java projects with maven part-III
princeirfancivil
 
Jsp elements
Jsp elementsJsp elements
Jsp elements
Nuha Noor
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
Kasun Madusanke
 
React & Redux
React & ReduxReact & Redux
React & Redux
Craig Jolicoeur
 
Jsp
JspJsp
Jsp
Rajavel Dhandabani
 
Angular JS2 Training Session #2
Angular JS2 Training Session #2Angular JS2 Training Session #2
Angular JS2 Training Session #2
Paras Mendiratta
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
WebStackAcademy
 
Dynamic binding
Dynamic bindingDynamic binding
Dynamic binding
Kranthi Kumar
 
Introduction to App Engine Development
Introduction to App Engine DevelopmentIntroduction to App Engine Development
Introduction to App Engine Development
Ron Reiter
 
Alv for web
Alv for webAlv for web
Alv for web
Kranthi Kumar
 
Component level caching with react
Component level caching with reactComponent level caching with react
Component level caching with react
AnusheelSingh2
 
Using the Features API
Using the Features APIUsing the Features API
Using the Features API
cgmonroe
 
Weblogic Console Customization labs
Weblogic Console Customization labsWeblogic Console Customization labs
Weblogic Console Customization labs
Peter van Nes
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMS
Magnolia
 
Weblogic Console Customization
Weblogic Console CustomizationWeblogic Console Customization
Weblogic Console Customization
Peter van Nes
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, maven
Fahad Golra
 
JSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian HlavatsJSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian Hlavats
jaxconf
 
Building and managing java projects with maven part-III
Building and managing java projects with maven part-IIIBuilding and managing java projects with maven part-III
Building and managing java projects with maven part-III
princeirfancivil
 
Jsp elements
Jsp elementsJsp elements
Jsp elements
Nuha Noor
 
Angular JS2 Training Session #2
Angular JS2 Training Session #2Angular JS2 Training Session #2
Angular JS2 Training Session #2
Paras Mendiratta
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 7 ...
WebStackAcademy
 
Introduction to App Engine Development
Introduction to App Engine DevelopmentIntroduction to App Engine Development
Introduction to App Engine Development
Ron Reiter
 
Component level caching with react
Component level caching with reactComponent level caching with react
Component level caching with react
AnusheelSingh2
 

Similar to Building Highly Reusable Taskflows (20)

Empowering Multi-tasking with an ADF UI Powerhouse (UIShell with dynamic tabs)
Empowering Multi-tasking with an ADF UI Powerhouse (UIShell with dynamic tabs)Empowering Multi-tasking with an ADF UI Powerhouse (UIShell with dynamic tabs)
Empowering Multi-tasking with an ADF UI Powerhouse (UIShell with dynamic tabs)
Steven Davelaar
 
Steven Davelaar - Dynamic tabs
Steven Davelaar - Dynamic tabsSteven Davelaar - Dynamic tabs
Steven Davelaar - Dynamic tabs
Getting value from IoT, Integration and Data Analytics
 
Reuse in adf applications
Reuse in adf applicationsReuse in adf applications
Reuse in adf applications
Matthieu De Graaf
 
Single Page Applications with AngularJS 2.0
Single Page Applications with AngularJS 2.0 Single Page Applications with AngularJS 2.0
Single Page Applications with AngularJS 2.0
Sumanth Chinthagunta
 
A new tool for measuring performance in Drupal 8 - DrupalCamp London
A new tool for measuring performance in Drupal 8 - DrupalCamp LondonA new tool for measuring performance in Drupal 8 - DrupalCamp London
A new tool for measuring performance in Drupal 8 - DrupalCamp London
Luca Lusso
 
Oracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersOracle ADF Task Flows for Beginners
Oracle ADF Task Flows for Beginners
DataNext Solutions
 
Materi Modern React Redux Power Point.pdf
Materi Modern React Redux Power Point.pdfMateri Modern React Redux Power Point.pdf
Materi Modern React Redux Power Point.pdf
exiabreak
 
JS Essence
JS EssenceJS Essence
JS Essence
Uladzimir Piatryka
 
Jsf
JsfJsf
Jsf
Anis Bouhachem Djer
 
JBUG.be jBPM4
JBUG.be jBPM4JBUG.be jBPM4
JBUG.be jBPM4
Andries Inzé
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)
Fahad Golra
 
Enhanced Reframework Session_16-07-2022.pptx
Enhanced Reframework Session_16-07-2022.pptxEnhanced Reframework Session_16-07-2022.pptx
Enhanced Reframework Session_16-07-2022.pptx
Rohit Radhakrishnan
 
javascript Event Handling and introduction to event.ppt
javascript Event Handling and introduction to event.pptjavascript Event Handling and introduction to event.ppt
javascript Event Handling and introduction to event.ppt
Lalith86
 
MVP Community Camp 2014 - How to use enhanced features of Windows 8.1 Store ...
MVP Community Camp 2014 - How to useenhanced features of Windows 8.1 Store ...MVP Community Camp 2014 - How to useenhanced features of Windows 8.1 Store ...
MVP Community Camp 2014 - How to use enhanced features of Windows 8.1 Store ...
Akira Hatsune
 
Salesforce Summer 14 Release
Salesforce Summer 14 ReleaseSalesforce Summer 14 Release
Salesforce Summer 14 Release
Jyothylakshmy P.U
 
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
BCC - Solutions for IBM Collaboration Software
 
CS101- Introduction to Computing- Lecture 32
CS101- Introduction to Computing- Lecture 32CS101- Introduction to Computing- Lecture 32
CS101- Introduction to Computing- Lecture 32
Bilal Ahmed
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011
Arun Gupta
 
Angular presentation
Angular presentationAngular presentation
Angular presentation
Matus Szabo
 
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
HostedbyConfluent
 
Empowering Multi-tasking with an ADF UI Powerhouse (UIShell with dynamic tabs)
Empowering Multi-tasking with an ADF UI Powerhouse (UIShell with dynamic tabs)Empowering Multi-tasking with an ADF UI Powerhouse (UIShell with dynamic tabs)
Empowering Multi-tasking with an ADF UI Powerhouse (UIShell with dynamic tabs)
Steven Davelaar
 
Single Page Applications with AngularJS 2.0
Single Page Applications with AngularJS 2.0 Single Page Applications with AngularJS 2.0
Single Page Applications with AngularJS 2.0
Sumanth Chinthagunta
 
A new tool for measuring performance in Drupal 8 - DrupalCamp London
A new tool for measuring performance in Drupal 8 - DrupalCamp LondonA new tool for measuring performance in Drupal 8 - DrupalCamp London
A new tool for measuring performance in Drupal 8 - DrupalCamp London
Luca Lusso
 
Oracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersOracle ADF Task Flows for Beginners
Oracle ADF Task Flows for Beginners
DataNext Solutions
 
Materi Modern React Redux Power Point.pdf
Materi Modern React Redux Power Point.pdfMateri Modern React Redux Power Point.pdf
Materi Modern React Redux Power Point.pdf
exiabreak
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)
Fahad Golra
 
Enhanced Reframework Session_16-07-2022.pptx
Enhanced Reframework Session_16-07-2022.pptxEnhanced Reframework Session_16-07-2022.pptx
Enhanced Reframework Session_16-07-2022.pptx
Rohit Radhakrishnan
 
javascript Event Handling and introduction to event.ppt
javascript Event Handling and introduction to event.pptjavascript Event Handling and introduction to event.ppt
javascript Event Handling and introduction to event.ppt
Lalith86
 
MVP Community Camp 2014 - How to use enhanced features of Windows 8.1 Store ...
MVP Community Camp 2014 - How to useenhanced features of Windows 8.1 Store ...MVP Community Camp 2014 - How to useenhanced features of Windows 8.1 Store ...
MVP Community Camp 2014 - How to use enhanced features of Windows 8.1 Store ...
Akira Hatsune
 
Salesforce Summer 14 Release
Salesforce Summer 14 ReleaseSalesforce Summer 14 Release
Salesforce Summer 14 Release
Jyothylakshmy P.U
 
CS101- Introduction to Computing- Lecture 32
CS101- Introduction to Computing- Lecture 32CS101- Introduction to Computing- Lecture 32
CS101- Introduction to Computing- Lecture 32
Bilal Ahmed
 
JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011JavaServer Faces 2.0 - JavaOne India 2011
JavaServer Faces 2.0 - JavaOne India 2011
Arun Gupta
 
Angular presentation
Angular presentationAngular presentation
Angular presentation
Matus Szabo
 
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
Developing Kafka Streams Applications with Upgradability in Mind with Neil Bu...
HostedbyConfluent
 
Ad

More from Steven Davelaar (10)

Building beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCSBuilding beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCS
Steven Davelaar
 
Oracle JET overview
Oracle JET overviewOracle JET overview
Oracle JET overview
Steven Davelaar
 
A-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator OverviewA-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator Overview
Steven Davelaar
 
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
Steven Davelaar
 
Implementing Data Caching and Data Synching Using Oracle MAF
Implementing Data Caching and Data Synching Using Oracle MAFImplementing Data Caching and Data Synching Using Oracle MAF
Implementing Data Caching and Data Synching Using Oracle MAF
Steven Davelaar
 
Running ADF Faces on Tablets and Mobile Phones
Running ADF Faces on Tablets and Mobile PhonesRunning ADF Faces on Tablets and Mobile Phones
Running ADF Faces on Tablets and Mobile Phones
Steven Davelaar
 
ADF Mobile: Implementing Data Caching and Synching
ADF Mobile: Implementing Data Caching and SynchingADF Mobile: Implementing Data Caching and Synching
ADF Mobile: Implementing Data Caching and Synching
Steven Davelaar
 
Upcoming JDeveloper ADF Business Components REST support
Upcoming JDeveloper ADF Business Components REST supportUpcoming JDeveloper ADF Business Components REST support
Upcoming JDeveloper ADF Business Components REST support
Steven Davelaar
 
Guidelines for moving from Oracle Forms to Oracle ADF and SOA
Guidelines for moving from Oracle Forms to Oracle ADF and SOAGuidelines for moving from Oracle Forms to Oracle ADF and SOA
Guidelines for moving from Oracle Forms to Oracle ADF and SOA
Steven Davelaar
 
JHeadstart Forms2ADF Generator – Migrating from Oracle Forms to a Best-Practi...
JHeadstart Forms2ADF Generator – Migrating from Oracle Forms to a Best-Practi...JHeadstart Forms2ADF Generator – Migrating from Oracle Forms to a Best-Practi...
JHeadstart Forms2ADF Generator – Migrating from Oracle Forms to a Best-Practi...
Steven Davelaar
 
Building beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCSBuilding beacon-enabled apps with Oracle MCS
Building beacon-enabled apps with Oracle MCS
Steven Davelaar
 
A-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator OverviewA-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator Overview
Steven Davelaar
 
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
Steven Davelaar
 
Implementing Data Caching and Data Synching Using Oracle MAF
Implementing Data Caching and Data Synching Using Oracle MAFImplementing Data Caching and Data Synching Using Oracle MAF
Implementing Data Caching and Data Synching Using Oracle MAF
Steven Davelaar
 
Running ADF Faces on Tablets and Mobile Phones
Running ADF Faces on Tablets and Mobile PhonesRunning ADF Faces on Tablets and Mobile Phones
Running ADF Faces on Tablets and Mobile Phones
Steven Davelaar
 
ADF Mobile: Implementing Data Caching and Synching
ADF Mobile: Implementing Data Caching and SynchingADF Mobile: Implementing Data Caching and Synching
ADF Mobile: Implementing Data Caching and Synching
Steven Davelaar
 
Upcoming JDeveloper ADF Business Components REST support
Upcoming JDeveloper ADF Business Components REST supportUpcoming JDeveloper ADF Business Components REST support
Upcoming JDeveloper ADF Business Components REST support
Steven Davelaar
 
Guidelines for moving from Oracle Forms to Oracle ADF and SOA
Guidelines for moving from Oracle Forms to Oracle ADF and SOAGuidelines for moving from Oracle Forms to Oracle ADF and SOA
Guidelines for moving from Oracle Forms to Oracle ADF and SOA
Steven Davelaar
 
JHeadstart Forms2ADF Generator – Migrating from Oracle Forms to a Best-Practi...
JHeadstart Forms2ADF Generator – Migrating from Oracle Forms to a Best-Practi...JHeadstart Forms2ADF Generator – Migrating from Oracle Forms to a Best-Practi...
JHeadstart Forms2ADF Generator – Migrating from Oracle Forms to a Best-Practi...
Steven Davelaar
 
Ad

Recently uploaded (20)

Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 

Building Highly Reusable Taskflows

  • 1. <Insert Picture Here> Building Highly Reusable ADF Task Flows Steven Davelaar twitter:@stevendavelaar blogs: blogs.oracle.com/jheadstart and blogs.oracle.com/ateam_webcenter Oracle Fusion Middleware Architects Team (the “A-team”)
  • 2. Agenda • Reusability requirements - generic • Addressing generic reusability requirements • Reusability requirements – taskflow specific • Task flow reuse cases 2
  • 3. Reusability Requirements - Generic • Use with traditional menu structure • Use with dynamic tabs • Use with human workflow task list • Use as WebCenter portlet • Add at runtime using WebCenter Composer Develop User Interface Services – Not Pages! 3
  • 4. Addressing Reusability Requirements • Use bounded taskflows with page fragments – Reusable UI service with clearly defined contract • Embed as (Dynamic) ADF Region in any page. • An ADF region: – Represents a task flow as part of a page – Is similar to a portlet, but for local functionality – Can share information and transaction boundaries with other page content 4
  • 6. UIShell – Dynamic Tabs with Tree Menu 6
  • 7. Using Dynamic ADF Regions – Additional complexity • You can no longer use standard JSF navigation – No pages to go to, only regions • XMLMenuModel cannot be used out of the box – focusRowKey maps to current page • “Unioned” parameter list for all regions – Parameters of each task flow in taskflow binding 7
  • 8. Addressing the complexity • Use DynamicRegionManager to provide current task flow and params • Task flow details provided by TaskflowConfigBean • Subclass NavigationHandlerImpl to allow your developers to use JSF-like navigation to regions • Subclass XMLMenuModel to add support for regions • Use parameter map for dynamic region binding • Keep track of changed parameters – Refresh=ifNeeded does not work with param map 8
  • 9. UI Shell at Runtime UIShell.jsf Dynamic Region <af:region value=“#{bindings.mainRegion.regionModel /> UIShellPageDef <taskFlow id="mainRegion“ taskFlowId="${pageFlowScope.dynamicRegionManager.currentTaskFlowId}" parametersMap="${pageFlowScope.dynamicRegionManager.currentParamMap}" RefreshCondition="{pageFlowScope.dynamicRegionManager.currentParamMapChanged}“ /> DynamicRegionManager TaskFlowConfigBean get/setCurrentTaskFlowName name getCurrentTaskflowId taskflowId getCurrentParamMap paramMap 9
  • 10. UIShell at Runtime – Managed Beans 10
  • 12. Navigating Using Dynamic Regions • Create custom RegionNavigationHandler – configure in faces-config.xml – Provides standard JSF navigation through superclass – Allows setting current dynamic region: region name specified after navigation outcome, separated by colon 12
  • 13. Navigating Using Dynamic Regions • Action ”uishell:Jobs” – navigates to UIShell.jsf page (if needed) – sets current task flow “Jobs” on mainRegionManager – TaskFlowId picked up from JobsTaskFlowConfigBean – Parameters picked up from JobsTaskFlowConfigBean 13
  • 14. Reusability Requirements – Taskflow Specific • Configure to show in read-only mode • Configure to show one specific row (deeplinking) • Configure to go to summary or detail page • Configure to start in create mode (new row) • Configure to hide UI components buttons (Save, Cancel, Nav. Buttons, Search region) • Configure to use both as “parent” or as “child” within another region • Configure to use in popup / details lookup 14
  • 15. Reuse Case 1 – Adding Menu Entry to View Jobs 15
  • 16. Reuse Case 1 – Adding Menu Entry to View Jobs • Enable jobs task flow to run in read-only mode – Add readOnly parameter to the jobs task flow – Set job fields readOnly based on readOnly param – hide save button based on readOnly param – Set title to View Job in readOnly mode • Add menu entry “ViewJobs” to menu.xml • Create ViewJobsTaskFlowConfig bean – Set readOnly parameter to true 16
  • 17. Reuse Case 1 – Adding Menu Entry to View Jobs 17
  • 18. Reuse Case 2 – Add Deeplinking to Edit Job 18
  • 19. Reuse Case 2 – Add Deeplinking to Edit Job Prepare Jobs task flow: • Add rowKeyValue parameter • Create method activity SetCurrentRow – DnD SetCurrentRowWithKeyValue method, or – DnD custom queryByKeyValue AM method – Navigate to EditJob page • Start task flow with router activity – Check value rowKeyValue parameter – If not null, go to setCurrentRow method activity – If null, go to SearchJobs page 19
  • 20. Reuse Case 2 – Add Deeplinking to Edit Job 20
  • 21. Reuse Case 2 – Add Deeplinking to Edit Job 21
  • 22. Reuse Case 2 – Add Deeplinking to Edit Job Prepare Employees task flow: • Add task flow call activity CallJob to Employees TF • Create Page Definition for CallJob • Set rowKeyValue param to current JobId: – Reuse EditEmployee Page Def for CallJob activity – How: Change usage in PageMap in Databindings.cpx, delete newly created page def • Add control flow rule from EditEmployee to CallJob • Add editJob command link to EditEmployee page 22
  • 23. Reuse Case 2 – Add Deeplinking to Edit Job 23
  • 24. Reuse Case 3 – View Job Details in Popup 24
  • 25. Reuse Case 3 – View Job Details in Popup Two implementation strategies: • Jobs TF Call with Run as Dialog option – This option cannot be used with page fragments! – Need PopupShell TF with PopupShell page that embeds Jobs region – Too complex .... • Add popup component, and drag and drop Jobs TF as region inside popup 25
  • 26. Reuse Case 3 – View Job Details in Popup • (Add readOnly param to Jobs TF) • Add Popup with Dialog to EditEmployee – Set childCreation=deferred to prevent premature region loading – Set contentDelivery=lazyUncached • DnD Jobs TF into Dialog – Set readOnly and rowKeyValue params – Set refresh=ifNeeded • Set rowKeyValue param to current JobId • Add ViewJob command link to invoke Popup – Or use contextFacet on JobId • Optional: add hideToolbarButtons param 26
  • 27. Reuse Case 3 – View Job Details in Popup 27
  • 28. Reuse Case 4 – Employees TF as Child in Department Page 28
  • 29. Reuse Case 4 – Employees TF as Child in Department Page • Restrict query employees based on department – Set up view criteria with departmentId bind var, or – Use dynamic iterator to bind to EmployeesView3 • Using dynamic iterator binding – Add TF parameter dataCollection – Set “Binds” property of iterator to dataCollection param • Auto-query in Departments page – Use initialQueryOverridden property on search binding • Hide DepartmentId, Save, Cancel items when used in Departments page – Check dataCollection parameter, or add new params 29
  • 30. Reuse Case 4 – Employees TF as Child in Department Page 30
  • 31. Reuse Case 4 – Employees TF as Child in Department Page 31
  • 32. Reuse Case 5 – Deeplinking from External Source 32
  • 33. Reuse Case 5 – Deeplinking from External Source • DynamicRegionManager checks request params – PostConstruct method looking for taskFlowName param – Set current taskflow – Map other request params to TF params ../faces/UIShell?taskFlowName=Jobs&rowKeyValue=AC_MGR 33
  • 34. Data Control Scope and Transactions • Data Control Scope – Shared: all TF’s share same app module instance – Isolated: Each TF instance has own app module instance • Transaction Scope – With isolated data control scope each TF has own transaction – With shared data control scope, transaction is shared by default, but can be changed using Transaction setting 34
  • 35. Data Control Scope and Transactions • Data Control Scope and Transaction are defined at task flow definition level • Limits reuse options! • Isolated transactions needed for dynamic tabs • Shared transaction needed for child region • Enhancement request: set DC scope and transaction on TF Call activity and TF binding • Work around: • Create complete TF as template (templates can be nested) • Create one TF with isolated transaction based on this template • Create one TF with shared transaction based on this template 35
  • 36. Testing Task Flows • ADF EMG Taskflow Tester • Testing of bounded task flows with pages and fragments • Support for complex, composite input parameters • Input parameters and run options can be saved as testcases • XML Import/export facility for testcases • It’s Free! Install through Help -> Check for Updates 36
  • 37. Summary • Use bounded task flows with page fragments • Set up infrastructure to use ADF regions in UIShell • Think about possible reuse cases • Define required input parameters • Add router activity for reuse-case-based conditional flows • Configure use of dynamic iterator binding • Configure conditional display of UI components • Think carefully about data control scope and transaction settings • Use the ADF EMG Task Flow Tester 37
  • 38. Useful Resources • Blog post: UIShell with Menu Driving a Dynamic Region • Contains links to presentation and sample application • blogs.oracle.com/jheadstart/entry/core_adf11_uishell_with_menu • ADF EMG Samples • java.net/projects/smuenchadf/pages/ADFSamples • ADF EMG Task Flow Tester • java.net/projects/adf-task-flow-tester • ADF Architecture Square • Task Flow Fundamentals (http://www.oracle.com/technetwork/developer- tools/adf/learnmore/adf-task-flow-trans-fund-v1-1-1864319.pdf) 38
  • 39. 39