Основное
Как собрать собственный модуль 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
Подписка на события, панель хода выполнения, журнал логов.