Динамическое соединение портов во время моделирования

AnyLogic поддерживает создание динамических моделей с динамически меняющейся структурой и взаимосвязями компонентов

Вы можете соединять порты во время работы модели с помощью методов connect() и map() и рассоединять их с помощью методов disconnect() и unmap(). Изменяя взаимосвязи объектов во время моделирования, вы можете легко моделировать системы с замысловатой топологией и с динамически меняющейся структурой,  например, системы с перемещающимися объектами.

Тип соединения
Метод для соединения

Метод для отсоединения
Порт и порт вложенного объекта
port.map(source.out);
port.unmap(source.out);


 Обратите внимание на то, что методы map() и unmap() не должны вызываться у порта вложенного объекта. Следующая строка вызовет ошибку:

source.out.map(port);

Порты вложенных объектов
source.out.connect(sink.in);
source.out.disconnect(sink.in);

Класс порта Port также предоставляет метод, производящий отсоединение порта от всех соединенных с ним портов:

disconnectAndUnmapAll();

Соединение портов объектов Библиотеки моделирования процессов

Если вы динамически измените топологию связей (с помощью методов портов connect()/disconnect() или map()/unmap() портов объектов Библиотеки моделирования процессов), то порты не заметят этого изменения и будут продолжать взаимодействовать согласно топологии соединений, установленной при запуске.

Чтобы привести информацию о соединениях, хранимую в портах, в соответствие в реальной топологией связей, нужно вызвать метод refreshConnections() у того порта, у которого динамически было добавлено или удалено какое-то соединение. Например, если вы динамически соедините порт out объекта myService, то нужно будет вызвать:

myService.release.out.refreshConnections()

Демо модель: Connecting Enterprise Library Objects Dynamically

Эта демо модель показывает пример динамического соединения объектов Библиотеки моделирования процессов. Она содержит два отдельных участка диаграммы процесса, которые вы можете соединить щелчком по расположенной между ними кнопке. Чтобы понять реализацию подхода, вы можете посмотреть на поле Действие этой кнопки.