Запустить агент из другой базы

  • Автор темы SlavaRahmatov
  • Дата начала
S

SlavaRahmatov

#1
Всем добрый день.
Как, находясь в одной базе запустить(выполнить) агент из другой базы.

На данный момент сделано так: агент, библиотека, нужные формы и представления скопированы из исходной базы в текущую, опробован запуск-работает, но планируется запускать этот агент и с других баз тоже, (это Агент для создания отчетов), боюсь, что потом будет труднее остлеживать изменения.

Какой может быть принцип(алгоритм) для решения этой задачи?!
С помощью LS открыть базу (Set db) и выполнить запуск агента из db?
Lotus 7.2
Какие комманды для этого использовать?
 

hosm

* so what *
18.05.2009
2 442
6
#2
С помощью LS открыть базу (Set db) и выполнить запуск агента из db?
Lotus 7.2
Какие команды для этого использовать?
примерно так:
Код:
Dim ag as NotesAgent
Set ag = db.GetAgent("имя")
if not ag is Nothing then
call ag.Run ' или ag.RunonServer - если надо запускать на сервере
end if
 

alik86

Lotus team
20.11.2008
465
1
#3
Дизайнерский хелп. Находим NotesAgent class и изучаем (особое внимание обращаем на методы Run и RunOnServer), смотрим примеры.

Код:
'Examples: RunOnServer method 
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim agent As NotesAgent
Set db = s.CurrentDatabase '<- тут указываете не текущую базу, а нужную вам 
Set agent = db.GetAgent("Agent to be run LotusScript")
If agent.RunOnServer = 0 Then
Messagebox "Agent ran",, "Success"
Else
Messagebox "Agent did not run",, "Failure"
End If
End Sub
 
S

SlavaRahmatov

#4
Код:
 Set db = s.CurrentDatabase '<- тут указываете не текущую базу, а нужную вам
А как это сделать?

Ведь
Set db = s.CurrentDatabase использует текущую базу, и написав например
Set db = s.Mybase.nsf
получится глупость.

Если я правильно понял, то нужную базу можно ОТКРЫТЬ примерно так? (см. ниже)
Или как то иначе ?
Код:
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Call workspace.OpenDatabase _
( "Algiers", "new\plan", "All by Category", _
"Current", False, False )
End Sub
Как правильно присвоить db другую базу(не открывая в окне для работы) ?
 

nvyush

Lotus team
22.04.2009
2 317
0
#5
См. в справке
Set notesDatabase = notesSession.GetDatabase( server$, dbfile$ [, createonfail ] )
flag = notesDatabase.OpenByReplicaID( server$, replicaID$ )
 
S

SlavaRahmatov

#7
См. в справке
Set notesDatabase = notesSession.GetDatabase( server$, dbfile$ [, createonfail ] )
flag = notesDatabase.OpenByReplicaID( server$, replicaID$ )
А для чего нужно flag = notesDatabase.OpenByReplicaID( server$, replicaID$ ) ?

За 10 минут с Вашей сделал то что хотел.
Заработало, даже сам не ожидал что ТАК будет!
Большое спасибо.
 
S

SlavaRahmatov

#9
Вам же написали:У вас какие-то сложности с открытием хелпа дизайнера?
Нет, скорее с внимательностью :)
Просто так обрадовался (я раньше скриптами почти не пользовался- боялся), что аж...
А в хелпе действительно все очень ХОРОШО описано.