• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Background

  • Автор темы Guest
  • Дата начала
G

Guest

Привет!!!

Кто знает как можно запустить агент в background режме?
 
O

Omh

Привет!!! :)
Поставить галку в пропертях агента "Run in background client thread" (на первой закладке)
И шмальнуть на собаках или из меню "Actions"
Всё это начиная с 6-ки.
 
G

Guest

Что то сразу не заметил это свойство :)

Спсасибо огромное!!!
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
80
А если на собаках не подходит? Если надо только по NotesAgent.Run(agentName$)?

Ну или...
Можно ли сделать кнопку, на ней посадить собачный вызов агента, а потом программно из LS инициировать нажание кнопки?
 
T

TIA

Из LS:
1. создаёте форму, у которой в PO Call source.Close, а на QC @Command([ToolsRunMacro];<поле с именем агента>)
2. если не надо чтоб агент отображался в меню, программно заключите имя агента в скобки (поле $Title)
3. для запуска агента создайте вспомогательный документ, поместите в него имя агента и имя формы из п.1
4. ws.EditDocument этому документу

Вспомогательная форма откроется и закроется, а агент продолжит работу.

Развитие идеи: Иметь одного агента запускающего любой код в фоне.
Для чего передать агенту имя библиотеки, класса и метода для запуска.
Агентом Execute нужной библиотеки и метода.
 
O

Omh

Вообще, бекграуд агенты классная штука.
Меня очень радуют.

Можно сделать жалкое(?) подобие AJAX - подгружать данные на лету...
 
O

Omh

Ну например в форме на PO шмаляем бекграунд агента на собаках.
В самом начале агента ловим текущий док:
Код:
Dim ws As New NotesUIWorkspace
Dim uiDoc As NotesUiDocument
Dim Doc As NotesDocument
Set uiDoc = ws.CurrentDocument
Set Doc = uiDoc.Document

Дальше агент собирает тяжёлую информацию, допустим по базам ближлежащим и постепенно постит её в документа.
Получается кагбэ асинхронная подгрузка информации :)
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
80
Это уже есть и работает или идея?

Разве в бэкграунде будут работать UI-методы?
Каким образом будет производиться обновление текущего дока "по мере поступления информации"?
 

duchan

Green Team
20.09.2006
127
11
BIT
112
В хелпе написано, шо не должно.
Че-то мне кажется, что нас пытаются обмануть... О-оо-мх, а ну выхади :)
ну, вообще-то можно если осторожно...
(только для Win).

НО! если из backend'а лезть в UI, то можно легко уронить клиент, например когда пользователь откроет какой-либо диалог...
{теоризируя :) } лучше что бы UI сам брал информацию, возможно по мере сбора инфы backend агентом, котротый ее куда сохраняет. например можно использовать очереди...
 
O

Omh

Ща, чуть подразгребу работу и в течении часа выложу прототипчик базы, где это работает.
 
O

Omh

link removed
Вот прототипчик.
Что делает: на открытие документа запускается агент, который заполняет этот самый документ.
Можно открыть сразу несколько доков, будут заполнятся несколько параллельно.

ПсевдоАджакс в массы :newconfus:

Жду отзывов!!!

Там без всяких мега проверок, просто концепт.
 
D

divankin

Вот прототипчик.
Что делает: на открытие документа запускается агент, который заполняет этот самый документ.
Можно открыть сразу несколько доков, будут заполнятся несколько параллельно.

Жду отзывов!!!

То есть промышленно вы этот метод еще не применяете? Мне лично боязно так вольно обращаться с UI объектами в силу их некоторой неустойчивости.
 
O

Omh

У меня в некоторых базах применяется.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
80
Omh
Толково! Теперь только придумать, где это можно использовать...)
 
D

Darker

Мы применяем фоновые агенты при сохранении документа, так как в QC многое что происходит, а юзер жалуется, что долго сохраняется
 
O

Omh

И ещё, там UI объекты не задействованы:
В самом начала агента ловится NotesDocument от ws.CurrentDocument и вся инфа постится в него.
Т.е. никаких UiDoc.SetЧто-тоТам, всё через бекграунд объекты, поэтому можно лазить по другим документам/базам, а наш инициированый документ будет заполнятся сам по себе :newconfus:
 
Мы в соцсетях:

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