SlideShare une entreprise Scribd logo
1  sur  71
Gold Nuggets in Oracle ADF (Faces) Lucas Jellema – AMIS (Nieuwegein, The Netherlands) ADF EMG Community Day - Oracle  Open World 2011
Overview IDE favorites Fool’s Gold UI (tw)Highlights The Whole Wide World
What is a gold nugget? Unexpected benefit Underused, overlooked feature Small – frequently useful Huge – unexplored concept or area of infrastructure Potentially useful to large community Not too much a niche option
Nugget cloud Skin editor VO Updateable Lookup EL Tree Select Hot Reload Change Persistence Rich Table Auto Suggest Customization setPropertyListener Refresh after insert PanelCollection Decoupled Development & Reuse TaskFlow, Region, UIShell, Declarative Components, ADF Library, … Java/JEE Bean Data Control Popup PPR JHeadstart Mobile Fusion Applications Groovy EMG and wider community server event & listener Multi Browser Support Selenium so aDF DVT active rowkey Programmatic VO Active Data Service for Push OraFormsFaces PanelDashboard List validator prepareSession ADFContext Page Template WebLogic Server Save Points FormatString OPSS/ADF Security
ADF in Larry’s Keynote on Oracle Open World 2009 and 2010
Fusion Applications – biggest proof point in the world
ADF powers the user interface of almost any Oracle product
ADF powers the user interface of almost any Oracle product (2)
the table ADF Faces Rich Table (& Panel Collection) Displays ADF Model data bound collection, bean array, List, ResultSet, RowSet and more  Dynamic Table Configuration & Change Persistence Rearrange, resize, hide/show columns, freeze columns Post-load or Lazy Data Fetch Fetch data rows upon scroll Filter & Sort Read-Only and Click-to-edit [single or multiple] Row and Column Selection Header, Footer, Column Grouping, DetailStamp Many, many predefined facets Export data set, Email & Print mode
Active row key Property on table that is ‘click to edit’ EL expression that resolves to the primary key of the row that should be displayed as editable Table will scroll that row into view
"Smart" Completion Insight Ctrl-Space (x 2)
publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1");   } }
publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1");   } publicvoiddoSomething() {   } }
publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1");   } publicvoiddoSomething() { this.   } } Ctrl Space
publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1");   } publicvoiddoSomething() { this.   } }
publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1");   } publicvoiddoSomething() { this.getB   } }
publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1");   } publicvoiddoSomething() { this.getBookingView1Impl()   } }
publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1");   } publicvoiddoSomething() {     ? = this.getBookingView1Impl()   } } Ctrl Space x 1
publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1");   } publicvoiddoSomething() { this.getB   } } Ctrl Space x 1 Ctrl Space x 2
publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1");   } publicvoiddoSomething() { this.getB   } }
publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1");   } publicvoiddoSomething() { BookingsViewImplbookingsView = this.getBookingsView1();   } }
Jdeveloper Go to Shortcuts Go to Class: CTRL  - Go to File: CTRL ALT - Find usages: CTRL ALT u  For class, method, EO and VO Attribute, …
More best short cuts… CTRL Shift Space: parameter insight CTRL = : list of recently opened files CTRL Space: completion insight CTRL Space (2x): declaration insert CTRL /: selection commented CTRL Shift C:copy file path toClipboard Alt Home : selectfile in ‘tree’
Data Visualization
The Right Mouse Click ContextMenu client listener and Popup (menu and window)
Popup magic
Example: Adding fancy balloon help Create a popup with a noteWindow child to contain the fancy help content Add a showPopupBehavior tag to the inputTextthat we want to add the help to
Fusion Apps – ‘UI design pattern’
Expression Language IoC: Injection of Value and Listener into page Dynamic, context sensitive behavior Extension points Custom Functions invoked from EL Integration of Spring Beans Custom EL Resolver To resolve values from property files, …. #{user.settings['NAME']}
Extend EL to support custom functions with multiple parameters Create the static methods that implement the custom EL functions Configure <function> elements in a custom tag library descriptor Associate the tag library to the JSF page Use the function in expressions such as:
Create the static methods
Configure the function elements in a Tag Library Descriptor file
Associate tag library with page and use tag library’s functions
No coding quick start adf - leveraging best practices & uniform UI patterns
Even more Declarative ADF development – with JHeadstart
Programmatic cross tier interaction  Web Browser JEE Application Server
Client JavaScript Components manipulate component user action JavaScript Function component clientListener component userorprogrammaticaction partialSubmitautoSubmit Load JSON, CSS, Image, XML, JS property change Requestdata orPush message poll setPropertyListener partial triggers, added targets Queue Custom Event serverListener activeOutputText ERKS ‘ppr script’ partial page refresh Full pagereload push add JS toexecute (ERKS) Server (middle tier) component activeOutputText component add componentsas partial target actionListener, valueChangeListener, …Listener Bean serverListener Active DataModel Object Components Beans & Objects push (DB QRCN) Database Client Server interactions vv.
Use setPropertyListenerto push data to the server The setPropertyListener will pass from value to the to target when type event occurs on parent A very simple way to inform the server about an event and the data associated with the event Supported types: action, focus, poll, query, rangeChange, selection, sort, rowDisclosure, valueChange and many more <af:image id="removeFromSetImage“           source="/images/removeFromSet.png“ shortDesc="Remove from Shopping Basket"/> <af:setPropertyListener from="#{item}“                        to="#{shoppingBasket.itemToRemove}"                        type="action"/> </af:commandLink>
ServerListener for custom AJAX (background client to server push) A serverListener associates a server side method with a client side custom event This allows JavaScript functionsto call a server side method by queuing an event A custom event carries a payload
ADF Active data service – server push to client Push: server sends messages to client ADF Active Data Service enables UI components to be ‘automaticallyrefreshed’ when server sideeventsoccur Active UI ComponentsincludeTable, Image, OutputText, DVT Components Basedon BAM Data Control BasedonCustomBeansthatextendActiveAdapter Nudge: push-to-refresh Note: client-2-client pushcaneasilybeimplementedas client-to-server-followed-by-server-to-client push Web Browser JEE Application Server
Auto-PPR for immediate refresh of Data Bound components To have ADF automatically refresh data bound components when underlying value binding has changed its value Set changeEventPolicy=ppr on iterator Refresh as piggy back on any request cycle No partialTriggers attribute required!
Cross Tier Push Web Browser table activeOT Cache refresher JEE Application Server evtlsnr servlet RDBMS job trg
Push to the limit – rich and pro-active user interfaces with ADF Session Plug – Session Plug – Session Plug – Session Pl Wednesday, 5-6 PM, Mariott Marquis, Golden Gate A  Oracle Open World 2011
The “History” feature in JDeveloper Quick comparison of file with previous states Can leverage Source Code Control system (Subversion, CVS) but also maintains local file history The compare feature is ‘XML aware’ Revert to a previous state of a file
Marrying forms and ADF together – migrate with (i/o from) forms to adf OraFormsFaces leveraging the JavaScript-Applet bridge for two-way event exchange
ADF BC Properties Property Inspector
Library Private
The World wide Advanced Developers Family
The World wide Advanced Developers Family ADF Enterprise Methodology Group OTN Discussion Forum OTN and ADF Resources Documentation, samples, tutorials, testimonials, virtual developer days, rea.oracle.com Blog-o-sphere Conferences around the globe OOW, ODTUG Kaleidoscope, UKOUG, OBUG, AUSOUG/OAUG/ODTUG 20:20, DOAG, … Books and articles Oracle Press, Packt Publishing, …  Oracle Magazine, ODTUG Technical Journal, … Also: Leverage Java/JEE community and resources
Java and JEE  ADF is a framework on top of Java, JEE and JVM Anything that is/extends/runs on one of these is potentially usable with and relevant for ADF Zillion frameworks and libraries iText (PDF), Apache POI (Excel), Jasper Reports, BIRT Spring (IoC, AOP, Acegi/Security, Social, ..) Apache Commons, Google Collections, Joda Time Software Engineering Test (Junit, EasyMock), build (Ant, Maven), check/QA (FindBugs, CheckStyle, Sonar),   JEE facilities in WLS including JMS, WS* & RS, JMX…  Dynamic JVM languages: Groovy, Scala, JRuby, … Java 7 SE and beyond Java FX?
Prepare session Before any other database communication is performed during the processing of a request … ADF BC will execute the prepareSession() method that you can override in ApplicationModuleImpl This is the perfect place to Reset package state Set application and client info Set application context User details, current session context, view filter conditions(real or poor man VPD) Fetch any events published inside the database ADF BC AppMod Database
Challenge Create a Sliding Tile puzzle that tiles up an image in a configurable number of tiles Using drag and drop, the user can reassemble the image
The PanelDashboard component Renders a ‘portal-like’ dashboard – as a grid of PanelBox-components Configurable  number of columns row height Collapsible (boxes) Supports drag & drop for reorganization And change persistence to remember (per user) Very easy to use
Steps Create Servlet that produces tiles from a JPEG image Parameters: image name, tile factor, x and y Create PanelDashboard with panelBoxes with richImage components That request their source from the servlet corresponding to their position in the grid Bind the PanelDashboard and dynamically create the panelBox components Allow user to set the tile factor and choose the image Use a Carousel for image selection
demo
EDN SDO Entity Task UI EDN Events SO ADF ,[object Object]
BAM Data Control
Human Task UI
ADF BC SDO Service
WebService Proxy and Data Control,[object Object]
Programmatic View Object It walks, talks and looks like a ‘regular’ View Object (regular being based on Entity Objects or SQL Query) But it is entirely fueled by custom written overridden Java methods – possibly without database connection A bit like a View with Instead Of trigger – against a Collection based Table Function and PL/SQL API Programmatic View Objects can be used as normal in a Data Control for binding ADF Faces components Normal rich declarative ADF BC data binding can be provided to UI developers for data sources such as WebService, JMS Queue, Memory Grid, Document Management System, Email, cross session data, … Note: with the evolution of the Bean Data Control, some of the use cases will fade away
the root of Ajax Suggestions
Auto Suggestions User is entering a field As she types characters, suggestions can be presented for what the full entry should read Based on a list of allowable values, based on previous (popular) entries or anything really User can pick a suggestion for ‘short-cut typing’ Auto suggestions can be model-driven (declarative) or custom And can do things beyond plain list based suggestions
Intro Google Suggest set off the AJAX hype in anger Many implementations for a ‘suggestions’ feature in ADF 10g and 11g have been created Using custom JavaScript or libraries like Jquery With PS1, ADF 11g introduced a native component for ‘auto suggestions’ The <af:autoSuggestBehavior> component, to be included in inputText or inputListOfValues orinputComboboxListOfValues
Model Driven Suggestions The suggestions can be derived declaratively from List of Values reference on a VO Attribute Steps: On ViewObject Create ViewAccessor (for list values) Create List of Values for Attribute Link LoV to ViewAccessor In Page Add InputListOfValues component based on attribute Add af:autoSuggestBehavior with suggestions based on List of Values Binding’s suggestedItems
In Page:
Custom Suggestions Auto Suggestions can be provided by managed bean that implements signature:  List getSuggestions( String currentValue) And the List returned is really List<SelectItem> Potential use cases Based on some (application wide) cached collection (of previously entered ?) values Retrieve values from WebService, file, … Use common abbreviations, codes Country code, airport Show translations in other languages
Static List of Countries Suggestions

