Cобытие сохранения документа

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

  1. Duedev

    Duedev Гость

    Можно ли отловить событие програмного сохранения документа
    (CurDoc.Save(True,False))
    Знаю, что на Notes C Api такое возможно.......
    Есть ли варианты Отловить событие в скрипте библиотеки используя только стандартные стредства Lotus, т.е. не прибегая к написанию доп. dll
     
  2. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    Видимо, тебе надо вставить свой код в событие Querysave формы документа
     
  3. Duedev

    Duedev Гость

    <!--QuoteBegin-Oksana+17:05:2007, 13:19 -->
    <span class="vbquote">(Oksana @ 17:05:2007, 13:19 )</span><!--QuoteEBegin-->Видимо, тебе надо вставить свой код в событие Querysave формы документа
    [snapback]66252" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Я говорю про сохранение документа не по форме, а скриптом.....
    если например, на форме на событии postopen cтоит что-то вроде: source.document.save(True,False)
    то событие querysave при этом не отработает
     
  4. Ronchik

    Ronchik Гость

    событие сие происходить только при сохранении из интерфейса.....все зависит от того что ты хочешь сделать может его и ловить то вовсе не нужно
     
  5. K-Fire

    K-Fire Гость

    <!--QuoteBegin-Duedev+17:05:2007, 10:49 -->
    <span class="vbquote">(Duedev @ 17:05:2007, 10:49 )</span><!--QuoteEBegin-->Есть ли варианты Отловить событие в скрипте библиотеки используя только стандартные стредства Lotus, т.е. не прибегая к написанию доп. dll
    [snapback]66246" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Нет, стандартных средств нет, но можно обойтись и ними, если "переопределить" метод Save. Т.е. вместо Call doc.Save() ты пишешь Call MySave(doc), а в этом MySave проводишь все проверки какие тебе нужны.
     
  6. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Не..
    Он хочет надстроить что-то НАД всем Лотусом. Или над одной базой.
    Но в эту базу можно писать кодом запущенным в др.базе! Т.е. таки над ВСЕМ Лотусом. Штатный механизм - hook-и (dll). Не хочется (и я его понимаю).

    Вариант: отлавливать все save-ы "задним числом", т.е. штатными-же агентами по обновлению. Чем плохо: НЕтранзакционно. Так Лотус по определению не транзакционен (как база)! И на real-time-ы не заточен
     
  7. Duedev

    Duedev Гость

    <!--QuoteBegin-Constantin A Chervonenko+18:05:2007, 16:35 -->
    <span class="vbquote">(Constantin A Chervonenko @ 18:05:2007, 16:35 )</span><!--QuoteEBegin-->Не..
    Он хочет надстроить что-то НАД всем Лотусом. Или над одной базой.
    [snapback]66384" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Точно! ;)......
    <!--QuoteBegin-Constantin A Chervonenko+18:05:2007, 16:35 -->
    <span class="vbquote">(Constantin A Chervonenko @ 18:05:2007, 16:35 )</span><!--QuoteEBegin-->Вариант: отлавливать все save-ы "задним числом", т.е. штатными-же агентами по обновлению. Чем плохо: НЕтранзакционно. Так Лотус по определению не транзакционен (как база)! И на real-time-ы не заточен
    [snapback]66384" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    К сожалению мне действительно необходим реал-тайм для диалога с пользователем...
    <!--QuoteBegin-Constantin A Chervonenko+18:05:2007, 16:35 -->
    <span class="vbquote">(Constantin A Chervonenko @ 18:05:2007, 16:35 )</span><!--QuoteEBegin-->Штатный механизм - hook-и (dll). Не хочется (и я его понимаю).
    [snapback]66384" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Действительно не хочется..... учитывая то, что Linux-клиенты для Lotus, да и перспективы установки linux OC для пользователя уже не за горами.........
     
  8. Fossil Code

    Fossil Code Гость

    Как всегда при возникновении проблемы, хочется уточнить, зачем это нужно, чтобы подумать, нельзя ли добиться того же результата другими средствами :) .

    Потом захочется спросить, каков смысл сего мероприятия, чтобы представить себе соотношение между возможными трудозатратами и достигаемой целью :(

    А потом решить, стоит ли овчинка выделки, и не пора ли идти наверх скандалить по поводу исключения из спецификации проекта данного функционала!
     
  9. Duedev

    Duedev Гость

    <!--QuoteBegin-Fossil Code+21:05:2007, 10:44 -->
    <span class="vbquote">(Fossil Code @ 21:05:2007, 10:44 )</span><!--QuoteEBegin-->зачем это нужно, чтобы подумать, нельзя ли добиться того же результата другими средствами
    [snapback]66503" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Мне необходимо организовать механизм лицензирования для системы из несокльких БД....
    Необходимо чтобы пользователю нельзя было сохранять документ, если у него нет "корректной" лицензии.... и соотв. уведомлять его об этом......
     
  10. Fossil Code

    Fossil Code Гость

    Тема очень интересная. И подходов к исполнению защиты Лотусового приложения, естественно, может быть много.

    А) Попытка "адекватного" ответа
    Если понял верно, то постановка такова: Вы можете вставить свой код проверки лицензии в QuerySave для документа. Но есть проблема со случаями, когда это событие просто не возникает. В связи с этим вопрос по существу: почему есть готовность вписывать код в QuerySave, но нет готовности вписывать аналогичный код в те скрипты, которые могут сохранять документы? Или Вы хотите реализовать механизм "надстройки" над Лотусом, когда при разработке БД не учитываются требования защиты от копирования, а соответствующие средства потом "укладываются" на любую и всякую БД? Или Вы все-таки готовы пойти на доработку, но в возможно меньшем объеме?

    Согласитесь, что это все очень разные случаи. Разработка в соотв. с требованиями системы лицензирования, т.е. вставка кода всюду, где может происходить сохранение -- вещь трудоемкая, но снимает все вопросы. Реализация на системном уровне, очевидно, потребует работы на уровне системы, например "хуков" на соотв. dll Лотуса и от того не уйти, если задача ставится именно так. Наконец, для максимальной экономии труда, IMAO, можно попробовать добиться следующим образом:

    Б) Попытка "асимметричного" ответа
    - Минимум трудозатрат разработчика может быть достигнут в случае, когда на событие открытия/закрытия базы () вешается код, проверяющий лицензию, выдающий сообщение пользователю и удаляющий все "незаконно" созданные документы.
    - Может быть, имеет смысл отрабатывать событие открытия формы? Уж оно-то происходит всегда, когда пользователь начинает создавать документы! (Или просто смотреть) И в этот момент делать проверку лицезии, инициализацию легендарного поля SaveOptions, принудительное удаление и закрытие документа и т.п.?
     
  11. Duedev

    Duedev Гость

    <!--QuoteBegin-Fossil Code+23:05:2007, 10:30 -->
    <span class="vbquote">(Fossil Code @ 23:05:2007, 10:30 )</span><!--QuoteEBegin-->на событие открытия/закрытия базы () вешается код, проверяющий лицензию, выдающий сообщение пользователю и удаляющий все "незаконно" созданные документы.
    [snapback]66794" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Как тогда отличить незаконно созданные документы?

    -------------------
    И все равно в этом случае ,проверка лицензии осуществляется с запозданием, что мешает пользователю убрать эту проверку в DatabaseScript?
     
  12. Fossil Code

    Fossil Code Гость

    Все документы, созданные этим пользователем, если у него нет лицензии.

    Запоздание -- не беда, главное, что нормальная работа невозможна.

    Ну, скрытый дизайн и отсутствие прав дизайнера.

    Потом, как насчет идеи не разрешать _создание_ документов нелицензированным лицам?
     
  13. Duedev

    Duedev Гость

    <!--QuoteBegin-Fossil Code+23:05:2007, 11:40 -->
    <span class="vbquote">(Fossil Code @ 23:05:2007, 11:40 )</span><!--QuoteEBegin-->Все документы, созданные этим пользователем, если у него нет лицензии.
    [snapback]66804" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Как выборку таких документов сделать при открытии БД? Я к тому, что если ставить в каком-то поле таких документов флаг, то никто не помешает пользователю самому программно менять этот флаг на корректный

    <!--QuoteBegin-Fossil Code+23:05:2007, 11:40 -->
    <span class="vbquote">(Fossil Code @ 23:05:2007, 11:40 )</span><!--QuoteEBegin-->Ну, скрытый дизайн и отсутствие прав дизайнера.
    [snapback]66804" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Такое невозможно. Во-первых, пользователь в данном случае это другое юрид. лицо с собственным доменом и политикой безопастности...
    Во вторых скрывать дизайн базы неправильно, т.к открытость кодов явл. одним из основных конкурентных преимуществ продуктов на базе Lotus.
    Если скрывать только DatabaseScript, то нет никаких гарантий, что пользователь его не изменит.
     
  14. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Соображения:
    Послать msg юзеру в момент нарушения лицензии не всегда возможно. Вдруг doc.Save выполняется серверным агентом? Кому/что слать?
    Хук в чужую систему встроить Вам, скорее всего, не позволят. Ну, разве что он - часть продукта

    Предложения:
    Лицензии считать "задним числом". Вы свой продукт поставляете в виде базы ЧАСТЬ кода которой защищена. Эта часть содержит, кроме прочего, агента, который сканирует базы на предмет нарушений

    Ы?
     
  15. Fossil Code

    Fossil Code Гость

    Есть же в свойствах документа имя создателя.

    При открытом дизайне никто и ничто не поможет по определению. Всегда можно сказать, что пользователь изменит код и прости-прощай лицензионность.

    Программное принудительное управление АЦЛ вполне возможно, однако, имеет смысл лишь при закрытом дизайне.

    TrendMicro скрывает и совсем неплохо себя чувствует. "Конкурентное преимущество Лотуса" -- звучит слишком абстрактно и не убеждает в роли аргумента". Вот если конкретный разработчик рекламирует свой конкретный продукт, говоря, что отдает его с открытым кодом -- это весомый довод!

    Повторюсь, при открытом дизайне все и любые меры по определению будут ненадежными. Постулирование открытого дизайна сводит на нет все и вся. По-моему, неправильно загонять себя в угол подобными постановками. И, если разрешить себе закрыть дизайн, то можно будет выбирать из целого спектра решений. А если идти на открытый дизайн, то заранее смириться с существованием определенного процента организаций/пользователей, которые, покопавшись в коде обойдут, так сказать, "защиту".
     
Загрузка...

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