Creatio development guide
Это документация Creatio версии 7.11.0. Мы рекомендуем использовать новую версию документации.

Расширение синхронизации с мобильным приложением

Glossary Item Box

ВАЖНО

Функциональность расширения синхронизации доступна:

  • для bpm'online версии 7.7 и выше;
  • для мобильного приложения версии 7.11.2 и выше.

Общие сведения

Модули синхронизации являются внутренними (internal) классами и не подлежат расширению. Но часто возникает необходимость ограничить передаваемые во время синхронизации данные в соответствии с определенными правилами. Для этого была добавлена возможность управления этапами синхронизации с помощью класса управления.

Класс управления процессом синхронизации

Для управления этапами синхронизации необходимо создать класс, наследуемый от Terrasoft.SyncHandler. Основные методы этого класса:

shouldImportModel() — определяет, будет ли выполнен импорт данных по конкретной модели.

shouldMergeModel() — определяет, будет ли выполнена актуализация данных по конкретной модели.

shouldExportLogRecord() — определяет, будет ли выполнен экспорт данных по конкретной записи лога.

Пример реализации класса управления процессом синхронизации

Например, необходимо выполнить экспорт данных без файлов. Для этого нужно создать класс (например, Terrasoft.configuration.MySyncHandler), унаследованный от Terrasoft.SyncHandler. В этом классе следует переопределить метод shouldExportLogRecord(), вызываемый при экспорте данных. Пример реализации класса приведен ниже.

Ext.define("Terrasoft.configuration.MySyncHandler", {
  extend: "Terrasoft.SyncHandler",

  shouldExportLogRecord: function(logRecord) {
     var modelName = logRecord.get("ModelName");
     var syncOptions = this.syncOptions;
     if (syncOptions.ignoreActivityFile === true && modelName === "ActivityFile") {
        return false;
     } else {
        return this.callParent(arguments);
     }
  }
});

Затем экземпляр созданного класса нужно установить в качестве обработчика в модуле AppSyncModule:

var handler = Ext.create("Terrasoft.configuration.MySyncHandler");
Terrasoft.Sync.AppSyncModule.setHandler(handler);

Если метод shouldExportLogRecord() вернет false, то запись из лога не будет экспортироваться. Таким образом, если выполнить синхронизацию с параметром ignoreActivityFile: true, данные объекта ActivityFile не будут экспортироваться при синхронизации.

Для выполнения синхронизации данных с параметром ignoreActivityFile нужно добавить следующий исходный код:

Terrasoft.SyncUtils.synchronizeData({
  syncOptions: {
     ignoreActivityFile: true
  },
  redirect: true
});

Метод Terrasoft.SyncUtils.synchronizeData() выполняет только синхронизацию данных, без структуры. Для полной синхронизации нужно использовать метод Terrasoft.SyncUtils.synchronizeByPlatform().

К СВЕДЕНИЮ

Если при последующих вызовах синхронизации нужно экспортировать файлы на сервер, то необходимо параметру ignoreActivityFile присвоить значение false.

 

 

 

© Terrasoft 2002-2018.

Был ли данный материал полезен?

Как можно улучшить эту статью?