Overview of Offline OData and it's 3 important sections: Initial Download, Flush & Refresh
What important steps to be considered to implement for offline OData : server side paging, delta query, delta tracking
How to use 'Kapsel offline' template in Web IDE for developing an offline OData based hybrid application
Deploying and testing it on device (most preferable than emulator/simulator)
Various properties to be known while defining a 'defining request' in HCPms for offline capabilities
(Did he again has hair cut? :wink: )
IMO, Any enterprise level mobile application is incomplete without features like Push Notifications and Offline capabilities. As he mentioned, Business doesn't always happen where networks exist. Its really important to such capabilities in your mobile app.
Client database that gets downloaded in offline OData scenario is called as UltraLite-type Database.
OData V2 is supported for offline capabilities (Also V4 but for delta queries)
If you have downloaded huge amount of data on your device and now you want to make a REFRESH call, its better to enable delta queries on your OData service, so that rather than refreshing all the data , it will bring only the data which has modified after a particular 'timestamp'
HCPms supports middle-tier support for OData service that doesn't have delta-enabled query capabilities.Here in this case, you will get complete data from backend to HCPms and then HCPms will compute delta based on cache keys (were stored during initial download on HCPms database) and send it to device. Not a recommended approach since it will not bring good performance
OData version 2 is supported for the offline OData feature, with several exceptions.
There is no support for these OData concepts:
ETags when using the if-match/if-none-match headers when performing LOCAL reads.
Modifying properties or complex type properties by addressing them in the URL.
Metadata annotations are not populated in the Metadata object.
Modifying entity relationships through entity bindings in entities.
The Offline OData feature has the following limitations:
The maximum length (MaxLength) of Edm.String key properties is 512 characters.
The maximum length (MaxLength) of Edm.Binary key properties is 1536 bytes.
The Android offline store does not support mutual authentication using X509Certificates loaded from the System KeyStore/KeyChain. It does support X509Certificates which are provided from a secure file store. The secure file store may be an SAP component, or 3rd party component, so long as the X509Certificate is supplied to the X509KeyManager when required.
The navigation property used for the deep insert must refer to at most one entity.
If you have an odata collection with a primary key which is a string, you need to make sure that maxlength field is defined for it. (image reference from Midhun's comment)
12. All the collections selected for 'Offline OData entities' during creation of a 'kapsel offline' project in webide have its information within Application constructor area in dev/devapp.js file.
13. There is always a room to modify CREATE/UPDATE UI by navigating to DetailEditMode.fragment.xml file
14. While modifying a record in the app on the android phone, keyboard doesn't appear while tapping on Name, description, release date but when i tapped on Rating Field, it appeared and could able to modify other inputs as well.
15. Defining requests are key to loading the data you need on your device.
End point configuration : determines how backend system (OData producer) should be processed by HCPms to retrieve and store the offline data, how offline DB can be prepopulated before its downloaded to client, indexing ...
indexed_type=<namespace>.<entity type name1>: Property1A [ASC|DESC][, Property1B [ASC|DESC], …]
indexed_type=<namespace>.<entity type name2>: Property2A [ASC|DESC][, Property2B [ASC|DESC], …]