Developer Guide for offline applications
Availaible on RunMyApp for Android & iOS
This guide offers advice to developers considering making their applications available in offline mode on mobile devices.
RunMyApp is RunMyProcess’s mobile application. RunMyApp allows users to use some applications whilst offline, provided that the application has been designed and configured to enable this feature. This guide offers advice to developers considering making their applications available in offline mode on mobile devices.
2 Configuration & data download
When an application is deployed on a mobile device, the following project resources held locally will be synchronized with the ones on the central RunMyProcess platform:
- Web interfaces
- Custom lists
- Versioned Files: JS & CSS files used in web interfaces
- Included sub projects
3 Designing an offline application
If the end user opens a web interface on a mobile device while having no network connectivity, Offline mode will be activated automatically. When in offline mode, “OFFLINE MODE” is displayed at the top of the screen and the basket is replaced with a list of saved documents and queued requests.
3.1 Querying the current mode
RMP_RunMyApp.isInOfflineMode() which will return true if offline mode is enabled.
Please note this is NOT the device’s current network status. A web interface can be opened in offline mode whilst the device is online e.g. when opening a saved document.
3.2 Offline functionality
In Offline mode, the end user can:
- Fill in a new form, save and submit. Submitted requests will be queued for sending to the server, which will take place when an online connection is established. Saved documents will not be synchronized.
- Open their saved documents. Please note that the web interface will be launched in offline mode regardless of the device’s network status.
- Use the file upload widget. Files will be uploaded to the server when the requests are being sent.
- Display the collection content through a Collection report.
- Query collections held locally (see section 3.3).
- Update and save any collections held on the mobile device (see section 3.3).
3.3 Local collections
aggregateCallback, autocomplete text widget,...).
Also, it is possible to update and save any local collections using :
The supported operators for update are
Please note that local updates are not synchronized with the server. When synchronization occurs, local collection data will be replaced with server data.
3.4 Available Internal Parameters
It is possible to use the following Internal parameter whilst in offline mode. They will be replaced during the downloading process :
3.5 Mongo DB operators
$match, $group, $project, $sort
$sum, $avg, $max, $min, $first, $last, $push, $addToSet
$eq, $ne, $gt, $lt, $gte, $lte, $in, $nin
$and, $or, $not
$add, $subtract, $multiply, $divide, $mod
4 Known limitations
The following are known limitations of offline mode:
- Listeners launched from a web interface are not supported (CAPI, WS) : Process listner are.
- The results of Freemarker functions (user context, metadata, preferences, etc…) are determined at the time of the latest synchronization.
- The list of lanes a user belongs to cannot be accessed.
- The list of the users belonging to an account or to a lane cannot be accessed (no user picker).
- Web interface and Process reports are not functional.
- Ajax calls do not function.
- Uploaded Files (not to be confused with versioned files) are not available offline.
- The task basket is not available.
- Collections are editable but local changes will not be synchronized with the master copy held on the RunMYProcess server. During the synchronization process, local collection data will be overwritten.
- Not all Mongo DB operators are supported.
- You cannot switch between online and offline mode. To exit offline mode, close the web interface then reopen it while the device is online.
- Widget history does not function when a request is saved as a draft
- Saved documents are not synchronized (documents aren’t accessible during online mode).
- Only collections defined in offline projects can be synchronized (not collections of subprojects).
- Custom icons remain visible whilst offline, the default icons do not.
- Updating a LIVE version of a main project will retrieve the current LIVE version, while the version of the subprojects will remain the same