Contenu connexe

Tendances

Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5
Tuna Tore
 
Data Access Options in SharePoint 2010
Data Access Options in SharePoint 2010Data Access Options in SharePoint 2010
Data Access Options in SharePoint 2010
Rob Windsor
 
How to disassemble one monster app into an ecosystem of 30
How to disassemble one monster app into an ecosystem of 30How to disassemble one monster app into an ecosystem of 30
How to disassemble one monster app into an ecosystem of 30
fiyuer
 

Tendances (20)

Going Offline with Gears And GWT
Going Offline with Gears And GWTGoing Offline with Gears And GWT
Going Offline with Gears And GWT
 
Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and Improved
 
Data Access Options in SharePoint 2010
Data Access Options in SharePoint 2010Data Access Options in SharePoint 2010
Data Access Options in SharePoint 2010
 
Azure Durable Functions (2019-03-30)
Azure Durable Functions (2019-03-30) Azure Durable Functions (2019-03-30)
Azure Durable Functions (2019-03-30)
 
Easing offline web application development with GWT
Easing offline web application development with GWTEasing offline web application development with GWT
Easing offline web application development with GWT
 
Parse: A Mobile Backend as a Service (MBaaS)
Parse: A Mobile Backend as a Service (MBaaS)Parse: A Mobile Backend as a Service (MBaaS)
Parse: A Mobile Backend as a Service (MBaaS)
 
