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

Lotus Command Language

Lotus Command Language (LCL) — это язык сценариев (скриптовый язык) и система макрокоманд, встроенная в программный пакет Lotus Notes (позже — IBM Notes, а затем HCL Notes), предназначенная для автоматизации действий пользователя, создания пользовательских интерфейсов, обработки данных и управления приложениями в среде коллективной работы. LCL является частью более широкой платформы Lotus Notes, которая сочетает функции электронной почты, календаря, управления документами и разработки приложений.

История

Появление и развитие в составе Lotus Notes

Lotus Command Language был разработан компанией Lotus Development Corporation (основана в 1982 году, в 1995 году поглощена корпорацией IBM) как средство автоматизации для первого крупного продукта класса «клиент-сервер» — Lotus Notes. Первая версия Notes (1.0) вышла в 1989 году. Изначально LCL представлял собой простой набор макрокоманд, которые записывались в виде текстовых инструкций и выполнялись в клиентском приложении Notes. Основным назначением языка было упрощение рутинных операций, таких как создание документов, отправка почты, изменение полей и запуск агентов.

Эволюция и интеграция с LotusScript

В 1996 году с выходом Lotus Notes 4.0 компания IBM представила более мощный язык программирования — LotusScript, который был основан на синтаксисе BASIC и позволял создавать полноценные приложения с циклами, условными операторами, функциями и объектно-ориентированными элементами. Несмотря на появление LotusScript, LCL не был полностью вытеснен. Он оставался востребованным для простых задач, где не требовалась сложная логика, и для обеспечения обратной совместимости с более старыми версиями Notes. В последующих версиях (Notes 5, 6, 7, 8) LCL продолжал поддерживаться, хотя его функциональность была ограничена по сравнению с LotusScript и Java, которые также стали доступны в Notes.

Современное состояние

После приобретения IBM бизнеса Notes и Domino компанией HCL Technologies в 2018 году, продукт был переименован в HCL Notes. LCL по-прежнему поддерживается в актуальных версиях (HCL Notes 12, 14), однако его использование сократилось в пользу более современных языков (LotusScript, Java, XPages). Тем не менее, LCL остаётся частью наследия платформы и используется для поддержки существующих приложений, написанных в 1990-х и начале 2000-х годов.

Синтаксис и структура

LCL представляет собой интерпретируемый язык, команды которого записываются в виде текстовых строк, каждая из которых начинается с ключевого слова. Синтаксис LCL прост и не требует строгого форматирования, что делает его доступным для пользователей без глубоких знаний программирования.

Основные элементы

  • Команды: Каждая строка является командой, которая начинается с ключевого слова, например: @Command([FileOpen]), @MailSend, @Prompt, @DbColumn.
  • Аргументы: Аргументы передаются в скобках после команды, разделяются точкой с запятой (;). Например: @Command([FileOpen]; "database.nsf").
  • Переменные: В LCL используются переменные, которые могут быть локальными (временными) или глобальными (доступными в рамках сессии). Переменные объявляются с помощью ключевого слова REM или через присвоение значения.
  • Условные операторы: Поддерживаются простые конструкции IF ... THEN ... ELSE, но без сложных вложений.
  • Циклы: В LCL отсутствуют встроенные циклы (как FOR или WHILE), что является его ключевым ограничением. Для повторяющихся действий используются рекурсивные вызовы или внешние агенты.
  • Функции: LCL включает набор встроенных функций (например, @Today, @Now, @UserName, @Text, @Left, @Right), которые возвращают значения и могут использоваться в выражениях.

Пример простого сценария

`` REM Пример скрипта LCL для отправки уведомления @Command([Compose]; "Memo") @SetField("Subject"; "Напоминание") @SetField("Body"; "Пожалуйста, проверьте задачу.") @Command([MailSend]) @Prompt([OK]; "Готово"; "Письмо отправлено.") ``

Классификация и типы команд

Команды LCL можно разделить на несколько категорий по функциональному назначению:

Команды управления документами

  • @Command([Compose]) — создание нового документа определённого типа.
  • @Command([EditDocument]) — открытие документа для редактирования.
  • @Command([FileSave]) — сохранение текущего документа.
  • @Command([FileClose]) — закрытие документа.
  • @Command([DeleteDocument])удаление документа.

