• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Background Client Thread & Ui

  • Автор темы D!m@n
  • Дата начала
D

D!m@n

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

Всю сознательную жизнь думал, что в фоновых агентах нельзя создавать объекты лотусных фронт-энд классов и вызывать их методы.
Об этом нас предупреждает и хелп:
To run an agent without having to wait until it completes, check "Run in background client thread."
Note that you should check this option only if the agent (or the top-level agent that calls this agent) is triggered by "On event - Action menu selection."
To get the full benefit of this feature, the database should reside on a server and the agent must be invoked via the client.
If you check this box and the agent references front end classes, the user receives a run-time error.
Интернет подтверждает:


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

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

D!m@n

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

Вложения

  • bg.png
    bg.png
    1,4 КБ · Просмотры: 712
D

D!m@n

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

Создайте агента со следующим кодом:
Код:
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 не проверял.
 
D

D!m@n

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

Вложения

  • 4toxarat.png
    4toxarat.png
    3,3 КБ · Просмотры: 624
O

Omh

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

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

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Мышкой (см. прилагаемый рисунок ). А Вы как обычно запускаете агентов с триггером On Event\Action menu selection?
и что если назвать агент фоновым он становится фоновым? ;)
мдя, логика зачотная ;)
 
D

D!m@n

и что если назвать агент фоновым он становится фоновым? ;)
мдя, логика зачотная ;)
Будете к словам придираться?..

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

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

nvyush

ToxaRat
Что-то я не догоняю — это незнание матчасти (с таким-то опытом ;) ) или предновогодний троллинг?
Вот тут вышеупомянутая иллюстрация от Omh:
link removed
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Что-то я не догоняю
вот именно!

Во-вторых, учитывая то, что такой агент отрабатывает в background client thread, что в переводе с английского означает "фоновый клиентский поток", название "фоновый агент" представляется мне достаточно корректным (см. ]]>перевод на Lingvo Online]]>).
В-третьих, отрабатывает он реально в фоновом режиме, пользователь во время работы этого агента может спокойно продолжать работу с клиентом Lotus Notes.
фоновый агент это агент отрабатывающийся на сервере, у сервера воркспейса нету - лишь текстовая консолька оттого такие агенты на сервере никогда не запустятся, отого я и не согласен с лихим переводом и натягиванием background client thread как "фоновый агент" правильно его так и называть как его вам переводит лингво, с чётким указанием, что КЛИЕНТСКИЙ
 
N

nvyush

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
у нотусни есть несколько (а вот скока не знаю) тредов, для разных нужд...
что из них индусы называют фоновой - это дело их личной гигиены :trash:
просто для них любая треда, не связанная (напрямую) с циклом основного виндового окна клиента - будет фоновой :crash:
мосх виндовс прогерра - он такой...
 
D

D!m@n

фоновый агент это агент отрабатывающийся на сервере, у сервера воркспейса нету - лишь текстовая консолька оттого такие агенты на сервере никогда не запустятся, отого я и не согласен с лихим переводом и натягиванием background client thread как "фоновый агент" правильно его так и называть как его вам переводит лингво, с чётким указанием, что КЛИЕНТСКИЙ
nvy Вам правильно ответил:
Серверный — это агент, исполняющийся на сервере. Фоновый — это агент, исполняющийся в фоновом, т.е. не основном потоке. Речь здесь об агенте, исполняющемся в фоновом клиентском потоке (background client thread), и о том, что вопреки утверждения IBM, некоторые уи-методы в нём доступны.
Тут и добавить нечего.

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

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
ToxaRat, ну перепутали, с кем не бывает... но зачем спорить-то, за слова цепляться?..
я не спорю, я уточняю :(
мне вот дальше интересней а применение этой фичи чем вообще хорошо?
и чем она лучше того-то таймера?

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

nvyush

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

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
43a6cfc64e27.jpg

вот о каких ограничениях я говорю, если кто не понял
 
D

D!m@n

В лёгкую. Почитав сию тему, попробовал агентику, экспортирующий данные из Лотус-базы в файл, поставить эту замечательную галку "Run in background client thread". В начале агента пользователю открывается ws.SaveFileDialog для указания файла экспорта. Так вот, диалог открылся, но вот ввести имя файла и нажать ОК не получилось — максимум можно было таскать окно диалога по экрану. Пришлось тушить клиента (8.0.1 en на WinXP). Другие диалоги пока не пробовал.
Буквально в пятницу ввел в действие аналогичного агента. У меня клиент, как я уже говорил, 8.5.2 эклипснутый, у юзеров - 8.5.1 Basic. И у меня, и у них диалоги работают... B)

Добавлено:
43a6cfc64e27.jpg

вот о каких ограничениях я говорю, если кто не понял
Это попытка запустить 2-х бэкграундных агентов параллельно на одном клиенте?..
 
O

Omh

вот о каких ограничениях я говорю, если кто не понял
Ну так это скорее всего попытка показать ws.DialogBox.
DialogBox, да - не работает, но все промты, пиклисты и прочие сейвфайлдиалоги - работают.
Почти всегда их хватает.
 
Мы в соцсетях:

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