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

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

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

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

Как работает интерфейс

Интерфейс — это самостоятельная веб-страница. При открытии она проходит несколько автоматических шагов:

  1. Применяет оформление — восстанавливает сохранённые тему и язык, переводит подписи элементов.
  2. Восстанавливает состояние — подставляет в поля значения, которые пользователь вводил в прошлый раз.
  3. Готовит связь с движком — чтобы можно было запускать сценарий и обмениваться с ним данными.
  4. Включает интерактив — подсказки, выпадающие списки, условную видимость, кнопки запуска.

Всё это происходит без вашего участия. Вам остаётся собрать нужные элементы в конструкторе, а при необходимости — добавить собственную логику через API.

Взаимодействие интерфейса и сценария строится на трёх понятиях:

  • Ресурсы — то, что пользователь вводит (интерфейс → сценарий).
  • Переменные — рабочие значения внутри сценария.
  • События — сигналы о том, что происходит (сценарий → интерфейс): новая запись в журнале, обновление статистики, изменение состояния.

Глобальные объекты

Внутри интерфейса всегда доступны:

ОбъектНазначение
Engine.apiОсновной фасад: движок, интерфейс, диалоги, файлы, события
InterfaceRuntimeНизкоуровневые модули и хранилища KV / DB
t(ключ, поУмолчанию)Быстрый перевод строки по ключу локализации

Пример использования всех трёх:

// Перевод строки
const label = t('startWorkflow', 'Запустить');

// Чтение значения ресурса через фасад
const res = Engine.api.ui.getResource('apiKey');

// Сохранение значения в хранилище
await InterfaceRuntime.KV.set('lastRun', Date.now());

Куда писать свой код

Собственный JavaScript добавляется к интерфейсу как отдельный файл через менеджер ассетов в конструкторе (подробнее — Работа с файлами (Assets)). Код выполняется на странице интерфейса и имеет полный доступ к Engine.api и InterfaceRuntime.

Готовность интерфейса

Чтобы не обращаться к API раньше времени, дождитесь одного из сигналов:

  • DOM-событие interface:ready — интерфейс полностью инициализирован;
  • DOM-событие engine:connected — установлена связь с движком (можно запускать сценарий и читать переменные).
// Интерфейс готов
document.addEventListener('interface:ready', () => {
  Engine.api.ui.setLanguage('ru');
});

// Движок на связи
document.addEventListener('engine:connected', async () => {
  const res = await Engine.api.engine.getAvailableTasks();
  console.log('Активные задачи:', res.data);
});

Если код обращается к движку в момент запуска и вы не уверены, что связь уже установлена, используйте Engine.api.engine.whenConnected() — он дождётся подключения:

await Engine.api.engine.whenConnected();     // ждём связь с движком
await Engine.api.engine.startScenario(3);    // теперь безопасно запускать