Mobile Framework

Add a Synchronize Action to a Mobile Form

The Data Synchronization action involves transferring data from the mobile device to the Web Central database. Data is typically sent to the Web Central server where it is then processed by one or more workflow rules.

A typical sync action involves the following steps:

The mobile framework performs the synchronization using the Common.store.sync.SyncStore.syncStore() function.

Steps required to add a synchronize action for an new table:

Examples

The Maintenance.controller.WorkRequestSync file manages the sync functions for the Maintenance app. The Maintenance app transaction tables are synchronized using the syncWorkRequest function.

Note that the synchronization function SyncManager.syncTransactionTables() is called twice, theexecuteWorkflowRules() executes a server-side workflow rule to act on the data, followed by the second synchronization to transfer the data back to the mobile device.

File: ab-products/common/mobile/src/Maintenance/app/controller/WorkRequestSync.js

To create the new Model, extend Common.data.Model:

Ext.define('Maintenance.model.WorkRequest', {
    extend : 'Common.data.Model',
    config : {
        fields : [
            { name : 'id', type : 'auto' },
            { name : 'mob_wr_id', type : 'IntegerClass' }, ...

File: ab-products/common/mobile/src/Maintenance/app/model/WorkRequest.js

To create the new Store, extend Common.store.sync.SyncStore and reference the new Model:

Ext.define('Maintenance.store.WorkRequests', {
    extend : 'Common.store.sync.SyncStore',
    requires : [ 'Maintenance.model.WorkRequest' ],
    ...
    config : {
        model : 'Maintenance.model.WorkRequest',
        storeId : 'workRequestsStore',

File: ab-products/common/mobile/src/Maintenance/app/store/WorkRequests.js

To add a new transaction table to the synchronization, add the new storeId to the transactionTableStoreIds list of the config property:

Ext.define('Maintenance.controller.WorkRequestSync', {     ... Common.service.Session.start() ... .then(function () { return SyncManager.syncTransactionTables(transactionTableStoreIds); }) .then(function() { Mask.setLoadingMessage(me.getUpdateMessage()); return me.executeWorkflowRules(); }) .then(function(result) { ... return SyncManager.syncTransactionTables(transactionTableStoreIds); }) ...

File: ab-products/common/mobile/src/Maintenance/app/controller/WorkRequestSync.js

The executeWorkflowRules() function is further detailed in the next topic Calling a Server-Side Workflow Rule.