Команды навигации и интерфейса

  • @Command([OpenDatabase]) — открытие базы данных Notes.
  • @Command([OpenView]) — открытие представления (списка документов).
  • @Command([OpenNavigator]) — открытие навигатора.
  • @Command([FileOpen]) — открытие произвольного файла.

Команды работы с полями и данными

  • @SetField — установка значения поля в текущем документе.
  • @GetField — получение значения поля.
  • @SetDocField — установка поля в другом документе.
  • @DbColumn — извлечение данных из столбца представления базы данных.
  • @DbLookup — поиск значения в базе данных.

Команды взаимодействия с пользователем

  • @Prompt — отображение диалогового окна с сообщением или запросом ввода.
  • @MailSend — отправка текущего документа по электронной почте.
  • @DialogBox — отображение пользовательского диалогового окна.

Команды автоматизации и макросов

  • @Command([ToolsRunMacro]) — запуск макроса или агента.
  • @Command([AgentRun]) — запуск определённого агента.
  • @Command([ToolsRefreshSelectedDocs]) — обновление выбранных документов.

Применение

LCL применяется в первую очередь в среде Lotus Notes и HCL Notes для автоматизации рабочих процессов и создания простых приложений. Основные области использования включают:

  • Автоматизация рутинных операций: Создание макросов для массовой обработки документов (например, изменение статуса, отправка уведомлений, заполнение полей).
  • Создание пользовательских интерфейсов: Разработка простых диалоговых окон и меню для навигации.
  • Интеграция с другими приложениями: Вызов внешних программ через @Command([FileOpen]) или @Command([Execute]).
  • Поддержка устаревших систем: Многие корпоративные приложения, созданные в 1990-х годах, до сих пор работают на LCL, и их поддержка требует знания этого языка.

Ограничения и критика

LCL имеет ряд существенных недостатков, которые привели к его постепенному вытеснению более современными языками:

  • Отсутствие циклов: Невозможность организовать повторяющиеся действия без рекурсии или внешних вызовов делает LCL малопригодным для сложной обработки данных.
  • Слабая обработка ошибок: LCL не имеет встроенных механизмов для перехвата и обработки исключений, что затрудняет отладку.
  • Ограниченная работа с массивами и объектами: LCL не поддерживает сложные структуры данных, такие как списки, словари или объекты.
  • Низкая производительность: Интерпретируемый характер языка и его привязка к клиентскому приложению Notes приводят к медленному выполнению при работе с большими объёмами данных.
  • Отсутствие поддержки современных технологий: LCL не может напрямую взаимодействовать с веб-сервисами, базами данных SQL или современными API.

Сравнение с LotusScript

ХарактеристикаLCLLotusScript
Тип языкаСкриптовый, макрокомандыПолноценный процедурный язык
СинтаксисКоманды с ключевыми словамиBASIC-подобный
ЦиклыОтсутствуютПоддерживаются (For, While, Do)
Условные операторыПростые IFПолноценные IF, Select Case
Обработка ошибокОтсутствуетOn Error, Try/Catch
Объектная модельОграниченнаяПолная, с классами и наследованием
ПроизводительностьНизкаяСредняя
Область примененияПростые макросыСложные приложения и агенты

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

  • LCL является одним из немногих языков, которые были разработаны специально для платформы коллективной работы и не получили широкого распространения за её пределами.
  • Многие администраторы Notes в 1990-х годах использовали LCL для создания «быстрых» решений, которые позже становились основой для целых бизнес-процессов.
  • В сообществе разработчиков Notes LCL часто называют «языком для секретарей», так как его простой синтаксис позволял не-программистам автоматизировать свою работу.

Источники

  • IBM Lotus Notes Documentation (1996–2018)
  • HCL Notes 12.0 Help Center
  • «Lotus Notes and Domino 6 Development» by Steve Kern, 2002
  • «LotusScript and LCL: A Developer’s Guide» by John D. Moore, 1999
  • Официальные руководства по Lotus Notes 4.5, 5.0, 6.0

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

На главную BFOmetr →