Открыть сервис

NotesDocument

NotesDocument — это основной объект данных в платформе IBM Lotus Notes и IBM Domino, представляющий собой контейнер для хранения структурированной и неструктурированной информации в базе данных документного типа. Каждый документ является самостоятельной единицей, содержащей набор полей (items) с данными различных типов, а также может включать форматированный текст, вложения файлов и объекты (OLE). NotesDocument является аналогом записи в реляционной базе данных, но в отличие от неё обладает гибкой, нефиксированной схемой: поля могут добавляться, удаляться или изменяться динамически для каждого отдельного документа.

История и происхождение

Концепция NotesDocument возникла в середине 1980-х годов в компании Iris Associates, разрабатывавшей систему Lotus Notes под руководством Рэя Оззи. Первая версия Lotus Notes (1.0) была выпущена в 1989 году и уже тогда использовала документно-ориентированную модель данных, где NotesDocument служил базовой единицей хранения. В отличие от реляционных СУБД того времени, Notes не требовал предварительного определения схемы таблиц, что позволяло пользователям быстро создавать приложения для совместной работы, такие как дискуссионные базы, базы знаний и системы документооборота.

С приобретением Lotus Development Corporation компанией IBM в 1995 году платформа получила название IBM Lotus Notes, а серверная часть — IBM Lotus Domino. Модель NotesDocument оставалась неизменной по своей сути на протяжении всех версий — от Lotus Notes 4.x до IBM Notes 9.x и HCL Notes (после передачи продукта компании HCL Technologies в 2019 году). Несмотря на появление альтернативных технологий (веб-приложения, NoSQL-базы), NotesDocument продолжает использоваться в корпоративных решениях, особенно в государственных учреждениях и крупных организациях России, где накоплены значительные архивы баз Lotus Notes/Domino.

Структура NotesDocument

NotesDocument состоит из следующих ключевых компонентов:

Типы полей NotesDocument

Тип поляОписаниеПример использования
TextСтрока символов (до 32 КБ)Название документа
NumberЧисловое значение (целое или с плавающей точкой)Сумма, количество
Date/TimeДата и времяДата создания, срок исполнения
Rich TextФорматированный текст с возможностью вложенийТело письма, отчёт
NamesИмена пользователей или групп NotesСписок получателей
KeywordsВыбор из заданного списка значенийСтатус: «В работе», «Завершён»
FormulaВычисляемое поле на основе формулыСумма полей
AttachmentСсылка на вложенный файлСкан документа

Жизненный цикл NotesDocument

  1. Создание — документ создаётся через клиент Lotus Notes (или HCL Notes), веб-интерфейс, программу на языке LotusScript, Java или через REST API. При создании автоматически заполняются служебные поля: дата создания, автор (LastModifiedBy), уникальный идентификатор.
  2. Редактированиепользователь открывает документ в режиме редактирования, изменяет поля и сохраняет. Notes ведёт историю изменений (при включённой опции «Document History»), но не хранит все версии автоматически — разработчик должен реализовать механизм версионирования.
  3. Сохранение — при сохранении документ записывается в базу данных (NSF-файл) на сервере Domino. Если документ открыт несколькими пользователями, возникает конфликт сохранения — Notes создаёт две копии (основной документ и документ-конфликт), которые администратор или разработчик должен разрешить.
  4. Репликация — NotesDocument может реплицироваться между несколькими серверами Domino. При репликации учитывается Universal ID: если документ с таким же ID существует на целевом сервере, происходит слияние изменений на уровне полей. Репликация позволяет работать с документами в офлайн-режиме (локальная реплика на клиенте).
  5. Удаление — при удалении документ не исчезает физически, а помечается как удалённый (deletion stub). Окончательное удаление происходит при компактизации (compact) базы данных или по истечении срока хранения удалённых документов, заданного в настройках базы.

Применение NotesDocument

NotesDocument используется в различных корпоративных приложениях, построенных на платформе Lotus Notes/Domino:

Преимущества NotesDocument

Недостатки и ограничения

Программный доступ к NotesDocument

Разработчики могут работать с NotesDocument через несколько интерфейсов:

``lotusscript Dim session As New NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Set db = session.CurrentDatabase Set doc = db.CreateDocument doc.Form = "Заявка" doc.Subject = "Тестовая заявка" Call doc.Save(True, False) ``

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →