Не выполняется агент

Тема в разделе "Lotus - Программирование", создана пользователем fvoice, 3 сен 2007.

  1. fvoice

    fvoice Гость

    Создал агента, Shared, Trigger - On Sheldue, Run on behalf of - указал себя, Runtime security - 3, Default Access - All Readers and Above, в теле использую NotesSession и NotesDocumentCollection.

    В результате агент должен удалить помеченные документы из БД.

    Когда агент запускаю я он срабатывает и удаляет документы, а когда кто-то другой, документы не удаляются, хотя:
    Код (Text):
    If Agent.Run = 0 Then
    Print "Agent DelMarkedDocs run"
    Else
    Print "Agent DelMarkedDocs did not run"
    End If
    выводит "Agent DelMarkedDocs run"

    Тело:
    Код (Text):
        Dim s As New NotesSession
    Dim dc As NotesDocumentCollection

    Set dc = s.CurrentDatabase.Search({form = "Deleted"},Nothing,0)

    Call dc.RemoveAll(True)
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А ты имеешь право подписывать Run on behalf of агенты? Обычно при сохранении выдается предупреждение. Или нажми "Test" в списке агентов.
     
  3. K-Fire

    K-Fire Гость

    Так агент по расписанию выполняется, или его запускает руками юзер?
    Если по расписанию - добавь в тело агента месседжбокс, лучше даже 2, типа что "агент запущен", "агент закончил работу". И смотри лог потом.

    Если он не запускается вообще - то может быть такая проблема: в момент времени должно запускаться больше агентов чем на сервере запущено агент менеджеров, в результате какие-то агенты просто не стартуют. Надо либо поменять время первого запуска - например поставить не 7:00 а 7:24, или на сервере больше агент менеджеров пускать.
     
  4. D!m@n

    D!m@n Гость

    Очевидно, что агент запускается, но на удаление документов прав ему почему-то не хватает...
     
  5. fvoice

    fvoice Гость

    Да имею, тест проходит нормально.

    Для: K-Fire
    Посмотрел лог, пишет "You are not authorized to perform this operation"

    Как сделать что бы пользователь мог удалить документы, если у него нет на это прав, посредством запуска подписанного агента?
     
  6. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: fvoice
    Для верности подпиши сервером. И убери Run on behalf.
     
  7. fvoice

    fvoice Гость

    Для: Medevic
    А как подписать сервером?
     
  8. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: fvoice
    Запускаешь Администратор, ищешь базу и подписываешь. :)
     
  9. fvoice

    fvoice Гость

    убрал Run on behalf, подписал, та же печенька вылазит :)

    "You are not authorized to perform this operation"

    сделал запуск от имени сервера, не помогает..
     
  10. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: fvoice
    В ACL у сервера, которым подписал, необходимые права есть?
     
  11. fvoice

    fvoice Гость

    Для: Medevic
    Да для этой БД, право удалаять документы есть только у меня и у сервера, остальные же пользователи не могут удалять документы.

    Еще кое что: когда агент запускается по расписанию он без затруднений удаляет доки, может что то я не правильно в свойствах проставил?
     
  12. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: fvoice
    Запускай методом notesAgent.RunOnServer.
     
  13. fvoice

    fvoice Гость

    Для: Medevic
    Спасибо, теперь работает! +1

    Если не тяжело что означает noteID$ в параметрах RunOnServer (Инглиш знаю, просто не пойму?
     
  14. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-fvoice+3:09:2007, 15:38 -->
    <span class="vbquote">(fvoice @ 3:09:2007, 15:38 )</span><!--QuoteEBegin-->Если не тяжело что означает noteID$ в параметрах RunOnServer (Инглиш знаю, просто не пойму?
    [snapback]77111" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    NoteID документа (notesDocument.NoteID). Потом в агенте можно получить этот документ методом notesDatabase.GetDocumentByID.
     
Загрузка...

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