Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ADF Mobile: Implementing Data Caching and Synching

4,682 views

Published on

Overview presentation on data caching and data syncing strategies with ADF Mobile and how to implement them using the generic and powerful A-Team ADF Mobile Persistence extension that is available as a free JDeveloper extension

Published in: Technology

ADF Mobile: Implementing Data Caching and Synching

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 18. RestServiceAdaptor Example Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19
  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. 20. Using SOAP XML Service – Run Web Service Data Control Wizard Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21
  21. 21. Invoking SOAP Web Service Programmatically Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22
  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. 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. 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. 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. 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. 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. 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. 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. 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. 31. Wizards for Creating Runtime Persistence Artefacts Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32
  32. 32. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33
  33. 33. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34
  34. 34. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35
  35. 35. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36
  36. 36. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37
  37. 37. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38
  38. 38. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39
  39. 39. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40
  40. 40. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41
  41. 41. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42
  42. 42. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.43
  43. 43. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.44
  44. 44. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.45
  45. 45. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.46
  46. 46. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.47
  47. 47. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.48
  48. 48. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.49
  49. 49. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.50
  50. 50. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.51
  51. 51. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.52
  52. 52. Business Objects From REST Web Service Copyright © 2013, Oracle and/or its affiliates. All rights reserved.53
  53. 53. SOAP Demo – ADF BC SDO Services Copyright © 2013, Oracle and/or its affiliates. All rights reserved.54
  54. 54. Run SOAP Web Service Data Control Wizard Copyright © 2013, Oracle and/or its affiliates. All rights reserved.55
  55. 55. Run SOAP Web Service Data Control Wizard Copyright © 2013, Oracle and/or its affiliates. All rights reserved.56
  56. 56. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.57
  57. 57. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.58
  58. 58. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.59
  59. 59. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.60
  60. 60. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.61
  61. 61. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.62
  62. 62. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.63
  63. 63. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.64
  64. 64. Mobile Business Objects from WS Data Control Copyright © 2013, Oracle and/or its affiliates. All rights reserved.65
  65. 65. Generated Data Object Classes Copyright © 2013, Oracle and/or its affiliates. All rights reserved.66
  66. 66. Generated Service Object Classes Copyright © 2013, Oracle and/or its affiliates. All rights reserved.67
  67. 67. Generated SQL DDL Script Copyright © 2013, Oracle and/or its affiliates. All rights reserved.68
  68. 68. Generated Persistence Mapping File Copyright © 2013, Oracle and/or its affiliates. All rights reserved.69
  69. 69. Generated Persistence Mapping File RESTful resource calls Copyright © 2013, Oracle and/or its affiliates. All rights reserved.70
  70. 70. Generated Persistence Mapping File SOAP method calls Copyright © 2013, Oracle and/or its affiliates. All rights reserved.71
  71. 71. Generated Config File Copyright © 2013, Oracle and/or its affiliates. All rights reserved.72
  72. 72. Configured InitDBLifecycleListener Copyright © 2013, Oracle and/or its affiliates. All rights reserved.73
  73. 73. Create Data Control For Service Classes Copyright © 2013, Oracle and/or its affiliates. All rights reserved.74
  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. 75. Building the User Interface Copyright © 2013, Oracle and/or its affiliates. All rights reserved.76
  76. 76. Building the User Interface Copyright © 2013, Oracle and/or its affiliates. All rights reserved.77
  77. 77. Building the User Interface Copyright © 2013, Oracle and/or its affiliates. All rights reserved.78
  78. 78. Using the Mobile User Interface Generator Copyright © 2013, Oracle and/or its affiliates. All rights reserved.79
  79. 79. Using the Mobile User Interface Generator Copyright © 2013, Oracle and/or its affiliates. All rights reserved.80
  80. 80. Generated User Interface Artefacts Copyright © 2013, Oracle and/or its affiliates. All rights reserved.81
  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. 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. 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. 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. 85. Viewing Pending Data Synch Actions Copyright © 2013, Oracle and/or its affiliates. All rights reserved.86
  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. 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. 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. 89. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.90

×