Здравствуйте!

BPMonline 7.7.0.2326

Возможно ли в мобильном приложении настроить автоматическую синхронизацию?
И как это реализовать?

Нравится

8 комментариев

Виктория здравсвуйте.
Что значит "автоматическую синхронизацию"?
Опишите пожалуйста функционал который Вы бы хотели видеть и чем не подходят текущие настройки.

Здравствуйте!
Руководитель компании хочет, чтобы после входа в приложение каждые 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();
	},
});

Попробуйте, может такой вариант Вам подойдет.

Спасибо большое!!!

Показать все комментарии