SlideShare ist ein Scribd-Unternehmen logo
1 von 89
Downloaden Sie, um offline zu lesen
Implementing Data Caching
Strategies for ADF Mobile
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.1
Strategies for ADF Mobile
Steven Davelaar
ADF/Webcenter A-Team
Oracle Corporation
@stevendavelaar
Disclaimer
The following is intended to outline our general product direction. It is
intended for information purposes only, and may not be incorporated into
any contract.
It is not a commitment to deliver any material, code, or functionality, and
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2
It is not a commitment to deliver any material, code, or functionality, and
should not be relied upon in making purchasing decisions. The
development, release, and timing of any features or functionality
described for Oracle’s products remains at the sole discretion of Oracle.
Agenda
Data Caching and Data Sync Strategies
Implementing Data Caching and Synching Using A-
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3
Implementing Data Caching and Synching Using A-
Team Mobile Persistence Extension
ADF Mobile Architecture
Device Native Container
Web
View
Server
HTML
ADF Mobile
AMX View
Third Party
Web Sites
Third Party
Web Sites
Oracle IDM
Oracle IAM
Oracle IDM
Oracle IAMLocal
HTML
HTML5 & JavaScript Presentation
Configuration
Server
Configuration
Server
ADF Controller
CredentialManagement,
SSO&AccessControl
CredentialManagement,
SSO&AccessControl
App
Config
App
Config
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4
Device
Services
PhoneGap/
Cordova
Server or Cloud
backend
Server or Cloud
backend
Mobile
Device
CredentialManagement,
SSO&AccessControl
CredentialManagement,
SSO&AccessControl
Server
SOAP & REST
Web Services
SOAP & REST
Web Services
Java VM
Business
Logic
ADF Model
Encrypted
SQLite DB
JDBC
SQLite
ADF Mobile Architecture
Device Native Container
Web
View
Server
HTML
ADF Mobile
AMX View
Third Party
Web Sites
Third Party
Web Sites
Oracle IDM
Oracle IAM
Oracle IDM
Oracle IAMLocal
HTML
HTML5 & JavaScript Presentation
Configuration
Server
Configuration
Server
ADF Controller
CredentialManagement,
SSO&AccessControl
CredentialManagement,
SSO&AccessControl
App
Config
App
Config
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.5
Device
Services
PhoneGap/
Cordova
Server or Cloud
backend
Server or Cloud
backend
Mobile
Device
CredentialManagement,
SSO&AccessControl
CredentialManagement,
SSO&AccessControl
Server
SOAP & REST
Web Services
SOAP & REST
Web Services
Java VM
Business
Logic
ADF Model
Encrypted
SQLite DB
JDBC
SQLite
Data Sources for ADF Mobile Applications
The data within an ADF Mobile application comes from 1 of 3 places
– Remote web services (SOAP, REST)
– Simple Java POJOs
– Local SQLite database
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6
Typically all 3 are used in combination to allow your application to
– Web services: Retrieve and update data from/with remote servers
– Java POJOs: Cache that data locally for live access when disconnected
– Database: Persist & restore data when the application is stopped & restarted
Data Caching and Synching Challenges
Mobile devices can lose/turn off connectivity
Offline access to data is a common requirement
But it will increase the complexity of your application
If you cache data locally you must consider
– When to cache the data
Security
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7
– When to cache the data
– How much data to cache
– When to synchronize updates
– Recording the order of updates
– How to deal with synchronization conflicts
– Security of the data if the device is lost
Security
1. Online Read/Write
• Needs to be continuously
connected
• Does not cache any data locally
• No synchronization required
• No risk of data theft if the device is
stolen
Data Caching
2. Cached Reads, Online Write
• Caches data as it is accessed
or on startup
• Updates are via web service
calls
• No synchronization required
• Small risk of data theft
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8
Data Caching
Strategies
3. Cached Reads, Offline Writes
• Caches data as it is accessed
• Edits to cached data are saved
locally
• Edits to the local data are
periodically flushed to the server
• Greater risk of data theft
4. Full Synchronization
• All data is synchronized to the
device on startup
• Edits to cached data are saved
locally
• Edits to the local data are
periodically flushed to the server
ADF Mobile – Model Layer
Data Object
– Java class to hold attributes of an object
– Represents a single “row” of a collection
– Can contain sub-collections of other Data Objects to form complex object
hierarchies
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.9
Service Object
– Java class that provides CRUD operations
– Returns arrays of Data Objects in the get methods
– Exposed as Data Control to create UI using drag and drop
Java VM
ADF Model
Model Layer – Caching Data
Service
Object
DataControl
Data Object
JDBC code
Encrypted
SQLite DB
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11
DataControl
Using the SQLite Database in ADF Mobile
Typically used by a single user
SQLite libraries and JDBC drivers are embedded in ADF Mobile
container
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.12
Encryption for the SQLite Database File is provided with ADF Mobile
Zero configuration
No Object-Relational Mapping (ORM) layer provided
– Access using plain JDBC statements
Initialize the Database
call Start()
LifeCycleListenerImpl.java
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.13
Start()
1. Creates the DB
2. Creates Connection
3. Connects
4. Populates DB
Application starts up
Note:
Need to add LifeCycleListenerImpl.java to the LifeCycleEvent
Listener Field of the adfmf-application.xml file.
JDBC Example – Get Departments
public void retrieveDepartmentsFromDB() {
try {
Connection conn = DBConnectionFactory.getConnection();
s_departments.clear();
conn.setAutoCommit(false);
PreparedStatement stat = conn.prepareStatement("SELECT * from DEPARTMENTS");
ResultSet rs = stat.executeQuery();
while (rs.next()) {
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.14
while (rs.next()) {
int id = rs.getInt("DEPARTMENT_ID");
String deptName = rs.getString("DEPARTMENT_NAME");
int mgrId = rs.getInt("MANAGER_ID");
int locId = rs.getInt("LOCATION_ID");
Department d = new Department(id, deptName, mgrId, locId);
s_departments.add(d);
}
rs.close();…
SQLite More Info
Check out SQLite website : http://www.sqlite.org/
Check out ADF Insider Essentials video by Frederic Desbiens
– http://www.youtube.com/watch?v=-XzE1n_j5Nc
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15
Java VM
ADF Model
Model Layer – Caching Data
Service
Object
DataControl
Data Object
JDBC code
Encrypted
SQLite DB
RestServiceAdapter
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16
DataControl
RestServiceAdapter
REST(JSON/XML)
SOAP/REST-XML
What is JSON?
JavaScript Object Notation
– text-based open standard designed
for human-readable data
interchange. It is derived from the
JavaScript scripting language for
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17
JavaScript scripting language for
representing simple data structures
and associative arrays, called
objects. Despite its relationship to
JavaScript, it is language-
independent, with parsers available
for many languages.
Using JSON REST Service
Create a URL Connection that points to the JSON data host
This URL should be based on the root of all JSON services
– For example, for a JSON service that returns employees and departments
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18
(http://server:port/service/employees and
http://server:port/service/departments), the URL Data Control should point
to http://server:port/service/.
Use RestServiceAdaptor to invoke service
RestServiceAdaptor Example
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19
Java VM
ADF Model
Model Layer – Caching Data
Service
Object
DataControl
Data Object
JDBC code
Encrypted
SQLite DB
restServiceAdapter
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20
DataControl
restServiceAdapter
REST(JSON/XML)
SOAP/REST-XML
SOAP/REST-XML Web Services
Data
Control
AdfmfJavaUtilities
invokeDataControlMethod
Using SOAP XML Service – Run Web Service
Data Control Wizard
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21
Invoking SOAP Web Service Programmatically
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22
Implementing Data Caching Strategies
ADF Mobile provides basic support to implement strategy 2: Cached
Reads – Online Writes
– Java coding required to convert web service payload to Java data objects
and vice versa
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23
– Extensive JDBC coding required when caching should survive application
stop/start, and/or flexible data filtering is needed
Would be really nice to have an ORM mapping framework that auto
generates the JDBC code
Implementing strategies 3 and 4 with offline writes is much more
complex
Agenda
Data Caching and Data Sync Strategies
Implementing Data Caching and Synching Using A-
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.24
Implementing Data Caching and Synching Using A-
Team Mobile Persistence Extension
A-Team Mobile Persistence Extension
Sample code created by Oracle Fusion Middleware A-Team
Significantly speeds up implementation of data caching and data
synching
Provided “as-is”, no support, no updates
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.25
Provided “as-is”, no support, no updates
Installable as Free JDeveloper extension
Will be included in ADF Mobile later this year
Local and Remote Persistence
Extension runtime library contains generic Java code to perform CRUD
operations against SQLite database and against remote web services.
– Service objects extend EntiyCRUDService class
– Service objects use DBPersistenceManager for CRUD operations
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.26
– Service objects use DBPersistenceManager for CRUD operations
against SQLite database
– Service object can use a remote persistence manager for CRUD
operations against web service
The generic code in EntiyCRUDService class and persistence
managers is driven by metadata stored in persistence mapping XML
file
Remote Persistence Managers
Classes that perform appropriate web service
calls based on the CRUD operation performed
by the user and the persistence mapping
information
Currently persistence managers are available
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27
Currently persistence managers are available
for REST web services in both JSON and XML
format, and SOAP (ADF BC) web services
You can easily create custom persistence
managers as needed
– Extend from abstract class that contains
convenience methods
ADF Model
Runtime Persistence Architecture
DepartmentService
Data Control
Department
DepartmentServiceEntityCRUDService
extends
DBPersistence
Manager
uses
REST-JSON
PersistenceManager
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28
Persistence
Mapping XML
DEPARTMENTS
table
SQLite
JDBC
Statements
references
REST(JSON/XML)
HTTP
Requests
Other Runtime Persistence Features
Encryption of database
Auto-cleaning of unused database segments
Lazy loading of child collections (a.k.a “Indirection”)
Entity caching to minimize object creation
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29
Entity caching to minimize object creation
FindEntityByKey
– Checks cache first, then database
Designed for customization
– Easy to override and extend default behavior
Mobile Persistence Extension - JDeveloper
Wizards
Three wizard are provided to create the artefacts needed for this
runtime persistence architecture:
– Mobile Business Objects From Web Service Data Control Wizard
– Mobile Business Objects From REST Web Service Wizard
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30
– Mobile Business Objects From Database Tables (Local persistence only)
Another wizard is provided to generate a default CRUD user interface
on top of the business layer created by one of the above wizards.
Rest Wizard Demo - Toplink Data Services
/ToplinkRest/persistence/v1.0/Model1/query/Department.findAll
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31
Wizards for Creating Runtime Persistence
Artefacts
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.43
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.44
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.45
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.46
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.47
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.48
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.49
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.50
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.51
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.52
Business Objects From REST Web Service
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.53
SOAP Demo – ADF BC SDO Services
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.54
Run SOAP Web Service Data Control Wizard
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.55
Run SOAP Web Service Data Control Wizard
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.56
Mobile Business Objects from WS Data Control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.57
Mobile Business Objects from WS Data Control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.58
Mobile Business Objects from WS Data Control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.59
Mobile Business Objects from WS Data Control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.60
Mobile Business Objects from WS Data Control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.61
Mobile Business Objects from WS Data Control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.62
Mobile Business Objects from WS Data Control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.63
Mobile Business Objects from WS Data Control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.64
Mobile Business Objects from WS Data Control
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.65
Generated Data Object Classes
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.66
Generated Service Object Classes
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.67
Generated SQL DDL Script
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.68
Generated Persistence Mapping File
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.69
Generated Persistence Mapping File
RESTful resource calls
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.70
Generated Persistence Mapping File
SOAP method calls
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.71
Generated Config File
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.72
Configured InitDBLifecycleListener
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.73
Create Data Control For Service Classes
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.74
Creating the Mobile User Interface
Build Using Drag and Drop
from DataControl Palette
Generate Using ADF
Mobile User Interface
Two Options
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.75
Mobile User Interface
Generator Wizard
Building the User Interface
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.76
Building the User Interface
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.77
Building the User Interface
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.78
Using the Mobile User Interface Generator
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.79
Using the Mobile User Interface Generator
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.80
Generated User Interface Artefacts
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.81
1. Online Read/Write
• Needs to be continuously
connected
• Does not cache any data locally
• No synchronization required
• No risk of data theft if the device is
stolen
Data Caching
2. Cached Reads, Online Write
• Caches data as it is accessed
• Updates are via web service
calls
• No synchronization required
• Small risk of data theft
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.82
Data Caching
Strategies
3. Cached Reads, Offline Writes
• Caches data as it is accessed
• Edits to cached data are saved
locally
• Edits to the local data are
periodically flushed to the server
• Greater risk of data theft
4. Full Synchronization
• All data is synchronized to the
device on startup
• Edits to cached data are saved
locally
• Edits to the local data are
periodically flushed to the server
A-Team Mobile Persistence Extension- Offline
Writes and Data Syncing
If a remote persistence manager is configured, and CUD service call
fails, the service call is registered as “pending” data synch action
– Failure reason registered (device offline, service not available, etc)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.83
On next service call, the pending synch actions are processed first in
order of creation
– When failing again, the still pending synch action is updated with date of
last synch attempt and last error message
Out-of-the-box feature: NO Java coding required
Viewing Pending Data Sync Actions
A reusable “DataSync” feature is provided that can be added to your
mobile application
Register the feature in adfmf-application.xml
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.84
Viewing Pending Data Sync Actions
Add a button that navigates to the data sync feature
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.85
Viewing Pending Data Synch Actions
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.86
Notes on Data Sync Functionality
Pending changes can become obsolete because of updates in server
data by other clients
– The server–side code should identify this and throw an error when the data
sync action sends stale data
Stale data detection can be done by including a data revision number or
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.87
– Stale data detection can be done by including a data revision number or
‘last-modified” timestamp in payload. This number or timestamp should
match with server-side data record
Data sync actions that keep failing need to be removed manually
– Local database might be out-of-sync, app needs to offer reconcile action
More Info
A-Team Chronicles: http://www.ateam-oracle.com/?p=22331
Includes download links to
– A-Team Mobile Persistence Extension - JDeveloper Install File
– A-Team Mobile Persistence Videos
– A-Team Mobile Persistence Demo applications
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.88
Summary
Using the A-Team Mobile Persistence Extension significantly speeds
up and eases implemention of data caching and syncing using the on-
device SQLite database
Using the A-Team Mobile Persistence Extension significantly speeds
up and eases the use of RESTful web services
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.89
up and eases the use of RESTful web services
You need to think about how your end users should handle failed data
sync actions, and how to prevent updates based on stale data
Essential parts of A-Team Mobile Persistence Extension will be
included in future version of core product
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.90

Weitere ähnliche Inhalte

Was ist angesagt?

Oracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module DesignOracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module DesignChris Muir
 
Oracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service ArchitecturesOracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service ArchitecturesChris Muir
 
Oracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
Oracle ADF Architecture TV - Development - Naming Conventions & Project LayoutsOracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
Oracle ADF Architecture TV - Development - Naming Conventions & Project LayoutsChris Muir
 
Oracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration ArchitecturesOracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration ArchitecturesChris Muir
 
Let's Talk Mobile
Let's Talk MobileLet's Talk Mobile
Let's Talk MobileChris Muir
 
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 HandlingChris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow OverviewOracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow OverviewChris Muir
 
Oracle ADF Architecture TV - Design - Usability and Layout Design
Oracle ADF Architecture TV - Design - Usability and Layout DesignOracle ADF Architecture TV - Design - Usability and Layout Design
Oracle ADF Architecture TV - Design - Usability and Layout DesignChris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Transaction Options
Oracle ADF Architecture TV - Design - Task Flow Transaction OptionsOracle ADF Architecture TV - Design - Task Flow Transaction Options
Oracle ADF Architecture TV - Design - Task Flow Transaction OptionsChris Muir
 
Oracle ADF Architecture TV - Development - Performance & Tuning
Oracle ADF Architecture TV - Development - Performance & TuningOracle ADF Architecture TV - Development - Performance & Tuning
Oracle ADF Architecture TV - Development - Performance & TuningChris Muir
 
Data Caching Strategies for Oracle Mobile Application Framework
Data Caching Strategies for Oracle Mobile Application FrameworkData Caching Strategies for Oracle Mobile Application Framework
Data Caching Strategies for Oracle Mobile Application Frameworkandrejusb
 
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleMobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleChris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope OptionsOracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope OptionsChris Muir
 
Oracle ADF Architecture TV - Development - Programming Best Practices
Oracle ADF Architecture TV - Development - Programming Best PracticesOracle ADF Architecture TV - Development - Programming Best Practices
Oracle ADF Architecture TV - Development - Programming Best PracticesChris Muir
 
Oracle ADF Architecture TV - Design - ADF Reusable Artifacts
Oracle ADF Architecture TV - Design - ADF Reusable ArtifactsOracle ADF Architecture TV - Design - ADF Reusable Artifacts
Oracle ADF Architecture TV - Design - ADF Reusable ArtifactsChris Muir
 
Oracle ADF Architecture TV - Deployment - Deployment Options
Oracle ADF Architecture TV - Deployment - Deployment OptionsOracle ADF Architecture TV - Deployment - Deployment Options
Oracle ADF Architecture TV - Deployment - Deployment OptionsChris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Communication Pattern
Oracle ADF Architecture TV - Design - Task Flow Communication PatternOracle ADF Architecture TV - Design - Task Flow Communication Pattern
Oracle ADF Architecture TV - Design - Task Flow Communication PatternChris Muir
 
Oracle ADF Architecture TV - Design - ADF Architectural Patterns
Oracle ADF Architecture TV - Design - ADF Architectural PatternsOracle ADF Architecture TV - Design - ADF Architectural Patterns
Oracle ADF Architecture TV - Design - ADF Architectural PatternsChris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation OptionsOracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation OptionsChris Muir
 

Was ist angesagt? (20)

Oracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module DesignOracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
 
Oracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service ArchitecturesOracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service Architectures
 
Oracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
Oracle ADF Architecture TV - Development - Naming Conventions & Project LayoutsOracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
Oracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
 
Oracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration ArchitecturesOracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration Architectures
 
Let's Talk Mobile
Let's Talk MobileLet's Talk Mobile
Let's Talk Mobile
 
Oracle JET overview
Oracle JET overviewOracle JET overview
Oracle JET overview
 
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
 
Oracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow OverviewOracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow Overview
 
Oracle ADF Architecture TV - Design - Usability and Layout Design
Oracle ADF Architecture TV - Design - Usability and Layout DesignOracle ADF Architecture TV - Design - Usability and Layout Design
Oracle ADF Architecture TV - Design - Usability and Layout Design
 
Oracle ADF Architecture TV - Design - Task Flow Transaction Options
Oracle ADF Architecture TV - Design - Task Flow Transaction OptionsOracle ADF Architecture TV - Design - Task Flow Transaction Options
Oracle ADF Architecture TV - Design - Task Flow Transaction Options
 
Oracle ADF Architecture TV - Development - Performance & Tuning
Oracle ADF Architecture TV - Development - Performance & TuningOracle ADF Architecture TV - Development - Performance & Tuning
Oracle ADF Architecture TV - Development - Performance & Tuning
 
Data Caching Strategies for Oracle Mobile Application Framework
Data Caching Strategies for Oracle Mobile Application FrameworkData Caching Strategies for Oracle Mobile Application Framework
Data Caching Strategies for Oracle Mobile Application Framework
 
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with OracleMobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
 
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope OptionsOracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
 
Oracle ADF Architecture TV - Development - Programming Best Practices
Oracle ADF Architecture TV - Development - Programming Best PracticesOracle ADF Architecture TV - Development - Programming Best Practices
Oracle ADF Architecture TV - Development - Programming Best Practices
 
Oracle ADF Architecture TV - Design - ADF Reusable Artifacts
Oracle ADF Architecture TV - Design - ADF Reusable ArtifactsOracle ADF Architecture TV - Design - ADF Reusable Artifacts
Oracle ADF Architecture TV - Design - ADF Reusable Artifacts
 
Oracle ADF Architecture TV - Deployment - Deployment Options
Oracle ADF Architecture TV - Deployment - Deployment OptionsOracle ADF Architecture TV - Deployment - Deployment Options
Oracle ADF Architecture TV - Deployment - Deployment Options
 
Oracle ADF Architecture TV - Design - Task Flow Communication Pattern
Oracle ADF Architecture TV - Design - Task Flow Communication PatternOracle ADF Architecture TV - Design - Task Flow Communication Pattern
Oracle ADF Architecture TV - Design - Task Flow Communication Pattern
 
Oracle ADF Architecture TV - Design - ADF Architectural Patterns
Oracle ADF Architecture TV - Design - ADF Architectural PatternsOracle ADF Architecture TV - Design - ADF Architectural Patterns
Oracle ADF Architecture TV - Design - ADF Architectural Patterns
 
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation OptionsOracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
 

Ähnlich wie ADF Mobile: Implementing Data Caching and Synching

High Availability And Oracle Data Guard 11g R2
High Availability And Oracle Data Guard 11g R2High Availability And Oracle Data Guard 11g R2
High Availability And Oracle Data Guard 11g R2Mario Redón Luz
 
Oracle Active Data Guard: Best Practices and New Features Deep Dive
Oracle Active Data Guard: Best Practices and New Features Deep Dive Oracle Active Data Guard: Best Practices and New Features Deep Dive
Oracle Active Data Guard: Best Practices and New Features Deep Dive Glen Hawkins
 
Multi-Tenancy: Da Teoria à Prática, do DB ao Middleware
Multi-Tenancy: Da Teoria à Prática, do DB ao MiddlewareMulti-Tenancy: Da Teoria à Prática, do DB ao Middleware
Multi-Tenancy: Da Teoria à Prática, do DB ao MiddlewareBruno Borges
 
[TDC 2013] Integre um grid de dados em memória na sua Arquitetura
[TDC 2013] Integre um grid de dados em memória na sua Arquitetura[TDC 2013] Integre um grid de dados em memória na sua Arquitetura
[TDC 2013] Integre um grid de dados em memória na sua ArquiteturaFernando Galdino
 
Bilbao oracle12c keynote
Bilbao  oracle12c keynoteBilbao  oracle12c keynote
Bilbao oracle12c keynoteAitor Ibañez
 
Oracle - Enterprise Manager 12c Overview
Oracle - Enterprise Manager 12c OverviewOracle - Enterprise Manager 12c Overview
Oracle - Enterprise Manager 12c OverviewFred Sim
 
B7 accelerating your business with oracle data integration solutions
B7   accelerating your business with oracle data integration solutionsB7   accelerating your business with oracle data integration solutions
B7 accelerating your business with oracle data integration solutionsDr. Wilfred Lin (Ph.D.)
 
B1 roadmap to cloud platform with oracle web logic server-oracle coherence ...
B1   roadmap to cloud platform with oracle web logic server-oracle coherence ...B1   roadmap to cloud platform with oracle web logic server-oracle coherence ...
B1 roadmap to cloud platform with oracle web logic server-oracle coherence ...Dr. Wilfred Lin (Ph.D.)
 
Optimize Data Connectivity in .NET Applications
Optimize Data Connectivity in .NET ApplicationsOptimize Data Connectivity in .NET Applications
Optimize Data Connectivity in .NET ApplicationsAbhishek Kant
 
Oracle database 12c new features
Oracle database 12c new featuresOracle database 12c new features
Oracle database 12c new featuresJakkrapat S.
 
Dataguard presentation
Dataguard presentationDataguard presentation
Dataguard presentationVimlendu Kumar
 
Oracle zdm Migrate Amazon RDS Oracle to Oracle Autonomous 2021 Kamalesh Ramas...
Oracle zdm Migrate Amazon RDS Oracle to Oracle Autonomous 2021 Kamalesh Ramas...Oracle zdm Migrate Amazon RDS Oracle to Oracle Autonomous 2021 Kamalesh Ramas...
Oracle zdm Migrate Amazon RDS Oracle to Oracle Autonomous 2021 Kamalesh Ramas...Kamalesh Ramasamy
 
5675212318661411677_TRN4034_How_to_Migrate_to_Oracle_Autonomous_Database_Clou...
5675212318661411677_TRN4034_How_to_Migrate_to_Oracle_Autonomous_Database_Clou...5675212318661411677_TRN4034_How_to_Migrate_to_Oracle_Autonomous_Database_Clou...
5675212318661411677_TRN4034_How_to_Migrate_to_Oracle_Autonomous_Database_Clou...NomanKhalid56
 
Solution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big DataSolution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big DataInfiniteGraph
 
What's new in Oracle Trace File Analyzer 12.2.1.3.0
What's new in Oracle Trace File Analyzer 12.2.1.3.0What's new in Oracle Trace File Analyzer 12.2.1.3.0
What's new in Oracle Trace File Analyzer 12.2.1.3.0Gareth Chapman
 

Ähnlich wie ADF Mobile: Implementing Data Caching and Synching (20)

High Availability And Oracle Data Guard 11g R2
High Availability And Oracle Data Guard 11g R2High Availability And Oracle Data Guard 11g R2
High Availability And Oracle Data Guard 11g R2
 
Oracle Active Data Guard: Best Practices and New Features Deep Dive
Oracle Active Data Guard: Best Practices and New Features Deep Dive Oracle Active Data Guard: Best Practices and New Features Deep Dive
Oracle Active Data Guard: Best Practices and New Features Deep Dive
 
Multi-Tenancy: Da Teoria à Prática, do DB ao Middleware
Multi-Tenancy: Da Teoria à Prática, do DB ao MiddlewareMulti-Tenancy: Da Teoria à Prática, do DB ao Middleware
Multi-Tenancy: Da Teoria à Prática, do DB ao Middleware
 
[TDC 2013] Integre um grid de dados em memória na sua Arquitetura
[TDC 2013] Integre um grid de dados em memória na sua Arquitetura[TDC 2013] Integre um grid de dados em memória na sua Arquitetura
[TDC 2013] Integre um grid de dados em memória na sua Arquitetura
 
Bilbao oracle12c keynote
Bilbao  oracle12c keynoteBilbao  oracle12c keynote
Bilbao oracle12c keynote
 
Maximize Availability With Oracle Database 12c
Maximize Availability With Oracle Database 12cMaximize Availability With Oracle Database 12c
Maximize Availability With Oracle Database 12c
 
Oracle - Enterprise Manager 12c Overview
Oracle - Enterprise Manager 12c OverviewOracle - Enterprise Manager 12c Overview
Oracle - Enterprise Manager 12c Overview
 
B7 accelerating your business with oracle data integration solutions
B7   accelerating your business with oracle data integration solutionsB7   accelerating your business with oracle data integration solutions
B7 accelerating your business with oracle data integration solutions
 
B1 roadmap to cloud platform with oracle web logic server-oracle coherence ...
B1   roadmap to cloud platform with oracle web logic server-oracle coherence ...B1   roadmap to cloud platform with oracle web logic server-oracle coherence ...
B1 roadmap to cloud platform with oracle web logic server-oracle coherence ...
 
Optimize Data Connectivity in .NET Applications
Optimize Data Connectivity in .NET ApplicationsOptimize Data Connectivity in .NET Applications
Optimize Data Connectivity in .NET Applications
 
Vineet Kurrewar
Vineet KurrewarVineet Kurrewar
Vineet Kurrewar
 
Oracle database 12c new features
Oracle database 12c new featuresOracle database 12c new features
Oracle database 12c new features
 
MOHAMMED VIKHAR AHMED
MOHAMMED VIKHAR AHMEDMOHAMMED VIKHAR AHMED
MOHAMMED VIKHAR AHMED
 
Dataguard presentation
Dataguard presentationDataguard presentation
Dataguard presentation
 
Marcin Szałowicz - MySQL Workbench
Marcin Szałowicz - MySQL WorkbenchMarcin Szałowicz - MySQL Workbench
Marcin Szałowicz - MySQL Workbench
 
con8832-cloudha-2811114.pdf
con8832-cloudha-2811114.pdfcon8832-cloudha-2811114.pdf
con8832-cloudha-2811114.pdf
 
Oracle zdm Migrate Amazon RDS Oracle to Oracle Autonomous 2021 Kamalesh Ramas...
Oracle zdm Migrate Amazon RDS Oracle to Oracle Autonomous 2021 Kamalesh Ramas...Oracle zdm Migrate Amazon RDS Oracle to Oracle Autonomous 2021 Kamalesh Ramas...
Oracle zdm Migrate Amazon RDS Oracle to Oracle Autonomous 2021 Kamalesh Ramas...
 
5675212318661411677_TRN4034_How_to_Migrate_to_Oracle_Autonomous_Database_Clou...
5675212318661411677_TRN4034_How_to_Migrate_to_Oracle_Autonomous_Database_Clou...5675212318661411677_TRN4034_How_to_Migrate_to_Oracle_Autonomous_Database_Clou...
5675212318661411677_TRN4034_How_to_Migrate_to_Oracle_Autonomous_Database_Clou...
 
Solution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big DataSolution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big Data
 
What's new in Oracle Trace File Analyzer 12.2.1.3.0
What's new in Oracle Trace File Analyzer 12.2.1.3.0What's new in Oracle Trace File Analyzer 12.2.1.3.0
What's new in Oracle Trace File Analyzer 12.2.1.3.0
 

Kürzlich hochgeladen

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
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
 
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
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
"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
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
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
 
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
 

Kürzlich hochgeladen (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
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
 
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
 
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?
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
"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
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
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
 
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
 

ADF Mobile: Implementing Data Caching and Synching

  • 1. Implementing Data Caching Strategies for ADF Mobile Copyright © 2013, Oracle and/or its affiliates. All rights reserved.1 Strategies for ADF Mobile Steven Davelaar ADF/Webcenter A-Team Oracle Corporation @stevendavelaar
  • 2. Disclaimer The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2 It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
  • 3. Agenda Data Caching and Data Sync Strategies Implementing Data Caching and Synching Using A- Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3 Implementing Data Caching and Synching Using A- Team Mobile Persistence Extension
  • 4. ADF Mobile Architecture Device Native Container Web View Server HTML ADF Mobile AMX View Third Party Web Sites Third Party Web Sites Oracle IDM Oracle IAM Oracle IDM Oracle IAMLocal HTML HTML5 & JavaScript Presentation Configuration Server Configuration Server ADF Controller CredentialManagement, SSO&AccessControl CredentialManagement, SSO&AccessControl App Config App Config Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4 Device Services PhoneGap/ Cordova Server or Cloud backend Server or Cloud backend Mobile Device CredentialManagement, SSO&AccessControl CredentialManagement, SSO&AccessControl Server SOAP & REST Web Services SOAP & REST Web Services Java VM Business Logic ADF Model Encrypted SQLite DB JDBC SQLite
  • 5. ADF Mobile Architecture Device Native Container Web View Server HTML ADF Mobile AMX View Third Party Web Sites Third Party Web Sites Oracle IDM Oracle IAM Oracle IDM Oracle IAMLocal HTML HTML5 & JavaScript Presentation Configuration Server Configuration Server ADF Controller CredentialManagement, SSO&AccessControl CredentialManagement, SSO&AccessControl App Config App Config Copyright © 2013, Oracle and/or its affiliates. All rights reserved.5 Device Services PhoneGap/ Cordova Server or Cloud backend Server or Cloud backend Mobile Device CredentialManagement, SSO&AccessControl CredentialManagement, SSO&AccessControl Server SOAP & REST Web Services SOAP & REST Web Services Java VM Business Logic ADF Model Encrypted SQLite DB JDBC SQLite
  • 6. Data Sources for ADF Mobile Applications The data within an ADF Mobile application comes from 1 of 3 places – Remote web services (SOAP, REST) – Simple Java POJOs – Local SQLite database Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6 Typically all 3 are used in combination to allow your application to – Web services: Retrieve and update data from/with remote servers – Java POJOs: Cache that data locally for live access when disconnected – Database: Persist & restore data when the application is stopped & restarted
  • 7. Data Caching and Synching Challenges Mobile devices can lose/turn off connectivity Offline access to data is a common requirement But it will increase the complexity of your application If you cache data locally you must consider – When to cache the data Security Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7 – When to cache the data – How much data to cache – When to synchronize updates – Recording the order of updates – How to deal with synchronization conflicts – Security of the data if the device is lost Security
  • 8. 1. Online Read/Write • Needs to be continuously connected • Does not cache any data locally • No synchronization required • No risk of data theft if the device is stolen Data Caching 2. Cached Reads, Online Write • Caches data as it is accessed or on startup • Updates are via web service calls • No synchronization required • Small risk of data theft Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8 Data Caching Strategies 3. Cached Reads, Offline Writes • Caches data as it is accessed • Edits to cached data are saved locally • Edits to the local data are periodically flushed to the server • Greater risk of data theft 4. Full Synchronization • All data is synchronized to the device on startup • Edits to cached data are saved locally • Edits to the local data are periodically flushed to the server
  • 9. ADF Mobile – Model Layer Data Object – Java class to hold attributes of an object – Represents a single “row” of a collection – Can contain sub-collections of other Data Objects to form complex object hierarchies Copyright © 2013, Oracle and/or its affiliates. All rights reserved.9 Service Object – Java class that provides CRUD operations – Returns arrays of Data Objects in the get methods – Exposed as Data Control to create UI using drag and drop
  • 10. Java VM ADF Model Model Layer – Caching Data Service Object DataControl Data Object JDBC code Encrypted SQLite DB Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11 DataControl
  • 11. Using the SQLite Database in ADF Mobile Typically used by a single user SQLite libraries and JDBC drivers are embedded in ADF Mobile container Copyright © 2013, Oracle and/or its affiliates. All rights reserved.12 Encryption for the SQLite Database File is provided with ADF Mobile Zero configuration No Object-Relational Mapping (ORM) layer provided – Access using plain JDBC statements
  • 12. Initialize the Database call Start() LifeCycleListenerImpl.java Copyright © 2013, Oracle and/or its affiliates. All rights reserved.13 Start() 1. Creates the DB 2. Creates Connection 3. Connects 4. Populates DB Application starts up Note: Need to add LifeCycleListenerImpl.java to the LifeCycleEvent Listener Field of the adfmf-application.xml file.
  • 13. JDBC Example – Get Departments public void retrieveDepartmentsFromDB() { try { Connection conn = DBConnectionFactory.getConnection(); s_departments.clear(); conn.setAutoCommit(false); PreparedStatement stat = conn.prepareStatement("SELECT * from DEPARTMENTS"); ResultSet rs = stat.executeQuery(); while (rs.next()) { Copyright © 2013, Oracle and/or its affiliates. All rights reserved.14 while (rs.next()) { int id = rs.getInt("DEPARTMENT_ID"); String deptName = rs.getString("DEPARTMENT_NAME"); int mgrId = rs.getInt("MANAGER_ID"); int locId = rs.getInt("LOCATION_ID"); Department d = new Department(id, deptName, mgrId, locId); s_departments.add(d); } rs.close();…
  • 14. SQLite More Info Check out SQLite website : http://www.sqlite.org/ Check out ADF Insider Essentials video by Frederic Desbiens – http://www.youtube.com/watch?v=-XzE1n_j5Nc Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15
  • 15. Java VM ADF Model Model Layer – Caching Data Service Object DataControl Data Object JDBC code Encrypted SQLite DB RestServiceAdapter Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16 DataControl RestServiceAdapter REST(JSON/XML) SOAP/REST-XML
  • 16. What is JSON? JavaScript Object Notation – text-based open standard designed for human-readable data interchange. It is derived from the JavaScript scripting language for Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17 JavaScript scripting language for representing simple data structures and associative arrays, called objects. Despite its relationship to JavaScript, it is language- independent, with parsers available for many languages.
  • 17. Using JSON REST Service Create a URL Connection that points to the JSON data host This URL should be based on the root of all JSON services – For example, for a JSON service that returns employees and departments Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18 (http://server:port/service/employees and http://server:port/service/departments), the URL Data Control should point to http://server:port/service/. Use RestServiceAdaptor to invoke service
  • 18. RestServiceAdaptor Example Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19
  • 19. Java VM ADF Model Model Layer – Caching Data Service Object DataControl Data Object JDBC code Encrypted SQLite DB restServiceAdapter Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20 DataControl restServiceAdapter REST(JSON/XML) SOAP/REST-XML SOAP/REST-XML Web Services Data Control AdfmfJavaUtilities invokeDataControlMethod
  • 20. Using SOAP XML Service – Run Web Service Data Control Wizard Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21
  • 21. Invoking SOAP Web Service Programmatically Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22
  • 22. Implementing Data Caching Strategies ADF Mobile provides basic support to implement strategy 2: Cached Reads – Online Writes – Java coding required to convert web service payload to Java data objects and vice versa Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23 – Extensive JDBC coding required when caching should survive application stop/start, and/or flexible data filtering is needed Would be really nice to have an ORM mapping framework that auto generates the JDBC code Implementing strategies 3 and 4 with offline writes is much more complex
  • 23. Agenda Data Caching and Data Sync Strategies Implementing Data Caching and Synching Using A- Copyright © 2013, Oracle and/or its affiliates. All rights reserved.24 Implementing Data Caching and Synching Using A- Team Mobile Persistence Extension
  • 24. A-Team Mobile Persistence Extension Sample code created by Oracle Fusion Middleware A-Team Significantly speeds up implementation of data caching and data synching Provided “as-is”, no support, no updates Copyright © 2013, Oracle and/or its affiliates. All rights reserved.25 Provided “as-is”, no support, no updates Installable as Free JDeveloper extension Will be included in ADF Mobile later this year
  • 25. Local and Remote Persistence Extension runtime library contains generic Java code to perform CRUD operations against SQLite database and against remote web services. – Service objects extend EntiyCRUDService class – Service objects use DBPersistenceManager for CRUD operations Copyright © 2013, Oracle and/or its affiliates. All rights reserved.26 – Service objects use DBPersistenceManager for CRUD operations against SQLite database – Service object can use a remote persistence manager for CRUD operations against web service The generic code in EntiyCRUDService class and persistence managers is driven by metadata stored in persistence mapping XML file
  • 26. Remote Persistence Managers Classes that perform appropriate web service calls based on the CRUD operation performed by the user and the persistence mapping information Currently persistence managers are available Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27 Currently persistence managers are available for REST web services in both JSON and XML format, and SOAP (ADF BC) web services You can easily create custom persistence managers as needed – Extend from abstract class that contains convenience methods
  • 27. ADF Model Runtime Persistence Architecture DepartmentService Data Control Department DepartmentServiceEntityCRUDService extends DBPersistence Manager uses REST-JSON PersistenceManager Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28 Persistence Mapping XML DEPARTMENTS table SQLite JDBC Statements references REST(JSON/XML) HTTP Requests
  • 28. Other Runtime Persistence Features Encryption of database Auto-cleaning of unused database segments Lazy loading of child collections (a.k.a “Indirection”) Entity caching to minimize object creation Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29 Entity caching to minimize object creation FindEntityByKey – Checks cache first, then database Designed for customization – Easy to override and extend default behavior
  • 29. Mobile Persistence Extension - JDeveloper Wizards Three wizard are provided to create the artefacts needed for this runtime persistence architecture: – Mobile Business Objects From Web Service Data Control Wizard – Mobile Business Objects From REST Web Service Wizard Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30 – Mobile Business Objects From Database Tables (Local persistence only) Another wizard is provided to generate a default CRUD user interface on top of the business layer created by one of the above wizards.
  • 30. Rest Wizard Demo - Toplink Data Services /ToplinkRest/persistence/v1.0/Model1/query/Department.findAll Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31
  • 31. Wizards for Creating Runtime Persistence Artefacts Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32
  • 32. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33
  • 33. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34
  • 34. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35
  • 35. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36
  • 36. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37
  • 37. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38
  • 38. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39
  • 39. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40
  • 40. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41
  • 41. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42
  • 42. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.43
  • 43. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.44
  • 44. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.45
  • 45. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.46
  • 46. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.47
  • 47. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.48
  • 48. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.49
  • 49. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.50
  • 50. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.51
  • 51. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.52
  • 52. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.53
  • 53. SOAP Demo – ADF BC SDO Services Copyright © 2013, Oracle and/or its affiliates. All rights reserved.54
  • 54. Run SOAP Web Service Data Control Wizard Copyright © 2013, Oracle and/or its affiliates. All rights reserved.55
  • 55. Run SOAP Web Service Data Control Wizard Copyright © 2013, Oracle and/or its affiliates. All rights reserved.56
  • 56. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.57
  • 57. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.58
  • 58. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.59
  • 59. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.60
  • 60. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.61
  • 61. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.62
  • 62. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.63
  • 63. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.64
  • 64. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.65
  • 65. Generated Data Object Classes Copyright © 2013, Oracle and/or its affiliates. All rights reserved.66
  • 66. Generated Service Object Classes Copyright © 2013, Oracle and/or its affiliates. All rights reserved.67
  • 67. Generated SQL DDL Script Copyright © 2013, Oracle and/or its affiliates. All rights reserved.68
  • 68. Generated Persistence Mapping File Copyright © 2013, Oracle and/or its affiliates. All rights reserved.69
  • 69. Generated Persistence Mapping File RESTful resource calls Copyright © 2013, Oracle and/or its affiliates. All rights reserved.70
  • 70. Generated Persistence Mapping File SOAP method calls Copyright © 2013, Oracle and/or its affiliates. All rights reserved.71
  • 71. Generated Config File Copyright © 2013, Oracle and/or its affiliates. All rights reserved.72
  • 72. Configured InitDBLifecycleListener Copyright © 2013, Oracle and/or its affiliates. All rights reserved.73
  • 73. Create Data Control For Service Classes Copyright © 2013, Oracle and/or its affiliates. All rights reserved.74
  • 74. Creating the Mobile User Interface Build Using Drag and Drop from DataControl Palette Generate Using ADF Mobile User Interface Two Options Copyright © 2013, Oracle and/or its affiliates. All rights reserved.75 Mobile User Interface Generator Wizard
  • 75. Building the User Interface Copyright © 2013, Oracle and/or its affiliates. All rights reserved.76
  • 76. Building the User Interface Copyright © 2013, Oracle and/or its affiliates. All rights reserved.77
  • 77. Building the User Interface Copyright © 2013, Oracle and/or its affiliates. All rights reserved.78
  • 78. Using the Mobile User Interface Generator Copyright © 2013, Oracle and/or its affiliates. All rights reserved.79
  • 79. Using the Mobile User Interface Generator Copyright © 2013, Oracle and/or its affiliates. All rights reserved.80
  • 80. Generated User Interface Artefacts Copyright © 2013, Oracle and/or its affiliates. All rights reserved.81
  • 81. 1. Online Read/Write • Needs to be continuously connected • Does not cache any data locally • No synchronization required • No risk of data theft if the device is stolen Data Caching 2. Cached Reads, Online Write • Caches data as it is accessed • Updates are via web service calls • No synchronization required • Small risk of data theft Copyright © 2013, Oracle and/or its affiliates. All rights reserved.82 Data Caching Strategies 3. Cached Reads, Offline Writes • Caches data as it is accessed • Edits to cached data are saved locally • Edits to the local data are periodically flushed to the server • Greater risk of data theft 4. Full Synchronization • All data is synchronized to the device on startup • Edits to cached data are saved locally • Edits to the local data are periodically flushed to the server
  • 82. A-Team Mobile Persistence Extension- Offline Writes and Data Syncing If a remote persistence manager is configured, and CUD service call fails, the service call is registered as “pending” data synch action – Failure reason registered (device offline, service not available, etc) Copyright © 2013, Oracle and/or its affiliates. All rights reserved.83 On next service call, the pending synch actions are processed first in order of creation – When failing again, the still pending synch action is updated with date of last synch attempt and last error message Out-of-the-box feature: NO Java coding required
  • 83. Viewing Pending Data Sync Actions A reusable “DataSync” feature is provided that can be added to your mobile application Register the feature in adfmf-application.xml Copyright © 2013, Oracle and/or its affiliates. All rights reserved.84
  • 84. Viewing Pending Data Sync Actions Add a button that navigates to the data sync feature Copyright © 2013, Oracle and/or its affiliates. All rights reserved.85
  • 85. Viewing Pending Data Synch Actions Copyright © 2013, Oracle and/or its affiliates. All rights reserved.86
  • 86. Notes on Data Sync Functionality Pending changes can become obsolete because of updates in server data by other clients – The server–side code should identify this and throw an error when the data sync action sends stale data Stale data detection can be done by including a data revision number or Copyright © 2013, Oracle and/or its affiliates. All rights reserved.87 – Stale data detection can be done by including a data revision number or ‘last-modified” timestamp in payload. This number or timestamp should match with server-side data record Data sync actions that keep failing need to be removed manually – Local database might be out-of-sync, app needs to offer reconcile action
  • 87. More Info A-Team Chronicles: http://www.ateam-oracle.com/?p=22331 Includes download links to – A-Team Mobile Persistence Extension - JDeveloper Install File – A-Team Mobile Persistence Videos – A-Team Mobile Persistence Demo applications Copyright © 2013, Oracle and/or its affiliates. All rights reserved.88
  • 88. Summary Using the A-Team Mobile Persistence Extension significantly speeds up and eases implemention of data caching and syncing using the on- device SQLite database Using the A-Team Mobile Persistence Extension significantly speeds up and eases the use of RESTful web services Copyright © 2013, Oracle and/or its affiliates. All rights reserved.89 up and eases the use of RESTful web services You need to think about how your end users should handle failed data sync actions, and how to prevent updates based on stale data Essential parts of A-Team Mobile Persistence Extension will be included in future version of core product
  • 89. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.90