MVC on the server and on the client
MVC on the server and on the clientMVC on the server and on the client
MVC on the server and on the client
 
Hopsworks MLOps World talk june 21
Hopsworks MLOps World talk june 21Hopsworks MLOps World talk june 21
Hopsworks MLOps World talk june 21
 
Serverless APIs, the Good, the Bad and the Ugly (2019-09-19)
Serverless APIs, the Good, the Bad and the Ugly (2019-09-19)Serverless APIs, the Good, the Bad and the Ugly (2019-09-19)
Serverless APIs, the Good, the Bad and the Ugly (2019-09-19)
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Spray - Build RESTfull services in scala
Spray - Build RESTfull services in scalaSpray - Build RESTfull services in scala
Spray - Build RESTfull services in scala
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session Management
 
How to disassemble one monster app into an ecosystem of 30
How to disassemble one monster app into an ecosystem of 30How to disassemble one monster app into an ecosystem of 30
How to disassemble one monster app into an ecosystem of 30
 
Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)
 
APIs, APIs Everywhere!
APIs, APIs Everywhere!APIs, APIs Everywhere!
APIs, APIs Everywhere!
 
Java Web Programming [3/9] : Servlet Advanced
Java Web Programming [3/9] : Servlet AdvancedJava Web Programming [3/9] : Servlet Advanced
Java Web Programming [3/9] : Servlet Advanced
 
Kubernetes Operators With Scala
Kubernetes Operators With ScalaKubernetes Operators With Scala
Kubernetes Operators With Scala
 
