SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
<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

Contenu connexe

Tendances

Using the Features API
Using the Features APIUsing the Features API
Using the Features APIcgmonroe
 
Weblogic Console Customization labs
Weblogic Console Customization labsWeblogic Console Customization labs
Weblogic Console Customization labsPeter van Nes
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSMagnolia
 
Weblogic Console Customization
Weblogic Console CustomizationWeblogic Console Customization
Weblogic Console CustomizationPeter van Nes
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, mavenFahad Golra
 
JSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian HlavatsJSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian Hlavatsjaxconf
 
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-IIIprinceirfancivil
 
Jsp elements
Jsp elementsJsp elements
Jsp elementsNuha Noor
 
Angular JS2 Training Session #2
Angular JS2 Training Session #2Angular JS2 Training Session #2
Angular JS2 Training Session #2Paras 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 DevelopmentRon Reiter
 
Component level caching with react
Component level caching with reactComponent level caching with react
Component level caching with reactAnusheelSingh2
 

Tendances (20)

Using the Features API
Using the Features APIUsing the Features API
Using the Features API
 
Weblogic Console Customization labs
Weblogic Console Customization labsWeblogic Console Customization labs
Weblogic Console Customization labs
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMS
 
Weblogic Console Customization
Weblogic Console CustomizationWeblogic Console Customization
Weblogic Console Customization
 
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
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, maven
 
JSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian HlavatsJSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian Hlavats
 
Maven II
Maven IIMaven II
Maven II
 
Jsp element
Jsp elementJsp element
Jsp element
 
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
 
Jsp elements
Jsp elementsJsp elements
Jsp elements
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
React & Redux
React & ReduxReact & Redux
React & Redux
 
Jsp
JspJsp
Jsp
 
Angular JS2 Training Session #2
Angular JS2 Training Session #2Angular JS2 Training Session #2
Angular JS2 Training Session #2
 
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 ...
 
Dynamic binding
Dynamic bindingDynamic binding
Dynamic binding
 
Introduction to App Engine Development
Introduction to App Engine DevelopmentIntroduction to App Engine Development
Introduction to App Engine Development
 
Alv for web
Alv for webAlv for web
Alv for web
 
Component level caching with react
Component level caching with reactComponent level caching with react
Component level caching with react
 

Similaire à Building Highly Reusable Taskflows

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 LondonLuca Lusso
 
Oracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersOracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersDataNext Solutions
 
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.pptxRohit 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.pptLalith86
 
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 ReleaseJyothylakshmy P.U
 
CS101- Introduction to Computing- Lecture 32
CS101- Introduction to Computing- Lecture 32CS101- Introduction to Computing- Lecture 32
CS101- Introduction to Computing- Lecture 32Bilal 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 2011Arun Gupta
 
Angular presentation
Angular presentationAngular presentation
Angular presentationMatus 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
 
WPF/ XamDataGrid Performance, Infragistics Seminar, Israel , November 2011
WPF/ XamDataGrid Performance, Infragistics Seminar, Israel , November 2011WPF/ XamDataGrid Performance, Infragistics Seminar, Israel , November 2011
WPF/ XamDataGrid Performance, Infragistics Seminar, Israel , November 2011Engineering Software Lab
 

Similaire à Building Highly Reusable Taskflows (20)

Steven Davelaar - Dynamic tabs
Steven Davelaar - Dynamic tabsSteven Davelaar - Dynamic tabs
Steven Davelaar - 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)
Empowering Multi-tasking with an ADF UI Powerhouse (UIShell with dynamic tabs)
 
Reuse in adf applications
Reuse in adf applicationsReuse in adf applications
Reuse in adf applications
 
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
 
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
 
Oracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersOracle ADF Task Flows for Beginners
Oracle ADF Task Flows for Beginners
 
JS Essence
JS EssenceJS Essence
JS Essence
 
Jsf
JsfJsf
Jsf
 
JBUG.be jBPM4
JBUG.be jBPM4JBUG.be jBPM4
JBUG.be jBPM4
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)
 
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
 
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
 
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 ...
 
Salesforce Summer 14 Release
Salesforce Summer 14 ReleaseSalesforce Summer 14 Release
Salesforce Summer 14 Release
 
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...
 
CS101- Introduction to Computing- Lecture 32
CS101- Introduction to Computing- Lecture 32CS101- Introduction to Computing- Lecture 32
CS101- Introduction to Computing- Lecture 32
 
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
 
Angular presentation
Angular presentationAngular presentation
Angular presentation
 
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...
 
WPF/ XamDataGrid Performance, Infragistics Seminar, Israel , November 2011
WPF/ XamDataGrid Performance, Infragistics Seminar, Israel , November 2011WPF/ XamDataGrid Performance, Infragistics Seminar, Israel , November 2011
WPF/ XamDataGrid Performance, Infragistics Seminar, Israel , November 2011
 

Plus de 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 MCSSteven Davelaar
 
A-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator OverviewA-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator OverviewSteven 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 MAFSteven 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 PhonesSteven 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 SynchingSteven 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 supportSteven 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 SOASteven 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
 

Plus de 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
 
Oracle JET overview
Oracle JET overviewOracle JET overview
Oracle JET overview
 
A-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator OverviewA-Team Mobile Persistence Accelerator Overview
A-Team Mobile Persistence Accelerator Overview
 
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...
 
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
 
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
 
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
 
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
 
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
 
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...
 

Dernier

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Dernier (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

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