Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


О Notes

Главная   Библиотека   О Notes

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

Николай Норкин,
Вятские Информационные Технологии, Киров
В предлагаемом Вашему вниманию цикле материалов содержится попытка всесторонне осветить вопросы, связанные с планированием представлений в приложениях Domino как в специализированном клиенте Lotus Notes, так и для работы через web-browser

Первый материал из этой серии посвящен вопросу, которым часто озабочены начинающие разработчики


1. Варианты формулировки проблемы

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

Как показать пользователю только те документы, которые ему положено видеть

Как показать пользователю только документы, созданные им самим

Общая картина:

Начинающие разработчики приложений пытаются использовать в selection-формулах представлений или формулах столбцов формулу @UserName для достижения необходимого результата

2. Суть явления

В общем случае, сервер Domino (серверная задача Indexer) заранее подготавливает представления к показу, индексирует их (создает индекс) и поддерживает индекс в актуальном состоянии. Соответственно, когда в формулу отбора включается формула @UserName, используется не имя текущего пользователя (что заранее знать невозможно), а либо имя создателя представления, либо пользователя, перестроившего представление (ранее открывшего его), либо собственно сервера

3. Решение зависит от постановки задачи

Прежде всего, стоит понять, какие цели преследует разработчик. В правильной постановке задачи кроется суть ее успешного решения

Если подобным образом разработчик пытается решить задачу разграничения доступа к документам (см. выше формулировку "... которые ему положено видеть") - он на неверном пути. Решение для этого и подобных случаев однозначно находится в определении полей READERS (полей со свойством READ ACCESS), которые определяют доступ непосредственно на уровне документа

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

Поэтому при планировании приложений рекомендуется не выносить важные данные в результирующие строки либо разграничивать доступ к подобным представлениям

Избавиться от "пустых" категорий можно в приложениях версии Domino 5. (Подобную поддержку пытались ввести в какой-то версии четверки (pre-release 4.6?), но продержалась такая возможность недолго). Для этого необходимо в Свойствах представления на закладке Advanced (предпоследняя закладка с вертолетиком) поднять флажок опции Don't show categories having zero documents. Только хочется предупредить, что включение этой опции потребует большИх вычислительных ресурсов для поддержки индекса представления, и злоупотреблять ей не следует




Задача создания наиболее удобного представления

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

Для решения существуют следующие пути реализации:

1. Личные представления (Shared, desktop private on first use - SPOFU)

2. Встроенные представления с показом единственной категории (Embedded view with show single category)

3. Настройка свойств представления соответствующим образом

4. Дополнение от 10 февраля 2004 года. В шестой версии Domino появилась функция @SetViewInfo

1. Объявляете свое представление SPOFU (Общее, становится личным при первом использовании) с формулой отбора @UserName.



Сразу встает дилемма: где должно хранится это представление (сервер или desktop)?
Хранение на сервере представлений для каждого пользователя повлечет за собой в большинстве случаев неоправданное увеличение объема базы. Сервер плохо перестраивает индексы таких представлений. Как удалить представления пользователей, которые (представления) стали не нужны?
Один из ответов на этот вопрос читатель может найти в советах Notesnet.ru >>>
В том и другом случае (хранение на сервере и на десктопе) встает еще одна проблема: как обновить дизайн этих представлений? Здесь, по-видимому, может помочь недокументированная функция @UpdateViewDesign >>>
2. Появившийся в версии Domino 5 такой элемент дизайна как Встроенное (в форму или страницу) представление (Embedded view) позволяет спланировать дизайн так, чтобы вывести только одну категорию категоризированного представления
Для решения задачи в этом случае необходимы следующие шаги:
    • Создать представление, категоризированное по пользовательским именам
    • Снять галочку Collapse all when database is first open - Свертывать все при первом открытии базы на второй закладке Свойств представления
    • Встроить это представление в форму или страницу, указать в разделе Show single category (Показать единую категорию) эту манящую формулу @UserName... и ...
Вот тут-то и начинаются все проблемы... Дело в том, что встроенное представление в версии R5 не обладает функциональностью обычного представления (в шестой версии появились флажки для дизайна встроенных представлений Show selection margin и Show action bar). В пятой же версии, по большому счету, из него можно только открыть документ. Ни пометить группу документов, ни произвести поиск
3. Автору известен один из советов, следы оригинального решения утерены. Согласно этому совету, необходимо в Свойствах представления на закладке Advanced установить опцию Обновление индекса - Автоматически (Refresh Index - Automatic) и опцию Удаление индекса - После каждого использования (Discard Index - After each use). После этого в формулу отбора включить столь манящую формулу @UserName
Автор мог бы, конечно, занять позицию "за что купил, за то и продаю". Но по всей логике, это работать не должно. И даже если работает, то на открытие представления серверу требуются определенные дополнительные ресурсы. Впрочем, читателю предоставляется возможность проверить этот "вредный совет" на своих разработках. В данном вопросе автор придерживается традиции, которая гласит: "Земля покоится на четырех слонах"
4. В справке разработчика (Domino Designer 6 Help) дан следующий пример использования функции @SetViewInfo:

@SetViewInfo([SETVIEWFILTER];@Name([CN];@UserName);"employeeName";1)

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

Смотри также:
Динамический отбор документов в представления
Как удалить из базы приватные представления, хранящиеся на сервере
Как обновить дизайн приватизированных SPOFU-папок?

Опубликована первая часть статьи Проектирование представлений

Читайте на Notesnet.ru:
Java-апплет: альтернатива встроенному представлению >>>
 
  Опубликовано — 03/30/2003 |    



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU