Background

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

Guest

Привет!!!

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

Спсасибо огромное!!!
 
А если на собаках не подходит? Если надо только по NotesAgent.Run(agentName$)?

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

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

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

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

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

Разве в бэкграунде будут работать UI-методы?
Каким образом будет производиться обновление текущего дока "по мере поступления информации"?
 
В хелпе написано, шо не должно.
Че-то мне кажется, что нас пытаются обмануть... О-оо-мх, а ну выхади :)
ну, вообще-то можно если осторожно...
(только для Win).

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

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

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

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

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

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

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