Агенты

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

  1. Hedg

    Hedg Гость

    В агентах не силён, так как никогда ещё не пользовался.

    Возник вопрос, пользователи имет статус Reader но должны иметь возможность изменить занчения нескольких полей. Что бы не котролировать список полей на доступ и не давать автора пришла в голову идея использовать агент. Соотетственно вопрос, можно ли выполнить агент а режиме просмотра документа или это уже UI (соответственно агент не пашут), если да то как указать агенту изменить текущий документ.
     
  2. Fossil Code

    Fossil Code Гость

    Верно, если агент выполняется на сервере, то он может выполняться с правами дизайнера или самого сервера. Агенты работают и в режиме просмотра, и UI, только они изменяют "бэкенд" документа, док. придется пересохранять и обновлять передний план, т.е. UI. Агенту не нужно ничего указывать, его нужно вызвать по кнопке из самого документа, т.е. явно вызывать агента, когда требуется редактирование. Если имелось в виду, "как из агента получить доступ к текущему документу", то есть такая метода в скрипте:
    Collecting all documents and all unprocessed documents, см. хелп дизайнера, первый необработанный и есть текущий.
     
  3. Hedg

    Hedg Гость

    А можно поподробнее про Unprocessed статус документа, а то что-то мои знания английского меня подводят, не могу никак понять я этого в хелпе.
    Ещё вопрос если из вью открыт на просмотр документ(любой т.е не первый и не последний) то при создании колекции Unprocessed документов он будет первый???
     
  4. Fossil Code

    Fossil Code Гость

    Это способ получить доступ к коллекции документов вида. Если ни один из них не выбран, то единственный документ в коллекции будет текущий, на котором кликнули в виде. Если выбрано несколько, то коллекция их и содержит. Называется так потому, что в основном используется в агентах для получения списка документов, которые следует обработать. Вот пример из хелпа, который выбирает из вида текущий или все выбранные документы и проставляет им статус по условию.

    Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set collection = db.UnprocessedDocuments
    Set doc = collection.GetFirstDocument()
    While Not(doc Is Nothing)
    Set item = doc.GetFirstItem( "Approver" )
    If item.Contains( session.UserName ) Then
    doc.Approved = "Yes"
    Call doc.Save( False, True )
    End If
    Set doc = collection.GetNextDocument(doc)
    Wend
    End Sub
     
  5. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Тоже есть глупый вопрос по агентам: а как указать агенту, от имени какой учетки он будет работать на сервере?
     
  6. Hedg

    Hedg Гость

    Для: LuMee
    В свойствах агента выставляется, в последней вкладке от имени кого он будет работать.

    Для: Fossil Code
    А если агент запускается из открытого дока в режиме просмотра?? он будет единственнным в коллекции?
     
  7. Fossil Code

    Fossil Code Гость

    А если из открытого документа, то... да.
     
  8. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    До 6-ки - никак. Фоновый агент работает от имени своего автора.
    В 6-ке появилась возможность запускать агент от чужого имени. Но на это надо получить особые права
     
  9. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Забыл в свое время отписаться: не нашел я ничего похожего в свойствах агента. На последней вкладке только всякие ID, редактировать нечего. Кстати, у меня Лотус 5
     
  10. Elena Nefedova

    Elena Nefedova Гость

    Для: Hedg
    Почему бы не использовать в нужных формах флаг
    "Available to Public Access Users" и сделать описанные в хелпе добавления к формам?
    А нужным пользователям просто дать право на редактирование публичных документов.
    Примечание: после включения этого флага в св-вах формы надо в ранее созданные документы добавить поле $PublicAccess="1"
     
  11. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Гм.. В исходной постановке требовалось обеспечить доступ к некоторым полям, а не всему документу. Если, конечно, я правильно понял автора
     
  12. Elena Nefedova

    Elena Nefedova Гость

    Для: Constantin A Chervonenko
    Ну, учитывая, что доступ Reader не предполагает возможности создания собственных форм, что существуют разделы с управляемым доступом, и что не обязательно всем разрешать создание агентов, можно и ограничить доступ к полям документа :lol:
     
  13. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    ... в ЭТОЙ базе. А в соседних? А SmartIcon? Не.. если действительно речь идет о защите.
     
  14. Elena Nefedova

    Elena Nefedova Гость

    Для: Constantin A Chervonenko
    <!--QuoteBegin-Constantin A Chervonenko+12:03:2007, 23:55 -->
    <span class="vbquote">(Constantin A Chervonenko @ 12:03:2007, 23:55 )</span><!--QuoteEBegin-->... в ЭТОЙ базе. А в соседних? А SmartIcon? Не.. если действительно речь идет о защите.
    [snapback]58826" rel="nofollow" target="_blank[/snapback]​
    [/quote]В общем, да - "соседние" базы не обязательно подконтрольны менеджеру текущей.
    Опять мы возвращаемся к вашей старой мудрости, что "надо лучше проектировать" :)
    Ну, а раз не спроектировали лучше, то обходим препятствия в зависимости от текущих потребностей безопасности :p
     
  15. Hedg

    Hedg Гость

    Пытаюсь из QuerySave запустить агента
    Код (Text):
    .................
    If Len(doc.FieldGetText("RunAgent"))=1 Then
    Set agent = db.GetAgent("AuthorClear")
    Call agent.RunOnServer
    End If
    И не получается, пишет Notes error: Unsupported trigger and search in thr background or embedded agent
     
  16. Hedg

    Hedg Гость

    Решил пока проблему используя шедулер, но там минимальное время срабатывания 5 минут, никак нельзя сделать меньше???
     
  17. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Hedg
    Поставь Never.
     
  18. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Можно, в администраторе в документе сервера, закладка Notes.ini Settings
    поиграйтесь с AMGR_ xxxx так точно не помню какой параметр, там подсказки есть, помню шо по дефолту - 30 минут
     
  19. Hedg

    Hedg Гость

    Для: Medevic
    А как тогда он работаь будет??? Какие условия его срабатывания???
     
  20. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Hedg+19:03:2007, 17:07 -->
    <span class="vbquote">(Hedg @ 19:03:2007, 17:07 )</span><!--QuoteEBegin-->А как тогда он работаь будет??? Какие условия его срабатывания???
    [snapback]59479" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Шедульный агент. Время срабатывания - never. Цель - все документы.
    Запускаешь методом RunOnServer. В параметрах указываешь NoteID текущего документа.
    В агенте получаешь этот документ методом: notesDatabase.GetDocumentByID(notesAgent.ParameterDocID)

    И обрабатываешь его.
     
Загрузка...

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