1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

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

  1. Kizarek86

    Kizarek86 Well-Known Member
    Lotus team

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

    abbatik Well-Known Member
    Lotus team

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

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

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

    Kizarek86 Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    860
    Симпатии:
    6
    Код:
    	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

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

    abbatik Well-Known Member
    Lotus team

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

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

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

    abbatik Well-Known Member
    Lotus team

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

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

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

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

    Kizarek86 Well-Known Member
    Lotus team

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

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

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

    abbatik Well-Known Member
    Lotus team

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

    Kizarek86 Well-Known Member
    Lotus team

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

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

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

    Kizarek86 Well-Known Member
    Lotus team

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

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

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

    abbatik Well-Known Member
    Lotus team

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

    Код:
    	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 Well-Known Member
    Lotus team

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

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

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

    abbatik Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Пусть на кнопочку f9 нажмет в лотусе, или f5 в браузере :(
     
Загрузка...
Похожие Темы - Обновление индекса базы
  1. DNT
    Ответов:
    15
    Просмотров:
    6.170
  2. anna
    Ответов:
    0
    Просмотров:
    33
  3. Max40
    Ответов:
    17
    Просмотров:
    303
  4. Hehabr
    Ответов:
    0
    Просмотров:
    230
  5. midnight__spark
    Ответов:
    23
    Просмотров:
    972

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