SlideShare a Scribd company logo
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

More Related Content

PDF
Implementing Data Caching and Data Synching Using Oracle MAF
PPTX
A-Team Mobile Persistence Accelerator Overview
PDF
Building beacon-enabled apps with Oracle MCS
PDF
Running ADF Faces on Tablets and Mobile Phones
PDF
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
PDF
Upcoming JDeveloper ADF Business Components REST support
PDF
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
PDF
Oracle ADF Architecture TV - Design - Application Customization and MDS
Implementing Data Caching and Data Synching Using Oracle MAF
A-Team Mobile Persistence Accelerator Overview
Building beacon-enabled apps with Oracle MCS
Running ADF Faces on Tablets and Mobile Phones
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
Upcoming JDeveloper ADF Business Components REST support
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
Oracle ADF Architecture TV - Design - Application Customization and MDS

What's hot (20)

PDF
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
PDF
Oracle ADF Architecture TV - Design - ADF Service Architectures
PDF
Oracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
PDF
Oracle ADF Architecture TV - Design - Service Integration Architectures
PPTX
Let's Talk Mobile
PPTX
Oracle JET overview
PDF
Oracle ADF Architecture TV - Development - Error Handling
PDF
Oracle ADF Architecture TV - Design - Task Flow Overview
PDF
Oracle ADF Architecture TV - Design - Usability and Layout Design
PDF
Oracle ADF Architecture TV - Design - Task Flow Transaction Options
PDF
Oracle ADF Architecture TV - Development - Performance & Tuning
PPTX
Data Caching Strategies for Oracle Mobile Application Framework
PPTX
Mobile Mumbo Jumbo - Demystifying the World of Enterprise Mobility with Oracle
PDF
Oracle ADF Architecture TV - Design - Task Flow Data Control Scope Options
PDF
Oracle ADF Architecture TV - Development - Programming Best Practices
PDF
Oracle ADF Architecture TV - Design - ADF Reusable Artifacts
PDF
Oracle ADF Architecture TV - Deployment - Deployment Options
PDF
Oracle ADF Architecture TV - Design - Task Flow Communication Pattern
PDF
Oracle ADF Architecture TV - Design - ADF Architectural Patterns
PDF
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Development - Naming Conventions & Project Layouts
Oracle ADF Architecture TV - Design - Service Integration Architectures
Let's Talk Mobile
Oracle JET overview
Oracle ADF Architecture TV - Development - Error Handling
Oracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Usability and Layout Design
Oracle ADF Architecture TV - Design - Task Flow Transaction Options
Oracle ADF Architecture TV - Development - Performance & Tuning
Data Caching Strategies for Oracle Mobile Application Framework
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 - Development - Programming Best Practices
Oracle ADF Architecture TV - Design - ADF Reusable Artifacts
Oracle ADF Architecture TV - Deployment - Deployment Options
Oracle ADF Architecture TV - Design - Task Flow Communication Pattern
Oracle ADF Architecture TV - Design - ADF Architectural Patterns
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
Ad

Similar to ADF Mobile: Implementing Data Caching and Synching (20)

PPTX
Oracel ADF Introduction
PDF
ADF Mobile : Best Practices for Developing Applications with Oracle ADF Mobile
PDF
ADF Mobile: Best Practices for Developing Applications with Oracle ADF Mobile...
PPTX
Adf mobile overview
PDF
New & Emerging _ Mick Andrew _ Adding mobile and web 2.0 UIs to existing appl...
PDF
Oracle Master Serials Technology Experience Program 2013 - ADF
PDF
Ebs troubleshooting con9019_pdf_9019_0001
PDF
Oracle Optimized Datacenter - Storage
PDF
206590 mobilizing your primavera workforce
PPTX
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
PPTX
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
PDF
11g R2 Live Part 1
PDF
Oracle ADF Tutorial
PDF
amis-adf-enterprise-mobility
PDF
Bring Your Legacy Applications to the Mobile World - DOAG 2014
PPTX
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
PDF
ADF Introduction By Sandeep Sharda
PDF
Crie Aplicações Mobile Híbridas Escritas em Java, para iOS e Android
KEY
SOTR 2012
Oracel ADF Introduction
ADF Mobile : Best Practices for Developing Applications with Oracle ADF Mobile
ADF Mobile: Best Practices for Developing Applications with Oracle ADF Mobile...
Adf mobile overview
New & Emerging _ Mick Andrew _ Adding mobile and web 2.0 UIs to existing appl...
Oracle Master Serials Technology Experience Program 2013 - ADF
Ebs troubleshooting con9019_pdf_9019_0001
Oracle Optimized Datacenter - Storage
206590 mobilizing your primavera workforce
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
11g R2 Live Part 1
Oracle ADF Tutorial
amis-adf-enterprise-mobility
Bring Your Legacy Applications to the Mobile World - DOAG 2014
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
ADF Introduction By Sandeep Sharda
Crie Aplicações Mobile Híbridas Escritas em Java, para iOS e Android
SOTR 2012
Ad

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Empathic Computing: Creating Shared Understanding
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Electronic commerce courselecture one. Pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Machine Learning_overview_presentation.pptx
PDF
cuic standard and advanced reporting.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Approach and Philosophy of On baking technology
PPTX
Cloud computing and distributed systems.
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Programs and apps: productivity, graphics, security and other tools
Empathic Computing: Creating Shared Understanding
MIND Revenue Release Quarter 2 2025 Press Release
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Electronic commerce courselecture one. Pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Network Security Unit 5.pdf for BCA BBA.
Machine Learning_overview_presentation.pptx
cuic standard and advanced reporting.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
A Presentation on Artificial Intelligence
Assigned Numbers - 2025 - Bluetooth® Document
A comparative analysis of optical character recognition models for extracting...
Approach and Philosophy of On baking technology
Cloud computing and distributed systems.
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Profit Center Accounting in SAP S/4HANA, S4F28 Col11

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