Начиная с версии 6.7 AnyLogic предлагает в распоряжение пользователей простой механизм встраивания моделей AnyLogic в сторонние Java приложения.
Среди обучающих моделей AnyLogicВы можете найти модели, демонстрирующие различные сценарии встраивания. Модели содержат код, который может использоваться в качестве отправной точки в том случае, если Вам нужно будет использовать какой-либо из описанных механизмов в Вашем приложении, усовершенствовав его под Вашу конкретную задачу.
В этой статье описывается, как встраивать презентацию модели AnyLogic в окно стороннего Java приложения (и также добавить в это окно элементы управления ходом моделирования). Этот случай интеграции реализован в следующей модели:
How-To model: Embedding AnyLogic Models in External Applications
Чтобы проверить, как работает этот сценарий интегрирования
Давайте посмотрим, что же именно нужно сделать для того, чтобы встроить презентацию модели 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 на английском языке).
Чтобы использовать описанный механизм в Вашем приложении
Прежде всего, экспортируйте модель как отдельное приложение (мы рекомендуем экспортировать модель сразу в ту папку, где находится Ваш Java проект).
Добавьте .jar файлы, созданные при экспорте модели, в Ваш Java проект. Для этого предварительно обновите информацию в дереве проекта, щелкнув правой кнопкой мыши по проекту в дереве и выбрав пункт контекстного меню Refresh.


Импортируйте в класс Вашего проекта пакет, содержащий классы модели, написав в самом начале кода класса строку:
import <имя_пакета_модели>.*;
(Имя пакета модели можно узнать в AnyLogic, зайдя на страницу Основных свойств модели)

В нашем конкретном случае нужно написать:
import embedding_models.*;

Обратите
внимание, что вводя код в среде Eclipse Вы можете пользоваться уже
привычным Мастером подстановки кода, появляющимся по нажатию комбинации
клавиш Ctrl+пробел.
Теперь Вы можете ссылаться в коде классов Вашего проекта на классы модели. Самый простой способ реализовать предложенное в модели решение - просто скопировать строки импорта Java пакетов и код метода main() из класса модели MyApplication в класс Вашего Java проекта:

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