Сообщество Engee

Панель управления моделью (Engee-приложение)

Автор
avatar-nkapyrinnkapyrin
Notebook

Управление моделями из Engee-приложения

В этом примере показано, как отправлять команды вычислительному ядру Engee из интерактивного приложения.

Выполнение программы

Наша программа будет выполнять очень простую задачу: запускать открытую модель на исполнение.

Запустить приложение позволяет следующая команда:

genie_app = engee.genie.start("$(@__DIR__)/app.jl", log_file="log.txt");
display("text/html", """<a href="$(string(genie_app.url))" target="_blank" rel="noopener noreferrer">Открыть в отдельном окне</a>""")

Эта ссылка позволит открыть приложение в отдельном браузере (например, на смартфоне), а ссылка остаётся неизменной при запущенном сервере, что позволяет использовать ее из панели Избранное или как отдельное веб-приложение (сохранить на экране для будущих вызовов).

При необходимости остановить приложение, например для перезапуска или в отладочных целях, раскомментируйте и выполните следующий код:

# engee.genie.stop("$(@__DIR__)/app.jl");

В распоряжении пользователя оказывается следующего вида панель управления:

Описание работы приложения

За отправку команды ядру Engee, в файле app.jl отвечает строка:

engee.eval("engee.run()")

Этот пример показывает, как можно выполнять код на основном ядре Engee из "внешнего" приложения, при том что код может быть любым.

screenshot_from_2025_10_02_00_11_32.png

Упрощенный код приложения

В этом приложении много форматирования, но если убрать всю разметку и позиционирование элементов, то у нас останется довольно понятный шаблонный пример:

using Engee, GenieFramework

@app begin
    @out message = ""
    @in press_btn = false
    
    @onbutton press_btn begin
        try
            engee.eval("""engee.run()""")
            message = "Команда выполнена успешно! Модель запущена."
        catch e
            message = "Ошибка: $e"
        end
    end
end

function ui()
    [
        h5("Специальная кнопка для запуска модели"),
        h6("model_1.engee"),
        btn("🚀 ПУСК", @click(:press_btn))
    ]
end

@page("/", ui)

Можно различить секцию реактивной модели данных (@app) и разметку интерфейса с элементами пользовательского интерфейса (ui(()).

Заключение

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