Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/142: Рейтинг темы: голосов - 142, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 08.07.2005
Сообщений: 100
1

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

16.05.2007, 13:02. Показов 25598. Ответов 14
Метки нет (Все метки)

Можно ли отловить событие програмного сохранения документа
(CurDoc.Save(True,False))
Знаю, что на Notes C Api такое возможно.......
Есть ли варианты Отловить событие в скрипте библиотеки используя только стандартные стредства Lotus, т.е. не прибегая к написанию доп. dll
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2007, 13:02
Ответы с готовыми решениями:

возможность сохранения документа
Всех приветствую У меня следующие вопросы: 1) я хочу сделать так, чтобы документ нельзя было...

Обновить представление после сохранения документа
Собственно вот какая проблема, есть ряд представлений, по которым документ должен "бегать" по...

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

Запрет сохранения документа при открытии формы
Как сделать так, чтобы при открытии формы устанавливалось поле, которое запрещает сохранение...

__________________
14
0 / 0 / 0
Регистрация: 05.01.2006
Сообщений: 317
16.05.2007, 13:32 2
Цитата Сообщение от Duedev
Можно ли отловить событие програмного сохранения документа
(CurDoc.Save(True,False))
Знаю, что на Notes C Api такое возможно.......
Есть ли варианты Отловить событие в скрипте библиотеки используя только стандартные стредства Lotus, т.е. не прибегая к написанию доп. dll
Видимо, тебе надо вставить свой код в событие Querysave формы документа
0
0 / 0 / 0
Регистрация: 08.07.2005
Сообщений: 100
16.05.2007, 13:42 3
<!--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 при этом не отработает
0
0 / 0 / 0
Регистрация: 27.02.2007
Сообщений: 154
16.05.2007, 16:58 4
событие сие происходить только при сохранении из интерфейса.....все зависит от того что ты хочешь сделать может его и ловить то вовсе не нужно
0
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
17.05.2007, 13:48 5
<!--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 проводишь все проверки какие тебе нужны.
0
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
17.05.2007, 16:48 6
Цитата Сообщение от K-Fire
Нет, стандартных средств нет, но можно обойтись и ними, если "переопределить" метод Save. Т.е. вместо Call doc.Save() ты пишешь Call MySave(doc), а в этом MySave проводишь все проверки какие тебе нужны.
Не..
Он хочет надстроить что-то НАД всем Лотусом. Или над одной базой.
Но в эту базу можно писать кодом запущенным в др.базе! Т.е. таки над ВСЕМ Лотусом. Штатный механизм - hook-и (dll). Не хочется (и я его понимаю).

Вариант: отлавливать все save-ы "задним числом", т.е. штатными-же агентами по обновлению. Чем плохо: НЕтранзакционно. Так Лотус по определению не транзакционен (как база)! И на real-time-ы не заточен
0
0 / 0 / 0
Регистрация: 08.07.2005
Сообщений: 100
17.05.2007, 17:19 7
<!--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 для пользователя уже не за горами.........
0
0 / 0 / 0
Регистрация: 18.11.2006
Сообщений: 293
20.05.2007, 10:57 8
Как всегда при возникновении проблемы, хочется уточнить, зачем это нужно, чтобы подумать, нельзя ли добиться того же результата другими средствами .

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

А потом решить, стоит ли овчинка выделки, и не пора ли идти наверх скандалить по поводу исключения из спецификации проекта данного функционала!
0
0 / 0 / 0
Регистрация: 08.07.2005
Сообщений: 100
21.05.2007, 17:21 9
<!--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]

Мне необходимо организовать механизм лицензирования для системы из несокльких БД....
Необходимо чтобы пользователю нельзя было сохранять документ, если у него нет "корректной" лицензии.... и соотв. уведомлять его об этом......
0
0 / 0 / 0
Регистрация: 18.11.2006
Сообщений: 293
22.05.2007, 10:43 10
Тема очень интересная. И подходов к исполнению защиты Лотусового приложения, естественно, может быть много.

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

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

Б) Попытка "асимметричного" ответа
- Минимум трудозатрат разработчика может быть достигнут в случае, когда на событие открытия/закрытия базы () вешается код, проверяющий лицензию, выдающий сообщение пользователю и удаляющий все "незаконно" созданные документы.
- Может быть, имеет смысл отрабатывать событие открытия формы? Уж оно-то происходит всегда, когда пользователь начинает создавать документы! (Или просто смотреть) И в этот момент делать проверку лицезии, инициализацию легендарного поля SaveOptions, принудительное удаление и закрытие документа и т.п.?
0
0 / 0 / 0
Регистрация: 08.07.2005
Сообщений: 100
22.05.2007, 11:36 11
<!--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?
0
0 / 0 / 0
Регистрация: 18.11.2006
Сообщений: 293
22.05.2007, 11:53 12
Цитата Сообщение от Duedev
Как тогда отличить незаконно созданные документы?

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

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

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

Потом, как насчет идеи не разрешать _создание_ документов нелицензированным лицам?
0
0 / 0 / 0
Регистрация: 08.07.2005
Сообщений: 100
22.05.2007, 12:23 13
<!--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, то нет никаких гарантий, что пользователь его не изменит.
0
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
22.05.2007, 12:41 14
Соображения:
Послать msg юзеру в момент нарушения лицензии не всегда возможно. Вдруг doc.Save выполняется серверным агентом? Кому/что слать?
Хук в чужую систему встроить Вам, скорее всего, не позволят. Ну, разве что он - часть продукта

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

Ы?
0
0 / 0 / 0
Регистрация: 18.11.2006
Сообщений: 293
22.05.2007, 13:27 15
Цитата Сообщение от Duedev
Как выборку таких документов сделать при открытии БД?
Есть же в свойствах документа имя создателя.



Цитата Сообщение от Duedev
Я к тому, что если ставить в каком-то поле таких документов флаг, то никто не помешает пользователю самому программно менять этот флаг на корректный
При открытом дизайне никто и ничто не поможет по определению. Всегда можно сказать, что пользователь изменит код и прости-прощай лицензионность.



Цитата Сообщение от Duedev
Такое невозможно. Во-первых, пользователь в данном случае это другое юрид. лицо с собственным доменом и политикой безопастности...
Программное принудительное управление АЦЛ вполне возможно, однако, имеет смысл лишь при закрытом дизайне.



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



Цитата Сообщение от Duedev
Если скрывать только DatabaseScript, то нет никаких гарантий, что пользователь его не изменит.
Повторюсь, при открытом дизайне все и любые меры по определению будут ненадежными. Постулирование открытого дизайна сводит на нет все и вся. По-моему, неправильно загонять себя в угол подобными постановками. И, если разрешить себе закрыть дизайн, то можно будет выбирать из целого спектра решений. А если идти на открытый дизайн, то заранее смириться с существованием определенного процента организаций/пользователей, которые, покопавшись в коде обойдут, так сказать, "защиту".
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2007, 13:27

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

После сохранения документа в фрейме, документ переходит в режим просмо
Система - левый фрейм - представление правый фрейм - документ, которые открывается по ссылке из...

Ошибка сохранения документа
Заполнил документ (все поля, табличную часть) и при сохранение выдает такую ошибку такой...

Ошибка сохранения документа WORD
Всем привет! Работаю над созданием отчёта в WORD, и столкнулся с такой ошибкой: после добавления 5...

Кнопка сохранения хтмл документа
Доброго времени суток! Нужна помощь в написании скрипта для сохранения html формы как отдельный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.