Вывод Deletion Stub во взгляд?

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

  1. puks

    puks Lotus team
    Lotus team

    Регистрация:
    3 фев 2007
    Сообщения:
    1.967
    Симпатии:
    16
    Сразу уточню, что речь не идет о восстановлении удаленного документа в целом. Задача заклюается в следующем.

    Есть в базе удаленные документы и можно без проблем найти нужный документ по его UNID и посмотреть дату его удаления при помощи NotesPeek или ScanEz. Но для этого этот софт должен быть установлен и люди должны уметь с ним работать.

    Соответственно, появился вопрос: "Возможно ли сделать агента, чтобы пройтись по базе и преобразовать эти стабы в обычные документы с сохранением информации, которую стаб имеет?". Тогда эти документы можно было бы вывести в обычный взгляд.
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
  3. puks

    puks Lotus team
    Lotus team

    Регистрация:
    3 фев 2007
    Сообщения:
    1.967
    Симпатии:
    16
    nvy
    Ну это уже что-то для начала. Чего же Костя-то молчал, как партизан? :)
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    эти доки можно найти через set col = db.alldocuments - по флагу is deleted
    но на мой взгялд правильнее было бы создать событие на удалении и помещать их в свою "корзину" чем гемороиться с постфактом
     
  5. puks

    puks Lotus team
    Lotus team

    Регистрация:
    3 фев 2007
    Сообщения:
    1.967
    Симпатии:
    16
    ToxaRat
    Есть условия, кторые мы изменить не можем. Как-то, исходная база с удаленными документами и неизменным дизайном у заказчика. Мы можем (и хотим) все что угодно делать с полученной от заказчика базой. Особенно, хочется вывести все стабы, чтобы не было необходимости в другом софте типа пика. Фактически, от стаба надо только UNID, NoteID and DeletedTime.
     
  6. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    1) создай другую базу
    2) в ней агентом проходись и копируй внутрь доки
    3) с указанием оригинального UNIDа потом береёшь из єтой базы доки и сравниваешь какой удалён
    4) копии кидаешь в папку - Удалённые

    Как результат базу оригинал лишь дёргаешь на предмет чтения доков и ничего в ней не меняешь

    аналогично можно создать реплику оригинала без репликации стабов и опять таки напилить агент в другой базе
     
  7. puks

    puks Lotus team
    Lotus team

    Регистрация:
    3 фев 2007
    Сообщения:
    1.967
    Симпатии:
    16
    Вроде получается достучаться и забрать UNID.

    А Deletion Time пока никак.
     
  8. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    бери последнюю дату модификации
     
  9. puks

    puks Lotus team
    Lotus team

    Регистрация:
    3 фев 2007
    Сообщения:
    1.967
    Симпатии:
    16
    ToxaRat
    Вроде, alldocuments не возвращает стабов.

    Это-то понятно. Вроде получилось. Просто со временными значениями пришлось разбираться как в API работать.
     
  10. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    возвращает тебе даже доки, которые ты не имеешь право видеть :)

    имеено db.alldocuments.Count и есть то число, которое в свойстве базы показывает сколько там доков
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Всегда считал, что это число неудалённых документов. Согласен, что db.alldocuments может вернуть удалённый документ, но, кмк, только в случае, когда его удалил кто-то другой уже после открытия коллекции.
     
  12. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    тоже так думал раньше
    но как показывает практика серверный агент умудряется находить доки удалённый очень давно
    конечно фикс и компакт помогает временно решить эту проблему
    но везде пришлось лепить проверки на isValid & isDeleted

    что-то у IBM там не всё гладко с db.alldocuments
     
  13. puks

    puks Lotus team
    Lotus team

    Регистрация:
    3 фев 2007
    Сообщения:
    1.967
    Симпатии:
    16
    Может он, конечно, иногда и возвращает, но периодически. Я на тестовой базе ни разу не получил удаленных. Поэтому этот метод не прокатил. Я все сделал через вызовы C API.
     
Загрузка...

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