Background Client Thread & Ui

Тема в разделе "Lotus - Программирование", создана пользователем D!m@n, 23 дек 2010.

  1. D!m@n

    D!m@n Гость

    Добрый день, уважаемые соучастники!

    Всю сознательную жизнь думал, что в фоновых агентах нельзя создавать объекты лотусных фронт-энд классов и вызывать их методы.
    Об этом нас предупреждает и хелп:
    Интернет подтверждает:
    http://www.breakingpar.com/bkp/home.nsf/0/...7256FC40074B111

    А тут как-то решил попробовать... и получилось. Создал объект NotesUIWorkspace, вызвал его методы Prompt и SaveFileDialog - все работает, никаких ошибок.
    Клиент 8.5.2 на винде.

    Не сомневаюсь, что узнал секрет Полишинеля, но все-таки вопрос: а в чем подвох? :)
     
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    и что на сервере выскочил промт? :)
     
  3. D!m@n

    D!m@n Гость

    Какой сервер? :)
    Речь о background client agent.
     

    Вложения:

    • bg.png
      bg.png
      Размер файла:
      3,2 КБ
      Просмотров:
      229
  4. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    а каков результат на деле?
     
  5. D!m@n

    D!m@n Гость

    Дык я ж и говорю - работает!

    Создайте агента со следующим кодом:
    Код (LotusScript):
    Sub Initialize
    On Error GoTo ErrCatch 
    Dim uiw As New NotesUIWorkspace
    Dim sResult As String
    sResult = uiw.Prompt(3, "Заголовок", "Введите че-то", "че-то")
    MsgBox "Вы ввели: " + sResult
    GoTo es
    ErrCatch:
    MsgBox "Ошибка " & Err & ": " & Error$ & " в строке " & Erl
    Resume es
    es:
    End Sub
    Затем поднимите флажок "Run in background client thread" и запустите агента.
    У меня на клиенте 8.5.2 работает (т.е. в данном случае на экране появляется сначала Prompt, потом MessageBox с введенным в Prompt'е текстом).
    С файловыми диалогами тоже работает.
    С EditDocument не проверял.
     
  6. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    и как же вы его запускали то? :)
     
  7. D!m@n

    D!m@n Гость

    Мышкой (см. прилагаемый рисунок :)). А Вы как обычно запускаете агентов с триггером On Event\Action menu selection? :)
     

    Вложения:

    • 4toxarat.png
      4toxarat.png
      Размер файла:
      7 КБ
      Просмотров:
      204
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Да уж сто лет как работает.
    Я как-то даже делал тему и выкладывал базку, что-то там про псевдо-аджакс под нотесом. (я знаю, что "аджакс" не правильно, но мне так нравится).
    Все нативные ws ф-ии (Save/OpenFileDialog, Prompt, PickList...) работают.
    Не работает тока DialogBox.

    Вообще, бекграундные треды - офигенная вещь!
     
  9. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    и что если назвать агент фоновым он становится фоновым? ;)
    мдя, логика зачотная ;)
     
  10. D!m@n

    D!m@n Гость

    Будете к словам придираться?..

    Ну хорошо:
    Во-первых, фоновым он называется в документации.
    Во-вторых, учитывая то, что такой агент отрабатывает в background client thread, что в переводе с английского означает "фоновый клиентский поток", название "фоновый агент" представляется мне достаточно корректным (см. перевод на Lingvo Online).
    В-третьих, отрабатывает он реально в фоновом режиме, пользователь во время работы этого агента может спокойно продолжать работу с клиентом Lotus Notes.

    Ну и чем Вам не фоновый агент?
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    ToxaRat
    Что-то я не догоняю — это незнание матчасти (с таким-то опытом ;) ) или предновогодний троллинг?
    Вот тут вышеупомянутая иллюстрация от Omh:
    http://codeby.net/ipb.html?s=&sh...st&p=171280
     
  12. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    вот именно!

    фоновый агент это агент отрабатывающийся на сервере, у сервера воркспейса нету - лишь текстовая консолька оттого такие агенты на сервере никогда не запустятся, отого я и не согласен с лихим переводом и натягиванием background client thread как "фоновый агент" правильно его так и называть как его вам переводит лингво, с чётким указанием, что КЛИЕНТСКИЙ
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Из серии "белое — это пушистое". Серверный — это агент, исполняющийся на сервере. Фоновый — это агент, исполняющийся в фоновом, т.е. не основном потоке. Речь здесь об агенте, исполняющемся в фоновом клиентском потоке (background client thread), и о том, что вопреки утверждения IBM, некоторые уи-методы в нём доступны.
     
  14. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    у нотусни есть несколько (а вот скока не знаю) тредов, для разных нужд...
    что из них индусы называют фоновой - это дело их личной гигиены :trash:
    просто для них любая треда, не связанная (напрямую) с циклом основного виндового окна клиента - будет фоновой :crash:
    мосх виндовс прогерра - он такой...
     
  15. D!m@n

    D!m@n Гость

    nvy Вам правильно ответил:
    Тут и добавить нечего.

    ToxaRat, ну перепутали, с кем не бывает... но зачем спорить-то, за слова цепляться?..
    По большому счету тут все свои :crash:
     
  16. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    я не спорю, я уточняю :(
    мне вот дальше интересней а применение этой фичи чем вообще хорошо?
    и чем она лучше того-то таймера?

    вот думаю, как бы удачнее этот тренд повесить на формирование отчёта, пока юзер там себе еще чо-то вояет, однако быстрее отчёт не сформируется и каков максимум тренд потоков можно задать? ;)
     
  17. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В лёгкую. Почитав сию тему, попробовал агентику, экспортирующий данные из Лотус-базы в файл, поставить эту замечательную галку "Run in background client thread". В начале агента пользователю открывается ws.SaveFileDialog для указания файла экспорта. Так вот, диалог открылся, но вот ввести имя файла и нажать ОК не получилось — максимум можно было таскать окно диалога по экрану. Пришлось тушить клиента (8.0.1 en на WinXP). Другие диалоги пока не пробовал.
     
  18. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    [​IMG]
    вот о каких ограничениях я говорю, если кто не понял
     
  19. D!m@n

    D!m@n Гость

    Буквально в пятницу ввел в действие аналогичного агента. У меня клиент, как я уже говорил, 8.5.2 эклипснутый, у юзеров - 8.5.1 Basic. И у меня, и у них диалоги работают... B)

    Добавлено:
    Это попытка запустить 2-х бэкграундных агентов параллельно на одном клиенте?..
     
  20. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну так это скорее всего попытка показать ws.DialogBox.
    DialogBox, да - не работает, но все промты, пиклисты и прочие сейвфайлдиалоги - работают.
    Почти всегда их хватает.
     
Загрузка...
Похожие Темы - Background Client Thread
  1. Dragon108
    Ответов:
    31
    Просмотров:
    5.755
  2. fedotxxl
    Ответов:
    20
    Просмотров:
    6.349
  3. Omh
    Ответов:
    19
    Просмотров:
    6.758
  4. alik86
    Ответов:
    22
    Просмотров:
    6.829
  5. ioni
    Ответов:
    3
    Просмотров:
    2.588

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