Обновление индекса базы.

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

  1. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Возможно ли программно обновить индекс всех представлений для пользователей у которых нет прав на обновление? кстати как определяются данные права? В настройка на сервере или по уровню доступа?
     
  2. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Можно написать агент, и подписать его сервером.
    А дальше либо по расписанию его запускать, либо пользователь может запускать агент, который будет инициировать запуск агента от имени сервера.
     
  3. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А что в агенте?
     
  4. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Код (Text):
        Dim views As Variant   
    Set db = session.CurrentDatabase
    views = db.Views
    Forall v In views
    Set View=v
    Call View.Refresh
    End Forall
    например)
     
  5. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    И что будет? :)
     
  6. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Код (Text):
        Forall v In db.Views
    Call v.Refresh ()
    End Forall
    Перестроит индексы видов, для их быстрого открытия, при наличии в базе большого кол-ва документов.
     
  7. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Не перестроит.
    Кстати, я вопрос правильно понимаю? Что нужно перестроить индексы, а не обновить. Т.к. первое действительно требует прав.
    И речь идет не про FT-индекс?
     
  8. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Вы в праве конечно так думать, только я вам привожу пример рабочего кода, который это делает :)
    Индекс видов конечно же он обновляет.

    Для обновления FT индекса есть метод БД UpdateFTIndex.
     
  9. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Всё-таки непонятно.
    Обновление индексов происходит периодически и автоматически(если не задали другие настройки).
    Перестроение индексов этот код не делает.
    Тогда зачем он?
     
  10. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Ситуация такая, есть база, в которою из Excel загружаются данные, доступ к данным идет через портал. Как сразу после загрузки данных сделать чтобы на портале отобразилась корректная информация. Отображается она в представлении, следовательно нужно обновить данное представление) я правильно понимаю?)
     
  11. Medevic

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

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

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Смотри.
    1. Получается, что индекс вида хранится на сервере (соответсвенно вида, хранящегося на сервере). И агент рефрешит именно этот серверный вид, т.е. перестраивает его серверный индекс.
    2. FT индекс к этому индексу отношения не имеет.
     
  13. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Обновляет, данные обновляются только после обновления индекса.
     
  14. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Так может проблема в кэше?
     
  15. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    У пользователя которые загружает данные нету прав на создание индекса) нужно обновить от имени другого пользователя)
    Об этом и речь)
    Нешедульный агент можно запустить от имени кого то другого?)))
     
  16. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Почему ты решил, что прав нет?
     
  17. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Можно :)

    Код (Text):
        Const AgentName = <имя агента>

    Dim ses As New NotesSession
    Dim db As NotesDatabase


    Set db = ses.CurrentDatabase
    Set agent = db.GetAgent(AgentName)

    If agent Is Nothing Then
    Messagebox "Agent '" + AgentName + "' not found", 16, "Failure"
    Else
    If agent.RunOnServer = 0 Then
    Messagebox "Agent '" + AgentName + "' ran", 64, "Success"
    Else
    Messagebox "Agent '" + AgentName + "' did not run", 16, "Failure"
    End If
    End If
     
  18. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Medevic
    Кнопичка "обновить индекс" у юзера неактивна.
     
  19. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Эта кнопочка обновляет FT-индекс, который не влияет на видимость информации. Только на поиск.
     
  20. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Пусть на кнопочку f9 нажмет в лотусе, или f5 в браузере :(
     
Загрузка...

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