Агент и права доступа к БД

Тема в разделе "Lotus - Программирование", создана пользователем Oksana, 5 авг 2008.

  1. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    Добрый день!

    Есть две БД. К первой БД у пользователя права доступа - автор, ко второй читатель.

    Пользователь создает (изменяет) документ в первой БД, эти измения влекут за собой изменеия во второй БД, к которой у пользователя права читателя.

    Делаю это агентом, в параметрах агента ставлю выполнять от имени сервера (у сервера к БД права менеджера), тем не менее выскакивает ошибка вы не аторизованы на выполнение операции.

    Как правильно реальзовать эту задачу?
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Нужно подписать сервером или пользователем с правами.
     
  3. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    Агент подписан мной, у меня полные админские права.
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Как запускается агент? Нужно запускать на сервере методом notesAgent.RunOnServer.
     
  5. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    раньше не использовала, туплю-с... :)
    скопировала из хелпа код, подставила имя своего агента, выдает Success, но фактически ни чего не происходит.

    1. This agent runs the agent named "Agent to be run LotusScript."
    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
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А что должно быть?
     
  7. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    ну дак результат работы агента, в частности должны быть изменены несколько полей в док-те в той БД что у пользователя права читателя, а текущий документ должен изменить статус.
     
  8. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    В этом случае нужно вызывать метод с параметром RunOnServer([noteID$]). В агенте получить нужный документ и обработать его. Посмотри в хелпе, там пример есть.
     
  9. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    так я именно этот пример из хелпа и использовала :)
    чем дальше, тем меньше понимаю :D
     
  10. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    В хелпе два примера. Смотри второй.
     
  11. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    Спасибо, получилось :rolleyes:
    Честно скажу, до конца еще не осознала как :)
    у меня впереди еще несколько подобных агентов :rolleyes:
     
  12. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Ты где агент запускала? На станции? Тогда он выполняется с твоими правами (кем-бы он не был подписан). Права подписанта (и того, "от чьего имени") начинают играть при запуске агента на сервере, т.е. по расписанию/по new or modified/и - agent.RunOnServer
     
  13. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    У меня все получилось тем способом, что подсказал Medevic. На рабочих местах пользователей агент работает. Спасибо ^_^
     
Загрузка...

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