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.
1 Overview
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
- Collections
- 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
Within the web interface, you can check whether RunMyApp is in offline mode by using the Javascript function 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
Whilst in offline mode the downloaded collections can be queried using any method (e.g. Collection reports, Javascript API e.g. listCallback
, aggregateCallback
, autocomplete text widget,...).
Also, it is possible to update and save any local collections using :
updateCallback
updateMultiCallback
saveCallback
The supported operators for update are $set
and $unset
.
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 :
${context}
${P_mode}
${P_version}
${P_user.xxx}
${P_connected_user.xxx}
${P_initiator.xxx}
3.5 Mongo DB operators
The following Mongo database operators are supported through javascript APIs and Collection reports :
$match, $group, $project, $sort
$sum, $avg, $max, $min, $first, $last, $push, $addToSet
$eq, $ne, $gt, $lt, $gte, $lte, $in, $nin
$regex, $options
$and, $or, $not
$add, $subtract, $multiply, $divide, $mod
4 Known limitations
The following are known limitations of offline mode:
User experience:
- 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 drafts are not synchronized (documents aren’t accessible during online mode).
- Custom icons remain visible whilst offline, the default icons do not.
Access to online resources:
- Listeners launched from a web interface are not supported (CAPI, WS) : Process listener are.
- Ajax calls do not function.
Data availability:
- 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.
- Uploaded files are not available: not to be confused with versioned files or File upload widget in a Web Interface.
- File ids generated by Uploaded file widget are local and temporary: its do not reflect the file ids that will be created on the server when going online
- 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.
Project versioning:
- If a subproject is included in several offlined versioned projects, only one version of the subproject is possible. So, if a parent project is updated, then the version of the subproject will be updated for all the projects.
Please give details of the problem