Пауза В Lotus Script

orion

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

savl

Lotus team
28.10.2011
2 136
105
#3
Ну бывает нужно выждать паузу при каком-то условии, чтобы повторить действие.
Sleep не поможет, клиент не активен в этот момент.
Тут надо зацикливать действие, пока не будет результат.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#4
Добрый день!
Ну бывает нужно выждать паузу при каком-то условии, чтобы повторить действие.
Кто как организовывает паузы в Lotus Script?
ждать чего?
есть подход - в виде отдельной нити...
 

orion

Active member
22.10.2013
39
0
#5
ждать чего?
есть подход - в виде отдельной нити...
Например, нужно подождать пока разблокируется нужный документ. И открыть его для редактирования (блокируется он не человеком вручную, а автоматикой и на ограниченное небольшое время).
 
A

alexas

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#8
как POC - в дб скрипте заводим очередь и треду (а м.б. несколько) при открытии дока, если он занят - в очередь вставляем юнид, запускаем нить по отслеживанию, при освобождении дока - уведомляем пользователя (вот этот механизм надо прорабатывать, ибо просто ЮИ объект не прокатит)
 
A

alexas

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