SlideShare a Scribd company logo
1 of 52
Lucas Jellema – AMIS (Nieuwegein, The Netherlands)
PUSH TO THE LIMIT –
RICH AND PRO-ACTIVE USER
INTERFACES WITH ADF




UK Oracle User Group, December 2011, Birmingham
OVERVIEW

• Real time architecture
• Push – ADF middle tier to browser
   – Active Data Service (Chat)
   – Business Activity Monitoring
   – Progress Indicator
   – Push triggering pull (nudge)
• Client to Client Push
• Push – Database to middle tier
• Push all the way across the tiers
• Push Challenges and Future Developments
ASYNCHRONOUS COMMUNICATION
IN THE REAL WORLD
•   “I‟ll get back to you”
•   “Don‟t call us,…”
•   Low fuel warning in car
•   “Please let me know”
•   “Return to sender – address unknown”
•   Newspaper delivery
•   Next instruction from car navigation system
•   Telephone ringing
•   Alarm clock buzzing
•   Parking sensors beeping
•   Fire alarm screaming
ASYNCHRONOUS INTERACTIONS AND PUSH
IN THE IT LANDSCAPE
• More timely information
   – Notification as soon as possible
• Proactive offering
   – Do not ask and you shall be given
• Lower load on back end – don‟t call us (all the time) …
   – Stop hitting the F5 button!
• Multi-channel information manipulation and
  dissemination
   – Changes and events come in from everywhere
• Decouple system components through generic
  infrastructure for handling events and push
   – Yet integrate
PUSHING IT … INTO THE USER INTERFACE

• Automatically refreshing (part of) a page
   – Update table
   – Redrawing chart
• Displaying popup to alert user to an event
   – Arrival of message (email or chat)
   – Signing in or out of contact (presence)
   – Lock or release of some resource
   – Notification
• Changing status of items on the page
   – Highlight change indicator
   – Show icon
   – Change text to italic
• Play a sound
Mobile        Mobile
                                   Device        Device
Web Browser       Web Browser




                                                                      Non
  Complex Event        JEE Application          JEE Application
                                                                      Java
    Processor               Server                  Server
                                                                     Server




                                            Email
          RDBMS                                             Chat Server
                        RDBMS               Server
THE „ONLY TELL WHEN ASKED‟ GAME
INTRODUCING ADF ACTIVE DATA SERVICE

• Built in mechanism in ADF to push updates from the
  middle tier to the browser
   – active UI components that refresh upon reception of
     the push (table, image, output text, DVT graphs)
   – client side infrastructure to process received push
     messages
   – a multiplexed (multi-event) channel to push to client –
     leveraging WebLogic Server push capabilities
        • Long poll today, WebSockets or SPDY tomorrow
    – server side infrastructure to manage active beans and
      turn events into pushed messages
    – Active data control:
        • BAM Data Control for push from BAM’s Active Data
          Cache all the way to data bound UI components
OVERVIEW OF ADS INFRASTRUCTURE
USING ADF ACTIVE DATA SERVICE TO
EMBED CHAT CLIENT IN WEB APPLICATION
• Instant Messaging should be instant
   – Requirement to push incoming messages to client
• Common IM protocol is XMPP (over TCP)
   – Extensible Messaging and Presence Protocol
• XMPP Java Libraries help to connect to and
  communicate with XMPP servers
   – For example Smack
• To embed chat in in ADF application we need to
   – consume messages over XMPP
   – and push them to the Web Client
• The ADS approach:
   – Use ‘active’ UI Components
   – Bind them to bean that
     implements ActiveDataModel
   – Turning the IM messages
     into entries in ActiveDataModel
EXAMPLE OF ADS: GOOGLE TALK




                      Web Browser




                   JEE Application Server
EXAMPLE OF ADS: GOOGLE TALK




                      Web Browser




                   JEE Application Server
PUSH TROUGH ACTIVE DATA SERVICE


                               Web Browser




       ADS




             MessageReceiver
PUSH TROUGH ACTIVE DATA SERVICE


                               Web Browser




       ADS




             MessageReceiver
PROGRAMMATIC CROSS TIER
INTERACTION




            Web Browser




         JEE Application Server
CLIENT SERVER INTERACTIONS VV.
          Client                    JavaScript Components                 manipulate
                                                                                                               component
                          JavaScript                                                                         component
                           Function                          clientListener
                                                                                     partialSubmit         component     user
           Load JSON, CSS,                                                             autoSubmit                          or
Request    Image, XML, JS                                                                                                  programmatic
                                                                              poll
data or                                                                                         setPropertyListener        action
Push
message                Queue Custom
                                                                                                     serverListener
                          Event
                             ERKS                                                                                 activeOutputText
                          ‘ppr script’
                                                           partial
                                                            page                               Full page                   push
                                                           refresh                              reload
                                           add JS to
          Server                            execute                             component
                                                                                  component                       activeOutputText
          (middle tier)                      (ERKS)       add
                                                          components
                                                          as partial target                      actionListener,
                                                                                              valueChangeListener,
                                                  Bean                                             …Listener
                                                                                     serverListener
                                            Active Data
                        Object                Model
                                         Beans & Objects                      Components
                              push (DB QRCN)


                                 Database
