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

Тема в разделе "Lotus - Программирование", создана пользователем SlavaRahmatov, 22 апр 2011.

  1. SlavaRahmatov

    SlavaRahmatov Гость

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

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

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    примерно так:
    Код (Text):
    Dim ag as NotesAgent
    Set ag = db.GetAgent("имя")
    if not ag is Nothing then
    call ag.Run ' или ag.RunonServer - если надо запускать на сервере
    end if
     
  3. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Дизайнерский хелп. Находим NotesAgent class и изучаем (особое внимание обращаем на методы Run и RunOnServer), смотрим примеры.

    Код (Text):
    '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
     
  4. SlavaRahmatov

    SlavaRahmatov Гость

    А как это сделать?

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

    Если я правильно понял, то нужную базу можно ОТКРЫТЬ примерно так? (см. ниже)
    Или как то иначе ?
    Код (Text):
    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 другую базу(не открывая в окне для работы) ?
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    См. в справке
    Set notesDatabase = notesSession.GetDatabase( server$, dbfile$ [, createonfail ] )
    flag = notesDatabase.OpenByReplicaID( server$, replicaID$ )
     
  6. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Set notesDatabase = notesSession.GetDatabase( server$, dbfile$ [, createonfail ] )
     
  7. SlavaRahmatov

    SlavaRahmatov Гость

    А для чего нужно flag = notesDatabase.OpenByReplicaID( server$, replicaID$ ) ?

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

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Вам же написали:
    У вас какие-то сложности с открытием хелпа дизайнера?
     
  9. SlavaRahmatov

    SlavaRahmatov Гость

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

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