Здравствуйте!
BPMonline 7.7.0.2326
Возможно ли в мобильном приложении настроить автоматическую синхронизацию?
И как это реализовать?
Нравится
Виктория здравсвуйте.
Что значит "автоматическую синхронизацию"?
Опишите пожалуйста функционал который Вы бы хотели видеть и чем не подходят текущие настройки.
Здравствуйте!
Руководитель компании хочет, чтобы после входа в приложение каждые 5 минут происходила синхронизация без нажатия на кнопку, сама по себе.
Возможно ли такое?
И в каком модуле нужно прописывать код?
В етом случае рекомендуется использовать Online синхронизацию - так все данные сразу же будут попадать в систему.
Все-таки Online синхронизация не подходит, потому что без доступа к интернету не будет возможности создавать и просматривать записи. А нам этот вариант не подходит.
Все-таки возможно ли реализовать автоматическую синхронизацию?
И в какой схеме нужно прописать код?
Пример рассмотрен здесь:
http://www.community.terrasoft.ru/forum/topic/15331
А правильно ли я понимаю, что для реализации автоматической синхронизации, мне необходимо использовать setInterval и clearInterval?
При чем при загрузке приложения стартовая страница это раздел Лиды.
То есть можно при инициализации страницы реестра вызвать setInterval?
А нужно ли вызывать clearInterval или после выхода из системы он сам автоматически завершится?
И получается мне нужно переопределить страницу грида?
Или автоматическую синхронизацию можно реализовать по-другому?
1. Да, для того, чтобы синхронизация запускалась через какой-то период, можно использовать setInterval().
2. Да, можно сделать этот запуск на инициализации страницы реестра Лида, если у Вас гарантированно эта страница открывается при старте.
3. clearInterval() вызывать не обязательно.
4. Да, как вариант, можно реализовать подобное на инициализации реестра Лида. Контроллер будет выглядеть примерно так:
Ext.define('LeadGridPage.Controller', { extend: 'Terrasoft.controller.BaseGridPage', statics: { Model: Lead }, config: { refs: { view: '#LeadGridPage' } }, initializeView: function(view) { this.callParent(arguments); Terrasoft.MobileSettingsPageControllerSyncManager.synchronize({ exportOnly: false, checkForPredefinedDatabase: false, redirect: function(){ Terrasoft.core.redirectToMainPage(); }, }); } });
Но нужно понимать следующее:
- Поскольку Javascript - однопоточный, то и синхронизация будет выполняться в основном потоке приложения. Это может привести к тому, что в случае обращения к одному и тому же объекту приложение будет "тупить". Т.е. если пользователь пытается найти Контакта и в этот же момент синхронизация тоже будет обращаться к Контактам (например, будет добавлять новые записи в этот объект), то UI приложения будет тормозить\зависать, пока сохранение не завершится.
- В приведенном выше коде после выполнения синхронизации осуществляется рестарт приложения (Terrasoft.core.redirectToMainPage();). Обычно мы это делаем для того, чтобы конфигурационные изменения, загруженные в ходе синхронизации, применились (например, Вы добавили новую колонку в карточку редактирования и хотите, чтобы у всех пользователей это изменение появилось). Но в Вашем случае, возможно, этого делать не нужно (пользователям вряд ли понравится, что приложение вдруг взяло и перегрузилось).
- Если Вам нужно просто передавать данные в bpm'online, то достаточно указать свойство exportOnly
С учетом вышеизложенного код немного поменяется:
Terrasoft.MobileSettingsPageControllerSyncManager.synchronize({ exportOnly: true, checkForPredefinedDatabase: false, redirect: function(){ //Terrasoft.core.redirectToMainPage(); }, });
Попробуйте, может такой вариант Вам подойдет.