Перейти к содержимому
Документация
Конструктор модулей

Основное

Как собрать собственный модуль Multogram — интерфейс настроек и логику — и его публичный API: движок сценариев, хранилище, файлы, диалоги и события.

Конструктор интерфейса — это визуальный сборщик панели управления для вашего модуля. Вы собираете форму (поля ввода, переключатели, таблицы, кнопки запуска, вкладки, темы и переводы) без написания кода. Готовый интерфейс превращается в обычную веб-страницу, которая запускает сценарий, передаёт в него введённые данные и показывает ход выполнения в реальном времени.

А если стандартных возможностей не хватает — интерфейс даёт программный API, доступный из вашего собственного JavaScript прямо внутри страницы. Этот раздел описывает и принцип работы, и весь публичный API.

Кому это нужно

Раздел для авторов модулей. Если вы просто запускаете готовые модули — вам в режимы Модули и Конструктор модулей.

Ключевые понятия

  • Интерфейс — веб-страница, собранная в конструкторе. Работает в приложении или в браузере.
  • Сценарий — рабочий процесс, который выполняет движок. Состоит из функций; точка входа — функция Main.
  • Ресурс — элемент интерфейса, куда пользователь вводит данные для сценария (поле, переключатель, список, таблица). У ресурса есть имя, по которому к нему обращаются.
  • Переменная — именованное значение внутри выполняющегося сценария (локальная или глобальная).
  • Поток — независимая линия выполнения; сценарий можно запустить сразу в несколько потоков.
  • Задача — самостоятельный параллельный процесс рядом с основным сценарием.
  • Движок — исполнительное ядро, запускающее сценарии, потоки и задачи.

Два глобальных объекта

Любой сгенерированный интерфейс предоставляет два глобальных объекта в JavaScript:

Engine.api — рекомендуемый фасад, собирающий все возможности в удобные пространства имён:

Engine.api.engine        // сценарий, потоки, переменные, ресурсы
Engine.api.ui            // тема, язык, ресурсы, вкладки, навигация, состояние
Engine.api.dialog        // уведомления, подтверждения, запрос ввода
Engine.api.modal         // модальные окна
Engine.api.database      // работа с таблицами компонента «база данных»
Engine.api.electron      // файлы, системные диалоги, буфер обмена (в приложении)
Engine.api.log           // журнал логов
Engine.api.scenarioView  // панель хода выполнения
Engine.api.eventListener // подписка на события движка
Engine.api.visibility    // условная видимость элементов

InterfaceRuntime — прямой доступ к отдельным модулям и к двум хранилищам разработчика:

InterfaceRuntime.KV  // асинхронное хранилище «ключ-значение»
InterfaceRuntime.DB  // прямой доступ к SQL-базе (только в приложении)

Единый контракт результата

Почти все методы Engine.api возвращают объект одного вида, поэтому результат удобно проверять всегда одинаково:

const res = Engine.api.ui.getResource('userName');
if (res.success) {
  console.log('Значение:', res.data);
} else {
  console.warn('Ошибка:', res.error);
}

Асинхронные методы возвращают Promise, разрешающийся таким же объектом — их удобно вызывать через await.

Исключение — KV и DB

Хранилища KV и DB возвращают «чистый» Promise: он разрешается прямо значением (а не объектом { success, data }) и отклоняется при ошибке. Подробнее — на странице Хранилище данных.

Разделы

Начало работы

Как устроен интерфейс, глобальные объекты и как дождаться готовности перед обращением к API.

Веб-интерфейс

Разметка и конфигурация страницы, работа с файлами (Assets) и полный программный API.

Внутри раздела Веб-интерфейс собран весь программный API:

Runtime

Ресурсы интерфейса, события рабочего процесса, условная видимость, состояние.

Engine

Запуск и остановка сценария, задачи, потоки, переменные, ресурсы, функции.

UI

Тема и цвета оформления, языки и переводы интерфейса.

Диалоги и окна

Уведомления, окна подтверждения и ввода, модальные окна, вкладки, навигация.

Storage

KV и DB, автосохранение состояния, компонент таблицы.

Electron

Файлы, системные диалоги, буфер обмена, пути, оболочка ОС.

Events

Подписка на события, панель хода выполнения, журнал логов.