Suportando Aplicações Multi-tenancy com Java EE
Suportando Aplicações Multi-tenancy com Java EESuportando Aplicações Multi-tenancy com Java EE
Suportando Aplicações Multi-tenancy com Java EE
 
Building Android apps with Parse
Building Android apps with ParseBuilding Android apps with Parse
Building Android apps with Parse
 

En vedette

DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic ServerDOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
Andreas Koop
 
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
 
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
 

En vedette (9)

DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic ServerDOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
 
The Five Ways of Building Oracle Applications
The Five Ways of Building Oracle ApplicationsThe Five Ways of Building Oracle Applications
The Five Ways of Building Oracle Applications
 
Oracle ADF Overview for Beginners
Oracle ADF Overview for BeginnersOracle ADF Overview for Beginners
Oracle ADF Overview for Beginners
 
Building a custom Oracle ADF Component
Building a custom Oracle ADF ComponentBuilding a custom Oracle ADF Component
Building a custom Oracle ADF Component
 
Oracle ADF Architecture TV - Development - Error Handling
Oracle ADF Architecture TV - Development - Error HandlingOracle ADF Architecture TV - Development - Error Handling
Oracle ADF Architecture TV - Development - Error Handling
 
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
 
Talking Services with Oracle ADF and Oracle SOA Suite
Talking Services with Oracle ADF and Oracle SOA SuiteTalking Services with Oracle ADF and Oracle SOA Suite
Talking Services with Oracle ADF and Oracle SOA Suite
 
Oracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersOracle ADF Task Flows for Beginners
Oracle ADF Task Flows for Beginners
 
Oracle APEX or ADF? From Requirements to Tool Choice
Oracle APEX or ADF? From Requirements to Tool ChoiceOracle APEX or ADF? From Requirements to Tool Choice
Oracle APEX or ADF? From Requirements to Tool Choice
 

Similaire à ADF Gold Nuggets (Oracle Open World 2011)

Webinar september 2013
Webinar september 2013Webinar september 2013
Webinar september 2013
Marc Gille
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
Fabio Franzini
 

Similaire à ADF Gold Nuggets (Oracle Open World 2011) (20)

