Поиск вьюшек без индекса

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

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Здравствуйте,

    Помогите решить задачку.
    Есть 5 баз по одному и тому же шаблону. В этом шаблоне, внимание, 1120 вьюшек.
    Посмотрел, в самой крупной базе 66% вьюшек не имеют индекса, значит скорее всего они просто никому не надо и было бы неплохо их удалить.
    Но что делать если в одной базе вьюшка не нада, а во второй нужна.

    Решил сделать xls отчет, что если в пяти базах индексы пусты, то будем удалять вьюшку.
    Как бы это оптимизировать чтобы меньше заполнять руками?

    Допустим список всех вьюшек я выгружу спокойно, а как выгрузить есть ли индекс?
    Не хочется 1120*5 ячеек заполнять вручную смотрев таблицу из Администратора.

    Спасибо.
     
  2. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    А нафига? Не используются и хрен с ними - они тогда ни на что не влияют (кроме эстетики). А "лишних" 1120 доков (а вьюшки, это просто спец доки) в нотусе - ничто.
     
  3. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Стоит задача в наведении порядка после горе-разработчиков.
    Сначала было решено начать с вьюшек.
    Первый шаг удалить вьюшки без индексов, а это 66%.
    А потом и остальные просмотреть и посечь многих, все-таки легче просматривать 300 вьюшек, нежели 1100
    [DOUBLEPOST=1433500544,1433500435][/DOUBLEPOST]да и при будущей разработке найти нужную вьюшку будет полегче , нежели в этом мусоре
     
  4. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    ну плодовитые программеры однако)))
    Можно сделать так - написать скрипт, который выгрузит в DXL весь дизайн без вьюх,
    потом в цикле берем имена вьюх и ищем их упоминание в этом DXL - поймем. есть ли программное обращение к ним. если нет - грохаем.
    останется по требованию юзверей добавлять вьюхи, которым им стало так не хватать в шаблон)
     
    2 пользователям это понравилось.
  5. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    :) Не эт не плодовитые. Эт ленивые.
    Просили изменить логику - писали под неё вьюшку, а старые не трогали - "вдруг понадобится"
    Известный эффект отсутствия комментариев о зависимостях дизайнэлементов.
     
  6. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    514
    Симпатии:
    13
    вьюхи могут дергаться из других бд
     
  7. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    о , а вот это идея мне очень нравится. Но ее все равно надо будет сравнивать с наличием индексов. В самой базе очень много различной навигации.
    Хотя.....хотя .......Программное обращение же включает и аутлайны где и будут эти вьюшки если они включены в навигацию.

    Появился сразу же вопрос как выгрузить в DXL все кроме вьюшек.... ох давно я не пользовался DXL....

    Хотя вот что-то нашел, пример как выгрузить только агенты:
    Код (Text):
    Sub Initialize
     
        'This agent is designed to export the specified design elements to .dxl (.xml in Notes).
     
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim nc As NotesNoteCollection
    Dim stream As NotesStream
    Dim exporter As NotesDXLExporter
    Const filename = "c:\filename.xml" 'Change as required
     
    Set db = session.CurrentDatabase
     
    Set stream = session.CreateStream
    Call stream.Open(filename)
    Call stream.Truncate
     
    Set nc = db.CreateNoteCollection(False)
    nc.SelectAgents=True 'Change as required
    Call nc.BuildCollection
     
    Set exporter = session.CreateDXLExporter(nc, stream)
    Call exporter.Process
    End Sub
    Я так понимаю в моем случае надо SelectAllNotes(), а потом SelectViews = False
    Правильно?

    Если это прокатит, то мы примерно и удалим как минимум эти 66% вьюшек и особо нам эти индексы и не надо рассматривать.

    Подскажите, где может быть промах?
     
  8. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    514
    Симпатии:
    13
    не проверял, но может быть это
     
  9. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Спасибо за наводку, надо будет уточнять этот вопрос
     
  10. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    514
    Симпатии:
    13
    еще как вариант дергать консоль
     
  11. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Подскажите, вот я выгрузил в файлик весь дизайн кроме вьюшек .
    Как более правильно теперь проверить, встречается ли где-то вьюшка с именем, например, "ViewName_1" ?

    Код (Text):
    Dim stream As NotesStream
    Set stream = session.CreateStream
    path = "c:\dxl\"
    filename = Left(db.FileName, Len(db.FileName) - 3) & "dxl"
    filename = path$ & filename$
    If Not stream.Open(filename$) Then
    MessageBox "Cannot open " & filename$,, "Error"
    Exit Sub
    End If
    Call stream.Truncate
     
    REM Create note collection
    Dim nc As NotesNoteCollection
    Set nc = db.CreateNoteCollection(False)
    Call nc.SelectAllNotes(True)
    nc.Selectviews = False
    Call nc.BuildCollection
     
    REM Export note collection as DXL
    Dim exporter As NotesDXLExporter
    Set exporter = session.CreateDXLExporter(nc, stream)
    Call exporter.Process
     
  12. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    Ты же текст в файл получил? Да хоть в нотепаде сёрчь запузырь.
     
  13. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    надо в LS, 1100 вьюшек в нотепаде это не дело

    Код (Text):
    views = db.Views
    ForAll v In views
     
    ??????
     
    End ForAll
     
  14. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    Код (LotusScript):
    text$ = notesStream.ReadText( [ oneLine& ] , [ eol& ] )
    а потом like
     
  15. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Спасибо.
    Лайком никогда не пользовался, думал Instr какой-н. Но боюсь что будут какие-н ограничения по кол-ву символов. У меня размер файла 25.3мб

    Скажите,

    Код (Text):
    Dim vText As Variant
     
    vText = stream.ReadText()
     
    ForAll v In views
     
     
    'Is Used?
      If vText Like "*" & v.Name & "*" Then
      aRange( iLineCounter, iColumn ) = "Yes"
      Else
      aRange( iLineCounter, iColumn ) = "No"
      End If
     
    End ForAll
     
    Что-то мне подсказывает что я Like так никогда и не научусь пользоваться.
    Правильно ли он задан?
    Тут такая ситуация, что если у нас есть вьюшка "View_1" и "View_11". А используется только вторая то данный Like покажет что и первая используется. Поэтому может надо
    Код (Text):
    vText Like {*"} & v.Name & {"*}
    Спасибо.
     
  16. Shandrik

    Shandrik Well-Known Member

    Регистрация:
    30 дек 2010
    Сообщения:
    236
    Симпатии:
    24
    Имя вьюхи в коде запросто может быть составным, особенно учитывая упомянутую ViewName_1.
    Например, дробление по последнему символу UNID-а документа получим 16 вьюшек, и ни одна из них не будет явно указана в коде.
     
  17. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Ну ,я думаю, что если и будет где-то неявно задана, то при наличии вьюх таких как "View_1", "View_2"...... и т.д. Думаю что в данном случае перед удалением можно будет проверить вручную такие варианты.

    Все остальные скрытые вьюхи добавим при возникновении проблем
     
  18. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Вот я тоже думал что для эстетики... Но как оказалось, после любого изменения документа(создание, редактирование) происходит перестроение всех связанных вьюшек. Т.е. каждую минуту может перестраиваться более сотни вьюшек что забивает сервак.... Как-то так.

    Так же подсказали что если индекс = 0 - это не означает что она не используется, если колонки не отсортированы, то и индексы не строятся. Как-то так...... Т.е. к индексам особо не привяжешься
     
Загрузка...

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