Please give details of the problem



    Developer Guide

        1. Todo Validation
      1. Release Your User Login
      1. Process Reporting API
        1. CSS Examples
        2. CSS Personalization
      1. Performance
        1. List Reinitialization
        2. Holidays
        3. Number Currency Format
        4. Label Modification
        5. Array From WS
        6. Launch Process JQuery
        7. Column Inactivation
        8. Date
        9. Print JSONObject
        10. ArrayJSON to JSONArray
        11. Invalid Fields
        12. Round
        13. Initialization Widget Date
        14. JQuery
        15. Inject JSONObject
        16. Google Tables
        1. Summing Array
        2. API Listener
        3. User Lane Picker
        4. Retrieving Variables Values
          1. Chart Dashboard
          2. Report Chart
          3. Google Visualization
          4. Chart Dashboard Collection
        5. Tags
        6. Collection
        7. File Preview
        8. Dynamic List
        9. Dialog Window
        10. JavaScript Report
        11. Autocomplete Widget
          1. homepage.js
          2. homepage.css
        1. Logout
        2. Custom Login Page
        3. Header
        4. Mobile Devices
        5. Basket
        6. Redirection ExecutionMode
        7. Menu Bar
        8. Information Tags
      1. Composite API Example
      1. Markdown Template
        1. Task Reminder Email
        2. SubProcess
        3. PDF
        4. JavaScript Inclusion
        5. Variable Mapping
        6. Backloop
      2. Trigger
        1. File Visibility
        2. Number Currency Format
        3. Error Handling
        4. JSONObject Concatenation
        5. Loop
        6. Dynamic Variable
        7. List 1000+ Objects
        8. Metadata
        9. Freemarker Container Test
        10. JSONObject Keys Values
        11. List Hash Sequence
        12. Special Freemarker Characters
        13. Salesforce Computation
        14. Array To List
        15. JSONArray Conversion
        16. Lock
        17. JSONObject Creation
        18. Number Test
      1. Customer Management
        1. Messages
        2. Scheduled Process
          1. Roles Entities
          2. Organization
          1. Project Definition
          2. Versions
          3. New Version
          4. Version Management Log
          5. Access Rights
          6. Collections
          7. Versioned Files
          8. Files
          9. Description
            1. Report Widget
            2. List Widget
            3. JavaScript Widget
            4. History Widget
            5. RadioButton Widget
            6. FileUpload Widget
            7. StaticText Widget
            8. HTML Editor Widget
            9. ProgressBar Widget
            10. Section Widget
            11. Spinner Widget
            12. Image Widget
            13. Multi Checkbox Widget
            14. Tab Widget
            15. Tree Widget
            16. HTML Widget
            17. Checkbox Widget
            18. Button Widget
            19. Custom Widget
            20. URLInput Widget
            21. TextInput Widget
            22. Array Widget
            23. Captcha Widget
            24. Geolocation Widget
          1. Implementation
          2. Design
          3. Collections
          4. Stylesheet
          5. JavaScript
          6. API Listener
          7. Google Analytics
          1. Process Design
            1. Gate
            2. Process Step Output Variables
              1. Process Task Functional Tab
              2. Process Task Connector Tab
              3. Process Task Script Tab
              4. Process Task Loop Tab
              5. Process Task SubProcess Tab
              6. Process Task Manual Tab
              7. Process Task Email Tab
            3. Process Step Input Variables
            4. Process Step Testing Variables
              1. Process Intermediary Event
              2. Process Start Event
              3. Process Timer Event
          2. General
          3. Input
          4. Variables
          5. Measures
          1. Connectors
          2. Processes
          3. Providers
        1. Custom Lists
        2. Collections
          1. Design
          2. Configuration
        3. Revision
        1. My Applications
        2. Files
        3. Home
        1. Process Examples
        2. Connectors
        1. Web Interface Reports
          1. Execution Path
          2. Measuring
          3. Parameters
          4. Runtime Users
        1. Configuration
        2. Users
        3. Usage
      1. Mobile
      2. Offline
      1. Collections BackOffice
      2. Collections To List
      3. Collections To Array
      4. Collection JS Freemarker
      1. Access Rights
      2. Delegation
      3. Compound Organization Hierarchy
      4. Dynamic Lanes
      5. Scripted Lanes
      6. Runtime Lanes

    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.