Пауза В Lotus Script

Тема в разделе "Lotus - Программирование", создана пользователем orion, 17 фев 2014.

  1. orion

    orion Active Member

    Регистрация:
    22 окт 2013
    Сообщения:
    39
    Симпатии:
    0
    Добрый день!
    Ну бывает нужно выждать паузу при каком-то условии, чтобы повторить действие.
    Кто как организовывает паузы в Lotus Script?
     
  2. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
  3. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Sleep не поможет, клиент не активен в этот момент.
    Тут надо зацикливать действие, пока не будет результат.
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    ждать чего?
    есть подход - в виде отдельной нити...
     
  5. orion

    orion Active Member

    Регистрация:
    22 окт 2013
    Сообщения:
    39
    Симпатии:
    0
    Например, нужно подождать пока разблокируется нужный документ. И открыть его для редактирования (блокируется он не человеком вручную, а автоматикой и на ограниченное небольшое время).
     
  6. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    orion
    Это надо механизм блокировки менять, а не паузы вешать.
    Иначе эта "пауза" будет:
     
  7. alexas

    alexas Well-Known Member

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    как POC - в дб скрипте заводим очередь и треду (а м.б. несколько) при открытии дока, если он занят - в очередь вставляем юнид, запускаем нить по отслеживанию, при освобождении дока - уведомляем пользователя (вот этот механизм надо прорабатывать, ибо просто ЮИ объект не прокатит)
     
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  10. alexas

    alexas Well-Known Member

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

Поделиться этой страницей