THE NUDGE

• Event should have small payload – just an indication
  of the type of event and a key-reference to the payload
• Based on the information, the consumer decides to
  retrieve the associated payload, using the key

            nudge handler          UI Component


                        Payload
      Nudgee           Retriever




       Nudger
THE PUSH-TO-NUDGE TRICK
(MATTHIAS WESSENDORF)

                       Client Listener
                          Function
                                          •Show popup
      activeOutputText
                                          •Update field value
                                          •Modify style property
                    clientListener
                                          •Call Server (PPR)
                type=propertyChange



                                                Servlet

  Active data                                    JMS
                                               Listener
   Active Bean            Event Handler
        &                                     Scheduled
  Event Listener                                 Job
SIMPLE NUDGE TO CLIENT
SIMPLE NUDGE TO CLIENT
ASYNCHRONOUS JOB
PROGRESS INDICATOR
SPIN OFF ANOTHER THREAD TO DO THE
     WORK AND INFORM ON PROGRESS


             Web Browser
 HTML +
JavaScript




                                Servlet


        ServerSide ActiveBean

                                          Perform long running
                                          job & report progress
DEMO
CLIENT TO CLIENT PUSH

• Usually really a combination of
   – Client-to-Server
   – and Server-to-the-other-Client push
• Exception: Blue Tooth, Near-Field Communication
CLIENT TO CLIENT PUSH –
SLIDE SYNCHRONIZATION
CLIENT TO CLIENT PUSH –
SLIDE SYNCHRONIZATION
activeImageBean
activeImageBean
CROSS GAP PUSH MECHANISMS




• Many channels are available to push messages from
  one entity to another,
   – across application, technology and location boundaries
• JMS
• (one way) WebService (SOAP or REST)
• “HTTP Channel”
• WebSockets
• Http Call to Servlet
• XMPP
SERVER TO MOBILE PUSH:
MULTIPLEXED, SEMI-POLL BASED
PUSH FROM DATABASE TO MIDDLE TIER

• Middle tier asks database – through JDBC, ODBC,
  SQL*Net, HTTP, …
   – The database is reactive only – not pushy at all
• Some mechanisms allow the database to take the
  initiative and start to push
   – Database Query Result Change Notification
   – Http calls from utl_http or JSP
   – Table with Multiplexed Poll
THE HOLLYWOOD PRINCIPLE:
QUERY RESULTSET CHANGE NOTIFICATION




              POJO / ADF BC
CACHE REFRESH TRIGGERED BY DB



             POJO / ADF BC




SQL query




                             PL/SQL
SHARED APPLICATION MODULES

• Regular Application Module instances are session
  level – i.e. not shared across (web) sessions
• Shared Application Module instances are shared
  across sessions like an Application Scope Managed
  Bean
   – Used for Static Data Sets: Look Up Data and Reference
     Tables
• Sessions can reuse the data from a shared Application
  Module without having to access the database
   – And without loading the data in session level memory scope
• View Accessors can be used to access data in the
  Shared Application Module‟s VOs
   – For example for use in LOVs or Validation Rules
SHARED APPLICATION MODULE
INSTANCE
AUTO REFRESH FOR VIEW OBJECTS

• ViewObjects in a Shared Application Module can be
  registered for auto refresh
   – Typically such application wide VOs are near-static
   – Whenever the underlying data set changes (in the
     database), the VO rowset should be refreshed
• By setting Auto Refresh (to true) for the ViewObject,
  the VO will be refreshed whenever the database is
  changed
   – ADF registers the VO query with the Database (11g)
     Result Set Change Notification mechanism through
     JDBC
   – Note: the VO should not have an Order By clause nor
     select a Date column
STEPS FOR AUTO REFRESH ENABLING

• Create Shared Application Module
   – New application module that is added to list of
     Application Level instances in the Project properties
• Create the ViewObject that queries the „static data‟ and
  add to Shared Application Module
• Set the Auto Refresh property to true for VO instance
• Database must be 11g (and have parameter compatible
  set to 11.1.0 or above)
   – database user must have the Change Notification
     privilege
• To piggy back changes to page, set
  changeEventPolicy to autoPPR on data binding
SET AUTO REFRESH FOR VIEWOBJECT

• Set Auto Refresh
  for ViewObject




• Grant Change Notification to
  database user
DEMO: DATABASE PUSH TO VIEW
OBJECT IN ACTION




                              DBQRCN
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!
ALTERNATIVE DATABASE TO MIDDLE TIER
PUSH IMPLEMENTATION
                                                    Session scope bean

     listener           listener         listener
   register                                          Application scope bean
                JEE Application Server
                       event handler

                                                               servlet
     Scheduled            Payload          Push
      Poll Job           Retriever       Receptor
                                                           utl_http



                     ‘Events
                    collector’                             trigger
                          RDBMS
