Пауза В Lotus Script

  • Автор темы orion
  • Дата начала
O

orion

Добрый день!
Ну бывает нужно выждать паузу при каком-то условии, чтобы повторить действие.
Кто как организовывает паузы в Lotus Script?
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
542
Ну бывает нужно выждать паузу при каком-то условии, чтобы повторить действие.
Sleep не поможет, клиент не активен в этот момент.
Тут надо зацикливать действие, пока не будет результат.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
Добрый день!
Ну бывает нужно выждать паузу при каком-то условии, чтобы повторить действие.
Кто как организовывает паузы в Lotus Script?
ждать чего?
есть подход - в виде отдельной нити...
 
O

orion

ждать чего?
есть подход - в виде отдельной нити...

Например, нужно подождать пока разблокируется нужный документ. И открыть его для редактирования (блокируется он не человеком вручную, а автоматикой и на ограниченное небольшое время).
 
A

alexas

Например, нужно подождать пока разблокируется нужный документ. И открыть его для редактирования...
Если время действительно небольшое - проверяйте его на доступность редактирования в цикле (там можете и sleep использовать). Как будет доступен - открыть на редактирование. Только ограничить количество итераций, что бы не уйти в вечность (далее можно выдать мессагу типа: "Документ сейчас недоступен, попробуйте повторить позже"). Надо помнить, что юзер, на время цикла, ничего не сможет делать.
Или, как предложил lmike, предупредить юзера о недоступности дока прям сейчас и организовать эту проверку в отдельной нити.
Юзер сможет работать дальше с другими доками и, как будет доступен первый, открыть его на редактирование или сообщить о доступности. В этом случае время блокировки не критично.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
как POC - в дб скрипте заводим очередь и треду (а м.б. несколько) при открытии дока, если он занят - в очередь вставляем юнид, запускаем нить по отслеживанию, при освобождении дока - уведомляем пользователя (вот этот механизм надо прорабатывать, ибо просто ЮИ объект не прокатит)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
 
A

alexas

Такой вариант.
Пытаемся открыть на редактирование с проверкой лока.
Дос занят - запускаем BackGround agent в клиенте с проверкой лока в цикле (агент должен быть доступен в меню action).
Можно выводить в status bar, что такой-то док ещё занят.
Док освободился - показываем msgbox (это в бэкграунде можно)
По реакции на него можно открыть док.
Несколько таких агентов так же будут работать.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!