Встраивание презентации модели в окно стороннего приложения

Начиная с версии 6.7 AnyLogic предлагает в распоряжение пользователей простой механизм встраивания моделей AnyLogic в сторонние Java приложения.

Среди обучающих моделей AnyLogicВы можете найти модели, демонстрирующие различные сценарии встраивания. Модели содержат код, который может использоваться в качестве отправной точки в том случае, если Вам нужно будет использовать какой-либо из описанных механизмов в Вашем приложении, усовершенствовав его под Вашу конкретную задачу.

В этой статье описывается, как встраивать презентацию модели AnyLogic в окно стороннего Java приложения (и также добавить в это окно элементы управления ходом моделирования). Этот случай интеграции реализован в следующей модели: 

How-To model: Embedding AnyLogic Models in External Applications

 Чтобы проверить, как работает этот сценарий интегрирования

  1. Откройте указанный пример модели и экспортируйте его как отдельное приложение.
  2. Измените bat/sh/cmd файл, заменив имя класса с Simulation на MyApplication.
  3. Запустите bat/sh/cmd файл.

Давайте посмотрим, что же именно нужно сделать для того, чтобы встроить презентацию модели AnyLogic в окно внешнего Java приложения. Пожалуйста, откройте обучающую модель, щелкнув по приведенной выше ссылке, и изучите ее внутреннюю структуру. 

Модель содержит:

Откройте код класса MyApplication, сделав двойной щелчок по этому классу в панели Проекты. Вы увидите следующий код:


Обратите внимание именно на тот код, который показан на приведенном выше скриншоте. Вы можете изучить его строка за строкой с помощью приведенных в коде построчных комментариев. 

Этот код создает простой эксперимент (Simulationздесь - это имя эксперимента в этой конкретной модели), затем создает панель, на которую будет помещена презентация модели, затем инициализирует исполняющий модуль и презентацию (это делает метод эксперимента setup(), принимающий в качестве значения аргумента контейнер для презентации), и наконец добавляет панель инструментов, панель презентации и панель состояния на панель контейнера. Если Вы не хотите отображать панель инструментов и/или панель состояния, просто не пишите строки 4.1 и/или 4.3.

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

В нем можно выделить следуюшие строки:

        final JDialog dialog = new JDialog((Frame) null, "I'm external application", true);

        JPanel panelMain = new JPanel(new BorderLayout(8, 8));

        panelMain.add(panelSimulation, BorderLayout.CENTER);
        
        dialog.setContentPane(panelMain);
        
Эти строки создают диалоговое окно, панель, затем помещают презентацию модели на эту панель, а затем задают эту панель в качестве панели содержимого диалогового окна.

Также Вы можете найти там код, создающий три кнопки для запуска, остановки модели и закрытия окна, и помещающий их на специальную панель инструментов.

Если Вы хотите использовать описанный механизм в Вашем приложении, усовершенствовав его под Вашу конкретную задачу, следуйте описанным ниже шагам. Здесь мы опишем, как применить это решение в Java проекте, созданном в среде разработки Java приложений Eclipse. Если у Вас нет Java проекта, создайте его, как описано здесь (ссылка на онлайн-документацию Eclipse на английском языке). 

 Чтобы использовать описанный механизм в Вашем приложении

  1. Прежде всего, экспортируйте модель как отдельное приложение (мы рекомендуем экспортировать модель сразу в ту папку, где находится Ваш Java проект).

  2. Добавьте .jar файлы, созданные при экспорте модели, в Ваш Java проект. Для этого предварительно обновите информацию в дереве проекта, щелкнув правой кнопкой мыши по проекту в дереве и выбрав пункт контекстного меню Refresh.


  1. Вы увидите новые файлы в дереве проекта. Выделите эти файлы и выберите команду Build path|Add to build path из контекстного меню. Вам будет нужно добавить скомпилированный .jar файл модели, а также .jar файлы библиотек, необходимые для успешного построения модели. Но не нужно добавлять bat/cmd/sh файл, используемый для запуска автономного приложения, и совершенно не нужный в нашем Java проекте.
  1. Импортируйте в класс Вашего проекта пакет, содержащий классы модели, написав в самом начале кода класса строку:

    import <имя_пакета_модели>.*;

    (Имя пакета модели можно узнать в AnyLogic, зайдя на страницу Основных свойств модели)



    В нашем конкретном случае нужно написать:

    import embedding_models.*;



    Обратите внимание, что вводя код в среде Eclipse Вы можете пользоваться уже привычным Мастером подстановки кода, появляющимся по нажатию комбинации клавиш Ctrl+пробел.

  2. Теперь Вы можете ссылаться в коде классов Вашего проекта на классы модели. Самый простой способ реализовать предложенное в модели решение - просто скопировать строки импорта Java пакетов и код метода  main() из класса модели MyApplication в класс Вашего Java проекта:

Вот и все - запустите класс Вашего проекта как Java приложение. Вы увидите диалоговое окно, в которое будет помещена презентация модели. Вы сможете управлять моделированием как с помощью панели инструментов AnyLogic, так и с помощью нестандартных кнопок управления. Этот пример показывает, как можно создавать полнофункциональные приложения, с пользовательским интерфейсом, не ограниченным предлагаемым AnyLogic инструментарием. 


См. также

 Встраивание моделей AnyLogic в сторонние Java приложения

 Запуск модели AnyLogic из внешнего приложения

 Запуск модели без окна презентации из стороннего приложения