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

NotesSession

NotesSession — это объектная модель и программный интерфейс (API), используемый в платформе IBM Lotus Notes (позднее — HCL Notes) для управления сеансом работы клиентского приложения с сервером Domino. В контексте разработки на языках LotusScript, Java, C++ и Formula Language NotesSession предоставляет доступ к корневым объектам среды выполнения, таким как текущая база данных, пользователь, сессионные настройки, безопасность и внешние ресурсы.

История и контекст

Платформа Lotus Notes была разработана компанией Lotus Development Corporation (позднее приобретена IBM) в 1989 году как система для групповой работы, электронной почты и документооборота. Основой архитектуры стала клиент-серверная модель, где клиентское приложение Notes Client взаимодействует с сервером Domino через протокол NRPC (Notes Remote Procedure Call). Для автоматизации задач и создания приложений внутри платформы были введены языки программирования: LotusScript (диалект Basic), Formula Language, а также поддержка Java и C++.

Объектная модель NotesSession была введена в LotusScript как точка входа для всех операций, выполняемых в контексте текущего сеанса. В версиях Notes/Domino 4.x и более ранних сеансы управлялись через глобальные переменные, но с выходом Notes 5.0 (1999 год) объект NotesSession стал стандартным способом доступа к среде. В последующих версиях (6.x, 7.x, 8.x и HCL Notes 9.x–14.x) API NotesSession расширялся, но сохранил обратную совместимость.

Архитектура и основные свойства

NotesSession является корневым объектом в иерархии объектной модели Notes. При запуске скрипта или агента на LotusScript автоматически создаётся экземпляр сеанса, доступный через ключевое слово Session (или NotesSession в Java). Основные свойства объекта включают:

Методы NotesSession

Основные методы объекта NotesSession:

Использование в разработке

LotusScript

В LotusScript объект NotesSession является глобальным и доступен без явного создания. Пример типичного использования:

``lotusscript Dim session As New NotesSession Dim db As NotesDatabase Set db = session.CurrentDatabase Msgbox "Текущая база: " & db.Title & " на сервере " & db.Server ``

В агентах, запускаемых из документов, свойство DocumentContext позволяет получить контекстный документ:

``lotusscript Dim doc As NotesDocument Set doc = session.DocumentContext If Not doc Is Nothing Then Msgbox "Заголовок: " & doc.GetItemValue("Subject")(0) End If ``

Java

В Java API NotesSession представлен классом lotus.domino.Session. Для его получения используется фабричный метод NotesFactory.createSession():

``java import lotus.domino.*; Session session = NotesFactory.createSession(); Database db = session.getCurrentDatabase(); System.out.println("База: " + db.getTitle()); ``

В версиях HCL Notes для Java также доступен метод Session.createSession().

Formula Language

В Formula Language объект сеанса неявно доступен через функции, такие как @UserName, @DbName, @MailSend. Однако прямой доступ к NotesSession из Formula Language отсутствует — все операции выполняются через встроенные функции.

Безопасность и ограничения

Объект NotesSession работает в контексте прав текущего пользователя. При выполнении агентов на сервере (серверные агенты) сеанс может создаваться от имени пользователя, указанного в настройках агента, или от имени сервера. В версиях Notes/Domino 8.5 и выше введены дополнительные уровни безопасности, такие как проверка подписей кода и ограничения на выполнение операций с файловой системой.

Версии и совместимость

Объект NotesSession поддерживается во всех версиях Lotus Notes и HCL Notes начиная с 4.6. В версиях 6.x–8.x были добавлены новые свойства и методы, такие как International, NotesVersion, GetEnvironmentString. В HCL Notes 9.x–14.x API NotesSession остаётся стабильным, но рекомендуется использовать более современные подходы, такие как REST API Domino Data Service (DDS) для интеграции с внешними системами.

Основные различия по версиям:

Примеры применения

Автоматизация отправки почты

``lotusscript Dim session As New NotesSession Dim recipients(0) As String recipients(0) = "user@domain.com" Call session.SendMail(recipients, "Тема", "Текст письма") ``

Получение списка баз на сервере

``lotusscript Dim session As New NotesSession Dim server As String server = session.CurrentDatabase.Server Dim dbDir As NotesDbDirectory Set dbDir = session.GetDbDirectory(server) Dim db As NotesDatabase Set db = dbDir.GetFirstDatabase(DB_TEMPLATE) While Not db Is Nothing ' обработка базы Set db = dbDir.GetNextDatabase Wend ``

Работа с переменными окружения

``lotusscript Dim session As New NotesSession Dim value As String value = session.GetEnvironmentString("MyVar") If value = "" Then Call session.SetEnvironmentVar("MyVar", "default") End If ``

Критика и альтернативы

Объект NotesSession критикуется за монолитность и тесную связь с платформой Domino. В современных сценариях интеграции (веб-приложения, мобильные клиенты, облачные решения) предпочтительнее использовать REST API Domino Data Service (DDS) или протоколы IMAP/POP3 для почты. Однако для внутренних скриптов, агентов и макросов NotesSession остаётся основным инструментом разработки в среде HCL Notes.

Также отмечается, что объектная модель NotesSession не поддерживает асинхронные операции, что ограничивает производительность при массовой обработке данных. В версиях HCL Notes 12.x и выше добавлены частичные улучшения в Java API, но полная поддержка асинхронности не реализована.

Источники

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

На главную BFOmetr →