CROSS TIER PUSH




                            Web Browser
                                     table
                          activeOT




                                        Cache
                  evt lsnr Applicationrefresher
                      JEE              Server
                                             servlet




                                       job
                                 RDBMS
                                   trg
INITIATE „NORMAL‟ PPR CYCLE IN
      WHICH TO REFRESH UI COMPONENTS

                                Client Listener
       component                   Function

activeOutputText                             someComponent

           clientListener
                                                     serverListener
       type=propertyChange

                                                             PPR request
                     Iterator
                     Auto ppr                       Bean
                      View
                      Entity



                   RDBMS
INTRODUCING
BUSINESS ACTIVITY MONITORING
• Operational Business Intelligence
• Data fed in from many sources:
    – RFID sensors, BPEL, Database Triggers, RSS, ODI
• Real Time insight
• Dashboard
• Live updates
• Looking for threshold crossing, exceptions, trends,
  missing events
• Display visually and turn into alerts & notifications
INTRODUCING
BUSINESS ACTIVITY MONITORING

                                  ADF
                               Application
EMBEDDING REAL TIME DISPLAYS IN ADF
BASED ON BAM DATA CONTROL
• Configure connection to BAM Server
• Create BAM Data Control
   – Based on Data Objects in
     Active Data Cache
• Drag & Drop Data Control‟s
  collections & attributes to
  ADF Faces pages
   – Just like ADF BC
     Data Control
   – However:
     BAM Data Control is active
LIVE VOLLEYBALL REPORTING




                       Web Browser


           JMS Queue




    BAM
           Data
          Object
SERVER PUSH CHALLENGES

• How to push against the „one way direction‟ and
  despite limitations
   – HTTP and JDBC are request/response – not response
     only
   – Browser limit of only two channels to one server
• Server side „event handling‟
   – Session has to have an active life beyond requests
       • Or requests have a life beyond response
   – Higher load on the server
   – How to handle the (potential) volume of ‘concurrent’
     channels and the number of open threads
       • NIO, Servlet 3.0, Jetty Continuations, Tomcat Advanced
         I/O
SERVER PUSH CHALLENGES (2)

• Where do events to push actually come from?
   – Who perceives/receives (real-time) events (on the
      server side)
   – How are they tied in to the appropriate sessions?
• Client (consumer) side: how to asynchronously
  receive events and how to process them/turn them
  into action and UI updates
• How to correlate an asynchronously received message
  with a previously sent request or a subscription
   – For example: mobile phone showing SMS or
      WhatsApp messages in a conversation thread style
FUTURE DEVELOPMENTS

• The real time enterprise
• The event driven enterprise
• Further evolution of push notification at every tier
   – Mobile perhaps leading the way
• Infrastructure and frameworks providing push
  mechanisms
   – Such as Active Data Service
• Servlet 3.0, Java NIO, WebSockets,
  SPDY, XMPP and other lighter
  weight solutions for bi-directional
  communication over TCP
   – And broad support in browsers
      and application servers
• Project Avatar – cross Java
  platform support for HTML 5,
  Web Sockets and push
SUMMARY

• Push
   – Pro active or at least real time user interface
   – Real time user to user interaction
   – Decrease load on infrastructure (refresh over and over)
• Real push hardly exists
   – Smart poll/pull is often underlying implementation
   – Piggy backing, Multiplexing, decoupling etc. are
     required to scale
• ADS is powerful
   – Especially with the ‘nudge now you do a fine grained
     fetch or refresh’ pattern
• Database can push too – using DBQRCN, HTTP, ….
• ADF can push to Android or iOS
   – Using Google and Apple Push Notification Services
   – ADF Mobile should support push notification as well
Push to the limit - rich and pro-active user interfaces with ADF - V2 (UKOUG, 2011)

More Related Content

What's hot

Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DayTechMaster Vietnam
 
Integrating Your Site With Internet Explorer 8
Integrating Your Site With Internet Explorer 8Integrating Your Site With Internet Explorer 8
Integrating Your Site With Internet Explorer 8goodfriday
 
Funambol JavaME Messaging Client: Lessons Learned - JavaONE 2008
Funambol  JavaME Messaging Client: Lessons Learned - JavaONE 2008Funambol  JavaME Messaging Client: Lessons Learned - JavaONE 2008
Funambol JavaME Messaging Client: Lessons Learned - JavaONE 2008Edoardo Schepis
 
Designing a Language and System for REST-oriented service composition,as a se...
Designing a Language and System for REST-oriented service composition,as a se...Designing a Language and System for REST-oriented service composition,as a se...
Designing a Language and System for REST-oriented service composition,as a se...raniakhalaf
 
Davivienda - Exceptional Web Experiences
Davivienda - Exceptional Web ExperiencesDavivienda - Exceptional Web Experiences
Davivienda - Exceptional Web ExperiencesDjalma Britto
 
Bite: Workflow Composition for the Web. Presented at the ICSOC Conference 2007
Bite: Workflow Composition for the Web. Presented at the ICSOC Conference 2007Bite: Workflow Composition for the Web. Presented at the ICSOC Conference 2007
Bite: Workflow Composition for the Web. Presented at the ICSOC Conference 2007raniakhalaf
 
Windows Sql Azure Cloud Computing Platform
Windows Sql Azure Cloud Computing PlatformWindows Sql Azure Cloud Computing Platform
Windows Sql Azure Cloud Computing PlatformEduardo Castro
 
A Flow Based Approach for End to End Mashups
A Flow Based Approach for End to End MashupsA Flow Based Approach for End to End Mashups
A Flow Based Approach for End to End Mashupsraniakhalaf
 
Navantis & Microsoft "Find Your Silver Lining in the Cloud" Event Slidedeck
Navantis & Microsoft "Find Your Silver Lining in the Cloud" Event SlidedeckNavantis & Microsoft "Find Your Silver Lining in the Cloud" Event Slidedeck
Navantis & Microsoft "Find Your Silver Lining in the Cloud" Event SlidedeckNavantis
 
Fast, Strong & Nimble Mobile Performance Testing
Fast, Strong & Nimble Mobile Performance TestingFast, Strong & Nimble Mobile Performance Testing
Fast, Strong & Nimble Mobile Performance TestingSOASTA
 
MetaConfig driven FeatureStore : MakeMyTrip | Presented at Data Con LA 2019 b...
MetaConfig driven FeatureStore : MakeMyTrip | Presented at Data Con LA 2019 b...MetaConfig driven FeatureStore : MakeMyTrip | Presented at Data Con LA 2019 b...
MetaConfig driven FeatureStore : MakeMyTrip | Presented at Data Con LA 2019 b...Piyush Kumar
 
ECM Technical Solution
ECM Technical SolutionECM Technical Solution
ECM Technical SolutionThanh Nguyen
 
Microsoft SQL Server 2012
Microsoft SQL Server 2012 Microsoft SQL Server 2012
Microsoft SQL Server 2012 Dhiren Gala
 
Fishbowl Webinar - Windchill Performance: You can't manage what you can't mea...
Fishbowl Webinar - Windchill Performance: You can't manage what you can't mea...Fishbowl Webinar - Windchill Performance: You can't manage what you can't mea...
Fishbowl Webinar - Windchill Performance: You can't manage what you can't mea...Fishbowl Solutions
 

What's hot (16)

Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech Day
 
Mule jdbc
Mule   jdbcMule   jdbc
Mule jdbc
 
Integrating Your Site With Internet Explorer 8
Integrating Your Site With Internet Explorer 8Integrating Your Site With Internet Explorer 8
Integrating Your Site With Internet Explorer 8
 
Funambol JavaME Messaging Client: Lessons Learned - JavaONE 2008
Funambol  JavaME Messaging Client: Lessons Learned - JavaONE 2008Funambol  JavaME Messaging Client: Lessons Learned - JavaONE 2008
Funambol JavaME Messaging Client: Lessons Learned - JavaONE 2008
 
Designing a Language and System for REST-oriented service composition,as a se...
Designing a Language and System for REST-oriented service composition,as a se...Designing a Language and System for REST-oriented service composition,as a se...
Designing a Language and System for REST-oriented service composition,as a se...
 
Davivienda - Exceptional Web Experiences
Davivienda - Exceptional Web ExperiencesDavivienda - Exceptional Web Experiences
Davivienda - Exceptional Web Experiences
 
Bite: Workflow Composition for the Web. Presented at the ICSOC Conference 2007
Bite: Workflow Composition for the Web. Presented at the ICSOC Conference 2007Bite: Workflow Composition for the Web. Presented at the ICSOC Conference 2007
Bite: Workflow Composition for the Web. Presented at the ICSOC Conference 2007
 
Windows Sql Azure Cloud Computing Platform
Windows Sql Azure Cloud Computing PlatformWindows Sql Azure Cloud Computing Platform
Windows Sql Azure Cloud Computing Platform
 
A Flow Based Approach for End to End Mashups
A Flow Based Approach for End to End MashupsA Flow Based Approach for End to End Mashups
A Flow Based Approach for End to End Mashups
 
Navantis & Microsoft "Find Your Silver Lining in the Cloud" Event Slidedeck
Navantis & Microsoft "Find Your Silver Lining in the Cloud" Event SlidedeckNavantis & Microsoft "Find Your Silver Lining in the Cloud" Event Slidedeck
Navantis & Microsoft "Find Your Silver Lining in the Cloud" Event Slidedeck
 
Fast, Strong & Nimble Mobile Performance Testing
Fast, Strong & Nimble Mobile Performance TestingFast, Strong & Nimble Mobile Performance Testing
Fast, Strong & Nimble Mobile Performance Testing
 
