Встроенные классы Notes можно разделить на две группы:
1. Классы интерфейса пользователя – обеспечивают доступ к объектам пользовательского интерфейса: рабочее пространство (Workspace), окно вида (View Window), окно документа (Document Window), поле и форматируемое поле.
· NotesUIWorkSpace – представляет текущее рабочее пространство Notes.
· NotesUIDocument – представляет документ, который сейчас выбран в рабочем пространстве
2. Классы заднего планы – представляют такие объекты Notes, как базу данных, вид или папку, агент, документ, пункт в документе. Выполняемые пользователем действия происходят без явного отображения в пользовательском интерфейсе.
· NotesSession – представляет среду Notes, в которой выполняется данный скрипт . Он позволяет получать доступ к адресным книгам, информации о текущем пользователе, к переменным из файла Notes.ini, текущей платформе Notes.
· NotesDbDirectory – позволяет просмотреть список имеющихся баз и получить доступ к любой из них
· NotesDatabase – представляет конкретную базу Notes и обеспечивает доступ ко всем, содержащимся в ней объектам.
· NotesACL – представляет список управления доступом (ACL) базы.
· NotesACLEntry – представляет один элемент из набора элементов в ACL.
· NotesAgent – представляет конкретного агента.
· NotesView – представляет вид или папку в базе и обеспечивает доступ к содержащимся там документам.
· NotesViewColomn –представляет столбец вида или папки.
· NotesDocumentCollection - представляет коллекцию документов из базы, отобранную в соответствии с некоторым критерием.
· NotesDocument – представляет один документ в базе.
· NotesItem – представляет один пункт документа. Поле в форме (Field) и пункт в документе (Item) – это разные объекты, хотя часто и связанные между собой.
· NotesRichTextItem - является производным от класса NotesItem, т.е. он наследует все свойства и методы базового класса, но дополнительно имеет свои собственные специфические свойства и методы для работы с произвольным текстом.
Контейнерная иерархия стандартных классов довольно сложна, поэтому она не приводится целиком, а рассматривается на примере создания и использования объектов.
Рассмотрим следующий скрипт, в котором проявлена контейнерная иерархия классов:
Dim s As New NotesSession ‘( Метод New cоздает новый объект класса NotesSession и присваивает переменной s ссылку на него. Этот объект представляет текущий сеанс пользователя)
Dim db As NotesDatabase ‘(переменная класа NotesDatabase. Ей пока не присвоено значение и она не связана ни с какими объектами)
Dim view As NotesView ‘(переменная класа NotesView, аналогично)
Dim doc As NotesDocument ‘(аналогично)
Dim item As NotesItem ‘(представляет один пункт документа)
Set db = s.CurrentDatabase ‘переменной присваивается ссылка на объект класса NotesDataBase, возвращаемая свойством СurrentDatabase объекта s. Этот объект содержится в объекте класса NotesSession, он представляет текущую базу в сеансе пользователя.
Set view = db.GetView(“Cтуденты”) ‘переменной присваивается ссылка на объект класса NotesView, возвращаемая методом GetView объекта db. У объекта db (базы данных) может быть несколько видов и метод имеет параметр. Здесь метод GetView создает и возвращает ссылку на объект, представляющий вид с названием «Студенты».
Set doc = view.GetFirstDocument ‘ переменной doc присваивается ссылка на объект класса NotesDocument, представляющий первый документ в виде view.
Set Item = doc.GetFirstItem ‘переменной item класса NotesItem присваивается ссылка на объект класса NotesItem, представляющий первый пункт в документе doc.
Из рассмотренного примера становится очевидной следующая иерархия классов:
NotesSession -> NotesDatabase -> NotesView -> NotesDocument -> NotesItem