Порты

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

 Чтобы добавить в объект порт
  1. Перетащите элемент Порт  из палитры Агентв то место графического редактора, где вы хотите его нарисовать.

Свойства

Основные

Имя – Имя порта. Имя используется для идентификации порта и доступа к нему из кода.

Отображать имя – Если опция выбрана, то имя порта будет отображаться в графическом редакторе.

Исключить – Если опция выбрана, то порт будет исключен из модели.

Отображается на верхнем уровне – Если опция выбрана, то порт будет виден на презентации типа агента, в который будет вложен данный объект. 

Видимость – Если опция выбрана, то порт будет отображаться на презентации во время выполнения модели.

Действия обработки сообщений

Действие при получении – Код, выполняемый при получении сообщения (при вызове пользователем метода receive() этого порта, или при поступлении в порт сообщения из порта вложенного объекта). Только что полученное сообщение доступно здесь как msg (локальная переменная типа Object).*

Действие при отправке – Код, выполняемый при отправке сообщения (при вызове пользователем метода send() этого порта, или при поступлении в порт сообщения из порта агента, находящегося выше или на том же уровне иерархии, что и агент-владелец этого порта). Сообщение доступно здесь как msg (локальная переменная типа Object).*

* Если поле будет оставлено пустым, или введенный в поле код будет возвращать true, то сообщение будет перенаправляться дальше согласно правилам пересылки сообщений, в противном случае оно будет уничтожено.

Специфические

Порт пользовательского класса – Если опция выбрана, то порт будет экземпляром пользовательского класса порта, вызов конструктора которого должен быть написан в поле Код конструктора. Такая возможность требуется в том случае, если у вас в модели(моделях) несколько портов с одинаковой нестандартной функциональностью (например, одинаковое Действие при получении сообщений), и вы хотите задать эту функциональность только один раз с помощью своего класса порта, а в дальнейшем просто создавать экземпляры этого класса.

Тип входящего сообщения – Тип сообщений, которым разрешено поступать в этот порт. Сообщения, которые не смогут быть приведены к указанному типу, будут проигнорированы и удалены. Если вы оставите в поле Object, то фильтрация сообщений по типу производиться не будет и портом смогут приниматься сообщения всех типов.

Тип исходящего сообщения – Тип сообщений, которым разрешено отсылаться через этот порт. Сообщения, которые не смогут быть приведены к указанному типу, будут проигнорированы и удалены. Если вы оставите в поле Object, то фильтрация сообщений по типу производиться не будет и через порт смогут посылаться сообщения всех типов.


См. также

 Передача сообщений

 Соединение портов

 Создание портов с нестандартной функциональностью

 Справочник классов: Класс Port