Push to the limit - rich and pro-active user interfaces with ADF (Oracle Ope...
Push to the limit - rich and pro-active user interfaces with ADF  (Oracle Ope...Push to the limit - rich and pro-active user interfaces with ADF  (Oracle Ope...
Push to the limit - rich and pro-active user interfaces with ADF (Oracle Ope...
 
Building workflow solution with Microsoft Azure and Cloud | Integration Monday
Building workflow solution with Microsoft Azure and Cloud | Integration MondayBuilding workflow solution with Microsoft Azure and Cloud | Integration Monday
Building workflow solution with Microsoft Azure and Cloud | Integration Monday
 
Developing Next-Gen Enterprise Web Application
Developing Next-Gen Enterprise Web ApplicationDeveloping Next-Gen Enterprise Web Application
Developing Next-Gen Enterprise Web Application
 
Lift Framework
Lift FrameworkLift Framework
Lift Framework
 
Serverless ML Workshop with Hopsworks at PyData Seattle
Serverless ML Workshop with Hopsworks at PyData SeattleServerless ML Workshop with Hopsworks at PyData Seattle
Serverless ML Workshop with Hopsworks at PyData Seattle
 
That's Rich! Putting a smile on ADF Faces (ODTUG Kaleidoscope 2009)
That's Rich! Putting a smile on ADF Faces (ODTUG Kaleidoscope 2009)That's Rich! Putting a smile on ADF Faces (ODTUG Kaleidoscope 2009)
That's Rich! Putting a smile on ADF Faces (ODTUG Kaleidoscope 2009)
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
 
Accelerated data access
Accelerated data accessAccelerated data access
Accelerated data access
 
Adding a modern twist to legacy web applications
Adding a modern twist to legacy web applicationsAdding a modern twist to legacy web applications
Adding a modern twist to legacy web applications
 
Windows Azure and a little SQL Data Services
Windows Azure and a little SQL Data ServicesWindows Azure and a little SQL Data Services
Windows Azure and a little SQL Data Services
 
Workflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowWorkflow Management with Espresso Workflow
Workflow Management with Espresso Workflow
 
JSF 2.0 Preview
JSF 2.0 PreviewJSF 2.0 Preview
JSF 2.0 Preview
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
Webinar september 2013
Webinar september 2013Webinar september 2013
Webinar september 2013
 
Native REST Web Services with Oracle 11g
Native REST Web Services with Oracle 11gNative REST Web Services with Oracle 11g
Native REST Web Services with Oracle 11g
 
Resthub
ResthubResthub
Resthub
 
Relevance trilogy may dream be with you! (dec17)
Relevance trilogy  may dream be with you! (dec17)Relevance trilogy  may dream be with you! (dec17)
Relevance trilogy may dream be with you! (dec17)
 
Webinar Oracle adf12c EN
Webinar Oracle adf12c ENWebinar Oracle adf12c EN
Webinar Oracle adf12c EN
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
Tuning and optimizing webcenter spaces application white paper
Tuning and optimizing webcenter spaces application white paperTuning and optimizing webcenter spaces application white paper
Tuning and optimizing webcenter spaces application white paper
 

Plus de Lucas Jellema

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
Lucas Jellema
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Lucas Jellema
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Lucas Jellema
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
Lucas Jellema
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
Lucas Jellema
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Lucas Jellema
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Lucas Jellema
 

Plus de Lucas Jellema (20)

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
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
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
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)
 
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...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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
 
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
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

ADF Gold Nuggets (Oracle Open World 2011)

  • 1. Gold Nuggets in Oracle ADF (Faces) Lucas Jellema – AMIS (Nieuwegein, The Netherlands) ADF EMG Community Day - Oracle Open World 2011
  • 2.
  • 3. Overview IDE favorites Fool’s Gold UI (tw)Highlights The Whole Wide World
  • 4. What is a gold nugget? Unexpected benefit Underused, overlooked feature Small – frequently useful Huge – unexplored concept or area of infrastructure Potentially useful to large community Not too much a niche option
  • 5. Nugget cloud Skin editor VO Updateable Lookup EL Tree Select Hot Reload Change Persistence Rich Table Auto Suggest Customization setPropertyListener Refresh after insert PanelCollection Decoupled Development & Reuse TaskFlow, Region, UIShell, Declarative Components, ADF Library, … Java/JEE Bean Data Control Popup PPR JHeadstart Mobile Fusion Applications Groovy EMG and wider community server event & listener Multi Browser Support Selenium so aDF DVT active rowkey Programmatic VO Active Data Service for Push OraFormsFaces PanelDashboard List validator prepareSession ADFContext Page Template WebLogic Server Save Points FormatString OPSS/ADF Security
  • 6. ADF in Larry’s Keynote on Oracle Open World 2009 and 2010
  • 7. Fusion Applications – biggest proof point in the world
  • 8. ADF powers the user interface of almost any Oracle product
  • 9. ADF powers the user interface of almost any Oracle product (2)
  • 10. the table ADF Faces Rich Table (& Panel Collection) Displays ADF Model data bound collection, bean array, List, ResultSet, RowSet and more Dynamic Table Configuration & Change Persistence Rearrange, resize, hide/show columns, freeze columns Post-load or Lazy Data Fetch Fetch data rows upon scroll Filter & Sort Read-Only and Click-to-edit [single or multiple] Row and Column Selection Header, Footer, Column Grouping, DetailStamp Many, many predefined facets Export data set, Email & Print mode
  • 11. Active row key Property on table that is ‘click to edit’ EL expression that resolves to the primary key of the row that should be displayed as editable Table will scroll that row into view
  • 12. "Smart" Completion Insight Ctrl-Space (x 2)
  • 13. publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1"); } }
  • 14. publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1"); } publicvoiddoSomething() { } }
  • 15. publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1"); } publicvoiddoSomething() { this. } } Ctrl Space
  • 16. publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1"); } publicvoiddoSomething() { this. } }
  • 17. publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1"); } publicvoiddoSomething() { this.getB } }
  • 18. publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1"); } publicvoiddoSomething() { this.getBookingView1Impl() } }
  • 19. publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1"); } publicvoiddoSomething() { ? = this.getBookingView1Impl() } } Ctrl Space x 1
  • 20. publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1"); } publicvoiddoSomething() { this.getB } } Ctrl Space x 1 Ctrl Space x 2
  • 21. publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1"); } publicvoiddoSomething() { this.getB } }
  • 22. publicclassAppModuleImplextendsApplicationModuleImpl { publicBookingsViewImpl getBookingsView1() { return (BookingsViewImpl)findViewObjects("BookingsView1"); } publicvoiddoSomething() { BookingsViewImplbookingsView = this.getBookingsView1(); } }
  • 23. Jdeveloper Go to Shortcuts Go to Class: CTRL - Go to File: CTRL ALT - Find usages: CTRL ALT u For class, method, EO and VO Attribute, …
  • 24. More best short cuts… CTRL Shift Space: parameter insight CTRL = : list of recently opened files CTRL Space: completion insight CTRL Space (2x): declaration insert CTRL /: selection commented CTRL Shift C:copy file path toClipboard Alt Home : selectfile in ‘tree’
  • 26. The Right Mouse Click ContextMenu client listener and Popup (menu and window)
  • 28. Example: Adding fancy balloon help Create a popup with a noteWindow child to contain the fancy help content Add a showPopupBehavior tag to the inputTextthat we want to add the help to
  • 29. Fusion Apps – ‘UI design pattern’
  • 30. Expression Language IoC: Injection of Value and Listener into page Dynamic, context sensitive behavior Extension points Custom Functions invoked from EL Integration of Spring Beans Custom EL Resolver To resolve values from property files, …. #{user.settings['NAME']}
  • 31. Extend EL to support custom functions with multiple parameters Create the static methods that implement the custom EL functions Configure <function> elements in a custom tag library descriptor Associate the tag library to the JSF page Use the function in expressions such as:
  • 32. Create the static methods
  • 33. Configure the function elements in a Tag Library Descriptor file
  • 34. Associate tag library with page and use tag library’s functions
  • 35. No coding quick start adf - leveraging best practices & uniform UI patterns
  • 36. Even more Declarative ADF development – with JHeadstart
  • 37. Programmatic cross tier interaction Web Browser JEE Application Server
  • 38. Client JavaScript Components manipulate component user action JavaScript Function component clientListener component userorprogrammaticaction partialSubmitautoSubmit Load JSON, CSS, Image, XML, JS property change Requestdata orPush message poll setPropertyListener partial triggers, added targets Queue Custom Event serverListener activeOutputText ERKS ‘ppr script’ partial page refresh Full pagereload push add JS toexecute (ERKS) Server (middle tier) component activeOutputText component add componentsas partial target actionListener, valueChangeListener, …Listener Bean serverListener Active DataModel Object Components Beans & Objects push (DB QRCN) Database Client Server interactions vv.
  • 39. Use setPropertyListenerto push data to the server The setPropertyListener will pass from value to the to target when type event occurs on parent A very simple way to inform the server about an event and the data associated with the event Supported types: action, focus, poll, query, rangeChange, selection, sort, rowDisclosure, valueChange and many more <af:image id="removeFromSetImage“ source="/images/removeFromSet.png“ shortDesc="Remove from Shopping Basket"/> <af:setPropertyListener from="#{item}“ to="#{shoppingBasket.itemToRemove}" type="action"/> </af:commandLink>
  • 40. ServerListener for custom AJAX (background client to server push) A serverListener associates a server side method with a client side custom event This allows JavaScript functionsto call a server side method by queuing an event A custom event carries a payload
  • 41. ADF Active data service – server push to client Push: server sends messages to client ADF Active Data Service enables UI components to be ‘automaticallyrefreshed’ when server sideeventsoccur Active UI ComponentsincludeTable, Image, OutputText, DVT Components Basedon BAM Data Control BasedonCustomBeansthatextendActiveAdapter Nudge: push-to-refresh Note: client-2-client pushcaneasilybeimplementedas client-to-server-followed-by-server-to-client push Web Browser JEE Application Server
  • 42. Auto-PPR for immediate refresh of Data Bound components To have ADF automatically refresh data bound components when underlying value binding has changed its value Set changeEventPolicy=ppr on iterator Refresh as piggy back on any request cycle No partialTriggers attribute required!
  • 43. Cross Tier Push Web Browser table activeOT Cache refresher JEE Application Server evtlsnr servlet RDBMS job trg
  • 44. Push to the limit – rich and pro-active user interfaces with ADF Session Plug – Session Plug – Session Plug – Session Pl Wednesday, 5-6 PM, Mariott Marquis, Golden Gate A Oracle Open World 2011
  • 45. The “History” feature in JDeveloper Quick comparison of file with previous states Can leverage Source Code Control system (Subversion, CVS) but also maintains local file history The compare feature is ‘XML aware’ Revert to a previous state of a file
  • 46. Marrying forms and ADF together – migrate with (i/o from) forms to adf OraFormsFaces leveraging the JavaScript-Applet bridge for two-way event exchange
  • 47. ADF BC Properties Property Inspector
  • 49. The World wide Advanced Developers Family
  • 50. The World wide Advanced Developers Family ADF Enterprise Methodology Group OTN Discussion Forum OTN and ADF Resources Documentation, samples, tutorials, testimonials, virtual developer days, rea.oracle.com Blog-o-sphere Conferences around the globe OOW, ODTUG Kaleidoscope, UKOUG, OBUG, AUSOUG/OAUG/ODTUG 20:20, DOAG, … Books and articles Oracle Press, Packt Publishing, … Oracle Magazine, ODTUG Technical Journal, … Also: Leverage Java/JEE community and resources
  • 51. Java and JEE ADF is a framework on top of Java, JEE and JVM Anything that is/extends/runs on one of these is potentially usable with and relevant for ADF Zillion frameworks and libraries iText (PDF), Apache POI (Excel), Jasper Reports, BIRT Spring (IoC, AOP, Acegi/Security, Social, ..) Apache Commons, Google Collections, Joda Time Software Engineering Test (Junit, EasyMock), build (Ant, Maven), check/QA (FindBugs, CheckStyle, Sonar), JEE facilities in WLS including JMS, WS* & RS, JMX… Dynamic JVM languages: Groovy, Scala, JRuby, … Java 7 SE and beyond Java FX?
  • 52. Prepare session Before any other database communication is performed during the processing of a request … ADF BC will execute the prepareSession() method that you can override in ApplicationModuleImpl This is the perfect place to Reset package state Set application and client info Set application context User details, current session context, view filter conditions(real or poor man VPD) Fetch any events published inside the database ADF BC AppMod Database
  • 53. Challenge Create a Sliding Tile puzzle that tiles up an image in a configurable number of tiles Using drag and drop, the user can reassemble the image
  • 54. The PanelDashboard component Renders a ‘portal-like’ dashboard – as a grid of PanelBox-components Configurable number of columns row height Collapsible (boxes) Supports drag & drop for reorganization And change persistence to remember (per user) Very easy to use
  • 55. Steps Create Servlet that produces tiles from a JPEG image Parameters: image name, tile factor, x and y Create PanelDashboard with panelBoxes with richImage components That request their source from the servlet corresponding to their position in the grid Bind the PanelDashboard and dynamically create the panelBox components Allow user to set the tile factor and choose the image Use a Carousel for image selection
  • 56. demo
  • 57.
  • 60. ADF BC SDO Service
  • 61.
  • 62. Programmatic View Object It walks, talks and looks like a ‘regular’ View Object (regular being based on Entity Objects or SQL Query) But it is entirely fueled by custom written overridden Java methods – possibly without database connection A bit like a View with Instead Of trigger – against a Collection based Table Function and PL/SQL API Programmatic View Objects can be used as normal in a Data Control for binding ADF Faces components Normal rich declarative ADF BC data binding can be provided to UI developers for data sources such as WebService, JMS Queue, Memory Grid, Document Management System, Email, cross session data, … Note: with the evolution of the Bean Data Control, some of the use cases will fade away
  • 63. the root of Ajax Suggestions
  • 64. Auto Suggestions User is entering a field As she types characters, suggestions can be presented for what the full entry should read Based on a list of allowable values, based on previous (popular) entries or anything really User can pick a suggestion for ‘short-cut typing’ Auto suggestions can be model-driven (declarative) or custom And can do things beyond plain list based suggestions
  • 65. Intro Google Suggest set off the AJAX hype in anger Many implementations for a ‘suggestions’ feature in ADF 10g and 11g have been created Using custom JavaScript or libraries like Jquery With PS1, ADF 11g introduced a native component for ‘auto suggestions’ The <af:autoSuggestBehavior> component, to be included in inputText or inputListOfValues orinputComboboxListOfValues
  • 66. Model Driven Suggestions The suggestions can be derived declaratively from List of Values reference on a VO Attribute Steps: On ViewObject Create ViewAccessor (for list values) Create List of Values for Attribute Link LoV to ViewAccessor In Page Add InputListOfValues component based on attribute Add af:autoSuggestBehavior with suggestions based on List of Values Binding’s suggestedItems
  • 67.
  • 68.
  • 70. Custom Suggestions Auto Suggestions can be provided by managed bean that implements signature: List getSuggestions( String currentValue) And the List returned is really List<SelectItem> Potential use cases Based on some (application wide) cached collection (of previously entered ?) values Retrieve values from WebService, file, … Use common abbreviations, codes Country code, airport Show translations in other languages
  • 71. Static List of Countries Suggestions
  • 72. Suggestions … or? Suggested Values do not need to be suggestions in a very literal sense What you see may not be what you get The SelectItem as a label (WYS) and a value (ISWYG) Examples: Add words to field instead of replacing value Perform selected operation on value Show an updated indicator based on the value
  • 73. Mix Model Driven with Custom Create a managed bean that accesses ViewObject to retrieve values Use custom code to execute special queries using INSTR, LIKE or other conditions Have managed bean return items to display in the list of suggestions Based on special ordering or fuzzy logic, Suggestions
  • 74. Candidate Managers filtered on First Name, Last Name & Job Suggestions
  • 76. Page template Turns page layout inside out: the page references the template the page template determines the overall structure the page provides the content for the designated areas in the template (through the facets) Can be dynamically, context-sensitively selected using an EL expression Can also be used for areas within a page With multiple page templates used within the same page More an area template than a page template to define UI Design Patterns Tree-with-Detail-Form, Table-and-Chart, Master-Form-Detail-Table, Search block-Resultstable…
  • 77. Using multiple page templates Two templates: mainpage and Table-Form template
  • 78. Other page consuming the template(s)
  • 80. Summary Twinkle, twinkle little stars… #1 nugget #2 nugget #3 nugget Don’t give up [too soon] There is more in ADF than meets the eye There is a world of Java/JEE to leverage There is a community to lean on Scan release notes and monitor blog-o-sphere for valuable new (and re-discovered) nuggets Share! Yes, you too! Your findings are just as valuable. Participate in EMG and OTN Forum discussions, write blog articles, present in conferences, …
  • 81. Session Plugging Tuesday – Reaching Out from PL/SQL (S08625 )10.15-11.15, Mariott Marquis, Salon 7 Tuesday – (JavaOne) Cross Tier Push Architecture (Don’t call us, we’ll push you) (S24722)4.30-5.15 PM, Hotel Nikko, Monterey I/II Wednesday – Push to the Limit: Rich and Proactive User Interfaces with Oracle ADF (S08620)5-6 PM, Mariott Marquis, Golden Gate A Thursday –Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (S08623)4-5 PM, Moscone West – 2020

Notes de l'éditeur

  1. Process
  2. ADFBCGroovy, groovy, groovy.List validators die je definieert op view assessors. Bij een entityObjectAttribute Business rule kun je een Listvalidator baseren op een view accessor. Dit kan handig zijn.LibraryShared property voor EO&apos;s en VO&apos;s. In verband met ADF BC Libraries. Alleen de objecten met LibrarySharedproperty = true kunnen worden gebruikt in de projecten die deze library importeren. Default staat deze property op true, dus zullen alle objecten altijd zichtbaar zijn. Door selectiever gebruik te maken van deze property blijven je libraries schoner. ADFFACESIn ADF 11g-R2 heb je de activeRowKeyproperty. Deze stelt je in staat om in een tabel met de click to edit mode een rij programmatisch editable te maken (zonder te clicken). Als de rij niet zichtbaar is dan wordt hier automatisch naar toe gescrolled. Zie ook : http://technology.amis.nl/blog/13314/adf-11g-r2-using-the-activerowkey-propertyIn ADF 11g-R2 heb je af:formatString en af:formatNamed. Daarmee kun je parameters (maximaal 4) gebruiken in EL expressies. formatString heeft 1 parameter, formatString2 heeft er 2, en zo verder tot formatString4. Hetzelfde geldt voor formatNamed; zie ook http://download.oracle.com/docs/cd/E16162_01/web.1112/e16181/gs_jdev.htm#CHDDAICC&lt;af:outputText value=&quot;#{af:formatString(&apos;The current user is: {0}, someBean.currentUser)}&quot; /&gt;
  3. In ADF 11g-R2 heb je de activeRowKeyproperty. Deze stelt je in staat om in een tabel met de click to edit mode een rij programmatisch editable te maken (zonder te clicken). Als de rij niet zichtbaar is dan wordt hier automatisch naar toe gescrolled. Zie ook : http://technology.amis.nl/blog/13314/adf-11g-r2-using-the-activerowkey-property
  4. Some developers don&apos;t know the Completion Insight has 2 modes
  5. Problem here is it hasn&apos;t filled in the left hand side of the assignment .... what types was it meant to return?In this examples it&apos;s easy to guess, but what if the function was declared in some other class? It&apos;s painful to have to navigate to that class and come back
  6. Instead if the user presses Ctrl – Space twice
  7. ....the Completion Insight changes modes
  8. On selecting an entry, it will now do both sides of the expression+ bonus it completes the statement too with a semicolon
  9. http://technology.amis.nl/blog/6583/adf-11g-contextinfo-to-implement-a-common-fusion-applications-pattern
  10. Push to the limit - rich and pro-active user interfaces with ADF Visual appeal and desktop-like reaction to user input were key elements in Web 2.0, powered by AJAX. The next generation user interface is active - presenting data and events in real time, driven by server push technology. This session demonstrates how ADF Active Data Service (ADS) and the BAM Data Control are leveraged to create an active UI. Messages arriving on JMS, through HTTP, from Complex Event Processing and from email servers are pushed to the browser, updating charts, tables and even causing popups to open. The session demonstrates a Chat implementation integrated in a Fusion Web application. It also shows how Database Query Result Change Notification and ADS allow events to be pushed from database all the way to user interface.Demo: http://technology.amis.nl/blog/12353/leveraging-html-5-navigator-api-to-show-the-browsers-current-location-on-an-adf-faces-11gr2-thematic-map-component
  11. Even though we have a rich editor for business components, there are hidden properties only revealed in the Property InspectorThe highlighted option when used, with the ADF BC components are deployed as an ADF Library, if this is set to true, the component will not be available to the consuming application.
  12. http://technology.amis.nl/blog/6581/adf-11g-the-native-autosuggest-behaviorhttp://www.gebs.ro/blog/oracle/oracle-adf-autosuggest-behavior/
  13. ViewObject for Candidate Managers (ViewCriteria with one bind parameter PartialName) Application Module Impl method (in Client Interface): findCandidateManagers(partialName) return row[]Action (Operation) Binding for that method in pageManaged bean that implements suggestions signature, executes operation binding and returns the results(pretty serious: database access after each key stroke!)