MetaConfig driven FeatureStore : MakeMyTrip | Presented at Data Con LA 2019 b...
MetaConfig driven FeatureStore : MakeMyTrip | Presented at Data Con LA 2019 b...MetaConfig driven FeatureStore : MakeMyTrip | Presented at Data Con LA 2019 b...
MetaConfig driven FeatureStore : MakeMyTrip | Presented at Data Con LA 2019 b...
 
ECM Technical Solution
ECM Technical SolutionECM Technical Solution
ECM Technical Solution
 
Microsoft SQL Server 2012
Microsoft SQL Server 2012 Microsoft SQL Server 2012
Microsoft SQL Server 2012
 
Fishbowl Webinar - Windchill Performance: You can't manage what you can't mea...
Fishbowl Webinar - Windchill Performance: You can't manage what you can't mea...Fishbowl Webinar - Windchill Performance: You can't manage what you can't mea...
Fishbowl Webinar - Windchill Performance: You can't manage what you can't mea...
 
Ta3
Ta3Ta3
Ta3
 

Similar to Push to the limit - rich and pro-active user interfaces with ADF - V2 (UKOUG, 2011)

Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A GlanceStefan Christoph
 
Don't call us - we'll push - on cross tier push architecture (NLJUG JFall 201...
Don't call us - we'll push - on cross tier push architecture (NLJUG JFall 201...Don't call us - we'll push - on cross tier push architecture (NLJUG JFall 201...
Don't call us - we'll push - on cross tier push architecture (NLJUG JFall 201...Lucas Jellema
 
Complex End-to-End Testing
Complex End-to-End TestingComplex End-to-End Testing
Complex End-to-End TestingErika Barron
 
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise ArchitecturesBIOVIA
 
Expendables E-AppStore
Expendables E-AppStoreExpendables E-AppStore
Expendables E-AppStorelobalint
 
BUG - BEA Users\' Group, Jan16 2003
BUG - BEA Users\' Group, Jan16 2003BUG - BEA Users\' Group, Jan16 2003
BUG - BEA Users\' Group, Jan16 2003Sanjeev Kumar
 
#lspe: Dynamic Scaling
#lspe: Dynamic Scaling #lspe: Dynamic Scaling
#lspe: Dynamic Scaling steveshah
 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomQConLondon2008
 
Resource Oriented Architecture in Wireless Sensor Network
Resource Oriented Architecture in Wireless Sensor NetworkResource Oriented Architecture in Wireless Sensor Network
Resource Oriented Architecture in Wireless Sensor NetworkThomas Pham
 
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...Lucas Jellema
 
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns FrameworksMike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns Frameworksukdpe
 
Manage Agility through Manage-ability – Introducing Design Time at Run Time ...
Manage Agility through Manage-ability – Introducing Design Time at Run Time ...Manage Agility through Manage-ability – Introducing Design Time at Run Time ...
Manage Agility through Manage-ability – Introducing Design Time at Run Time ...Lucas Jellema
 
(ATS3-DEV05) Coding up Pipeline Pilot Components
(ATS3-DEV05) Coding up Pipeline Pilot Components(ATS3-DEV05) Coding up Pipeline Pilot Components
(ATS3-DEV05) Coding up Pipeline Pilot ComponentsBIOVIA
 
Building tomorrow's web with today's tools
Building tomorrow's web with today's toolsBuilding tomorrow's web with today's tools
Building tomorrow's web with today's toolsJames Pearce
 
Server-Side Programming Primer
Server-Side Programming PrimerServer-Side Programming Primer
Server-Side Programming PrimerIvano Malavolta
 
Dan Vulpe - JavaFX 2 - Developing RIA with Java
Dan Vulpe - JavaFX 2 - Developing RIA with JavaDan Vulpe - JavaFX 2 - Developing RIA with Java
Dan Vulpe - JavaFX 2 - Developing RIA with JavaCodecamp Romania
 
SVG in Data Acquisition and Control Systems
SVG in Data Acquisition and Control SystemsSVG in Data Acquisition and Control Systems
SVG in Data Acquisition and Control SystemsTao Jiang
 

Similar to Push to the limit - rich and pro-active user interfaces with ADF - V2 (UKOUG, 2011) (20)

Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A Glance
 
Don't call us - we'll push - on cross tier push architecture (NLJUG JFall 201...
Don't call us - we'll push - on cross tier push architecture (NLJUG JFall 201...Don't call us - we'll push - on cross tier push architecture (NLJUG JFall 201...
Don't call us - we'll push - on cross tier push architecture (NLJUG JFall 201...
 
Complex End-to-End Testing
Complex End-to-End TestingComplex End-to-End Testing
Complex End-to-End Testing
 
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
 
Expendables E-AppStore
Expendables E-AppStoreExpendables E-AppStore
Expendables E-AppStore
 
Introducing spring
Introducing springIntroducing spring
Introducing spring
 
BUG - BEA Users\' Group, Jan16 2003
BUG - BEA Users\' Group, Jan16 2003BUG - BEA Users\' Group, Jan16 2003
BUG - BEA Users\' Group, Jan16 2003
 
#lspe: Dynamic Scaling
#lspe: Dynamic Scaling #lspe: Dynamic Scaling
#lspe: Dynamic Scaling
 
System events concept presentation
System events concept presentationSystem events concept presentation
System events concept presentation
 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales Forcecom
 
Resource Oriented Architecture in Wireless Sensor Network
Resource Oriented Architecture in Wireless Sensor NetworkResource Oriented Architecture in Wireless Sensor Network
Resource Oriented Architecture in Wireless Sensor Network
 
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...
Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (O...
 
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns FrameworksMike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
 
Manage Agility through Manage-ability – Introducing Design Time at Run Time ...
Manage Agility through Manage-ability – Introducing Design Time at Run Time ...Manage Agility through Manage-ability – Introducing Design Time at Run Time ...
Manage Agility through Manage-ability – Introducing Design Time at Run Time ...
 
(ATS3-DEV05) Coding up Pipeline Pilot Components
(ATS3-DEV05) Coding up Pipeline Pilot Components(ATS3-DEV05) Coding up Pipeline Pilot Components
(ATS3-DEV05) Coding up Pipeline Pilot Components
 
Building tomorrow's web with today's tools
Building tomorrow's web with today's toolsBuilding tomorrow's web with today's tools
Building tomorrow's web with today's tools
 
Server-Side Programming Primer
Server-Side Programming PrimerServer-Side Programming Primer
Server-Side Programming Primer
 
Dan Vulpe - JavaFX 2 - Developing RIA with Java
Dan Vulpe - JavaFX 2 - Developing RIA with JavaDan Vulpe - JavaFX 2 - Developing RIA with Java
Dan Vulpe - JavaFX 2 - Developing RIA with Java
 
Cliser
CliserCliser
Cliser
 
SVG in Data Acquisition and Control Systems
SVG in Data Acquisition and Control SystemsSVG in Data Acquisition and Control Systems
SVG in Data Acquisition and Control Systems
 

More from 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
 
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...Lucas Jellema
 
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...Lucas Jellema
 
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 ...Lucas Jellema
 
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...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
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Lucas Jellema
 
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)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
 
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...Lucas Jellema
 
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...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
 
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)Lucas Jellema
 
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...Lucas Jellema
 
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)Lucas Jellema
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Lucas Jellema
 
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...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
 

More from 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 ...
 

Recently uploaded

My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Recently uploaded (20)

My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

Push to the limit - rich and pro-active user interfaces with ADF - V2 (UKOUG, 2011)

  • 1. Lucas Jellema – AMIS (Nieuwegein, The Netherlands) PUSH TO THE LIMIT – RICH AND PRO-ACTIVE USER INTERFACES WITH ADF UK Oracle User Group, December 2011, Birmingham
  • 2. OVERVIEW • Real time architecture • Push – ADF middle tier to browser – Active Data Service (Chat) – Business Activity Monitoring – Progress Indicator – Push triggering pull (nudge) • Client to Client Push • Push – Database to middle tier • Push all the way across the tiers • Push Challenges and Future Developments
  • 3. ASYNCHRONOUS COMMUNICATION IN THE REAL WORLD • “I‟ll get back to you” • “Don‟t call us,…” • Low fuel warning in car • “Please let me know” • “Return to sender – address unknown” • Newspaper delivery • Next instruction from car navigation system • Telephone ringing • Alarm clock buzzing • Parking sensors beeping • Fire alarm screaming
  • 4. ASYNCHRONOUS INTERACTIONS AND PUSH IN THE IT LANDSCAPE • More timely information – Notification as soon as possible • Proactive offering – Do not ask and you shall be given • Lower load on back end – don‟t call us (all the time) … – Stop hitting the F5 button! • Multi-channel information manipulation and dissemination – Changes and events come in from everywhere • Decouple system components through generic infrastructure for handling events and push – Yet integrate
  • 5. PUSHING IT … INTO THE USER INTERFACE • Automatically refreshing (part of) a page – Update table – Redrawing chart • Displaying popup to alert user to an event – Arrival of message (email or chat) – Signing in or out of contact (presence) – Lock or release of some resource – Notification • Changing status of items on the page – Highlight change indicator – Show icon – Change text to italic • Play a sound
  • 6. Mobile Mobile Device Device Web Browser Web Browser Non Complex Event JEE Application JEE Application Java Processor Server Server Server Email RDBMS Chat Server RDBMS Server
  • 7. THE „ONLY TELL WHEN ASKED‟ GAME
  • 8. INTRODUCING ADF ACTIVE DATA SERVICE • Built in mechanism in ADF to push updates from the middle tier to the browser – active UI components that refresh upon reception of the push (table, image, output text, DVT graphs) – client side infrastructure to process received push messages – a multiplexed (multi-event) channel to push to client – leveraging WebLogic Server push capabilities • Long poll today, WebSockets or SPDY tomorrow – server side infrastructure to manage active beans and turn events into pushed messages – Active data control: • BAM Data Control for push from BAM’s Active Data Cache all the way to data bound UI components
  • 9. OVERVIEW OF ADS INFRASTRUCTURE
  • 10. USING ADF ACTIVE DATA SERVICE TO EMBED CHAT CLIENT IN WEB APPLICATION • Instant Messaging should be instant – Requirement to push incoming messages to client • Common IM protocol is XMPP (over TCP) – Extensible Messaging and Presence Protocol • XMPP Java Libraries help to connect to and communicate with XMPP servers – For example Smack • To embed chat in in ADF application we need to – consume messages over XMPP – and push them to the Web Client • The ADS approach: – Use ‘active’ UI Components – Bind them to bean that implements ActiveDataModel – Turning the IM messages into entries in ActiveDataModel
  • 11. EXAMPLE OF ADS: GOOGLE TALK Web Browser JEE Application Server
  • 12. EXAMPLE OF ADS: GOOGLE TALK Web Browser JEE Application Server
  • 13. PUSH TROUGH ACTIVE DATA SERVICE Web Browser ADS MessageReceiver
  • 14. PUSH TROUGH ACTIVE DATA SERVICE Web Browser ADS MessageReceiver
  • 15. PROGRAMMATIC CROSS TIER INTERACTION Web Browser JEE Application Server
  • 16. CLIENT SERVER INTERACTIONS VV. Client JavaScript Components manipulate component JavaScript component Function clientListener partialSubmit component user Load JSON, CSS, autoSubmit or Request Image, XML, JS programmatic poll data or setPropertyListener action Push message Queue Custom serverListener Event ERKS activeOutputText ‘ppr script’ partial page Full page push refresh reload add JS to Server execute component component activeOutputText (middle tier) (ERKS) add components as partial target actionListener, valueChangeListener, Bean …Listener serverListener Active Data Object Model Beans & Objects Components push (DB QRCN) Database
  • 17. THE NUDGE • Event should have small payload – just an indication of the type of event and a key-reference to the payload • Based on the information, the consumer decides to retrieve the associated payload, using the key nudge handler UI Component Payload Nudgee Retriever Nudger
  • 18. THE PUSH-TO-NUDGE TRICK (MATTHIAS WESSENDORF) Client Listener Function •Show popup activeOutputText •Update field value •Modify style property clientListener •Call Server (PPR) type=propertyChange Servlet Active data JMS Listener Active Bean Event Handler & Scheduled Event Listener Job
  • 19. SIMPLE NUDGE TO CLIENT
  • 20. SIMPLE NUDGE TO CLIENT
  • 22. SPIN OFF ANOTHER THREAD TO DO THE WORK AND INFORM ON PROGRESS Web Browser HTML + JavaScript Servlet ServerSide ActiveBean Perform long running job & report progress
  • 23. DEMO
  • 24. CLIENT TO CLIENT PUSH • Usually really a combination of – Client-to-Server – and Server-to-the-other-Client push • Exception: Blue Tooth, Near-Field Communication
  • 25. CLIENT TO CLIENT PUSH – SLIDE SYNCHRONIZATION
  • 26. CLIENT TO CLIENT PUSH – SLIDE SYNCHRONIZATION
  • 27.
  • 29. CROSS GAP PUSH MECHANISMS • Many channels are available to push messages from one entity to another, – across application, technology and location boundaries • JMS • (one way) WebService (SOAP or REST) • “HTTP Channel” • WebSockets • Http Call to Servlet • XMPP
  • 30. SERVER TO MOBILE PUSH: MULTIPLEXED, SEMI-POLL BASED
  • 31. PUSH FROM DATABASE TO MIDDLE TIER • Middle tier asks database – through JDBC, ODBC, SQL*Net, HTTP, … – The database is reactive only – not pushy at all • Some mechanisms allow the database to take the initiative and start to push – Database Query Result Change Notification – Http calls from utl_http or JSP – Table with Multiplexed Poll
  • 32. THE HOLLYWOOD PRINCIPLE: QUERY RESULTSET CHANGE NOTIFICATION POJO / ADF BC
  • 33. CACHE REFRESH TRIGGERED BY DB POJO / ADF BC SQL query PL/SQL
  • 34. SHARED APPLICATION MODULES • Regular Application Module instances are session level – i.e. not shared across (web) sessions • Shared Application Module instances are shared across sessions like an Application Scope Managed Bean – Used for Static Data Sets: Look Up Data and Reference Tables • Sessions can reuse the data from a shared Application Module without having to access the database – And without loading the data in session level memory scope • View Accessors can be used to access data in the Shared Application Module‟s VOs – For example for use in LOVs or Validation Rules
  • 36. AUTO REFRESH FOR VIEW OBJECTS • ViewObjects in a Shared Application Module can be registered for auto refresh – Typically such application wide VOs are near-static – Whenever the underlying data set changes (in the database), the VO rowset should be refreshed • By setting Auto Refresh (to true) for the ViewObject, the VO will be refreshed whenever the database is changed – ADF registers the VO query with the Database (11g) Result Set Change Notification mechanism through JDBC – Note: the VO should not have an Order By clause nor select a Date column
  • 37. STEPS FOR AUTO REFRESH ENABLING • Create Shared Application Module – New application module that is added to list of Application Level instances in the Project properties • Create the ViewObject that queries the „static data‟ and add to Shared Application Module • Set the Auto Refresh property to true for VO instance • Database must be 11g (and have parameter compatible set to 11.1.0 or above) – database user must have the Change Notification privilege • To piggy back changes to page, set changeEventPolicy to autoPPR on data binding
  • 38. SET AUTO REFRESH FOR VIEWOBJECT • Set Auto Refresh for ViewObject • Grant Change Notification to database user
  • 39. DEMO: DATABASE PUSH TO VIEW OBJECT IN ACTION DBQRCN
  • 40. 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!
  • 41. ALTERNATIVE DATABASE TO MIDDLE TIER PUSH IMPLEMENTATION Session scope bean listener listener listener register Application scope bean JEE Application Server event handler servlet Scheduled Payload Push Poll Job Retriever Receptor utl_http ‘Events collector’ trigger RDBMS
  • 42. CROSS TIER PUSH Web Browser table activeOT Cache evt lsnr Applicationrefresher JEE Server servlet job RDBMS trg
  • 43. INITIATE „NORMAL‟ PPR CYCLE IN WHICH TO REFRESH UI COMPONENTS Client Listener component Function activeOutputText someComponent clientListener serverListener type=propertyChange PPR request Iterator Auto ppr Bean View Entity RDBMS
  • 44. INTRODUCING BUSINESS ACTIVITY MONITORING • Operational Business Intelligence • Data fed in from many sources: – RFID sensors, BPEL, Database Triggers, RSS, ODI • Real Time insight • Dashboard • Live updates • Looking for threshold crossing, exceptions, trends, missing events • Display visually and turn into alerts & notifications
  • 46. EMBEDDING REAL TIME DISPLAYS IN ADF BASED ON BAM DATA CONTROL • Configure connection to BAM Server • Create BAM Data Control – Based on Data Objects in Active Data Cache • Drag & Drop Data Control‟s collections & attributes to ADF Faces pages – Just like ADF BC Data Control – However: BAM Data Control is active
  • 47. LIVE VOLLEYBALL REPORTING Web Browser JMS Queue BAM Data Object
  • 48. SERVER PUSH CHALLENGES • How to push against the „one way direction‟ and despite limitations – HTTP and JDBC are request/response – not response only – Browser limit of only two channels to one server • Server side „event handling‟ – Session has to have an active life beyond requests • Or requests have a life beyond response – Higher load on the server – How to handle the (potential) volume of ‘concurrent’ channels and the number of open threads • NIO, Servlet 3.0, Jetty Continuations, Tomcat Advanced I/O
  • 49. SERVER PUSH CHALLENGES (2) • Where do events to push actually come from? – Who perceives/receives (real-time) events (on the server side) – How are they tied in to the appropriate sessions? • Client (consumer) side: how to asynchronously receive events and how to process them/turn them into action and UI updates • How to correlate an asynchronously received message with a previously sent request or a subscription – For example: mobile phone showing SMS or WhatsApp messages in a conversation thread style
  • 50. FUTURE DEVELOPMENTS • The real time enterprise • The event driven enterprise • Further evolution of push notification at every tier – Mobile perhaps leading the way • Infrastructure and frameworks providing push mechanisms – Such as Active Data Service • Servlet 3.0, Java NIO, WebSockets, SPDY, XMPP and other lighter weight solutions for bi-directional communication over TCP – And broad support in browsers and application servers • Project Avatar – cross Java platform support for HTML 5, Web Sockets and push
  • 51. SUMMARY • Push – Pro active or at least real time user interface – Real time user to user interaction – Decrease load on infrastructure (refresh over and over) • Real push hardly exists – Smart poll/pull is often underlying implementation – Piggy backing, Multiplexing, decoupling etc. are required to scale • ADS is powerful – Especially with the ‘nudge now you do a fine grained fetch or refresh’ pattern • Database can push too – using DBQRCN, HTTP, …. • ADF can push to Android or iOS – Using Google and Apple Push Notification Services – ADF Mobile should support push notification as well

Editor's Notes

  1. 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
  2. AsYnchronous communication & cross tier push in enterprise landscape
  3. Two participantsOne can ask questionsThe other can reply; a response is ended with ‘end of message’; after that has been said, the responder has to wait for the next question to be asked before saying anything out loudChallenge: the requestor needs to know as fast as possible and with as few questions asked as possible when the responder is tapped on the back
  4. http://www.oracle.com/technetwork/articles/jellema-googletalk-094343.html
  5. http://www.oracle.com/technetwork/articles/jellema-googletalk-094343.html
  6. http://technology.amis.nl/blog/13823/adf-faces-handle-task-in-background-process-and-show-real-time-progress-indicator-for-asynchronous-job-using-server-push-in-adf