
Объект направляет входящие заявки в один из двух выходных портов в зависимости от выполнения заданного (детерминистического или заданного с помощью вероятностей) условия. Условие может зависеть как от заявки, так и от каких-то внешних факторов. Поступившая заявка покидает объект в тот же момент времени.
Может использоваться для сортировки заявок согласно заданному критерию, для случайного разделения потока заявок на части и т.д. Предположим, например, что в Вашей модели моделируются клиенты (с помощью заявок типа Customer, у которого есть поле vip типа boolean). Тогда если Вы захотите направлять VIP клиентов в верхний порт (True), а всех остальных - в нижний (False), то Вы должны задать условие entity.vip и выбрать класс Customer в качестве класса заявки объекта SelectOutput. Более сложный случай: Вы хотите перенаправить в верхний порт объекта только 80% VIP клиентов, а оставшиеся 20% (и всех остальных) - в нижний порт. Тогда условие будет выглядеть как entity.vip && randomTrue( 0.8 ).
Иногда требуется иметь более двух выходов (и соответственно, больше одного условия). Вы можете создать свой собственный активный объект SelectOutput[N] с одним входным портом, несколькими (N) выходными портами и N-1 динамическим параметром, задающим условия. Есть два способа реализации: Вы можете либо использовать каскад из N-1 объекта SelectOutput, либо добавить внутрь объекта один объект Exit и N объектов Enter (реализовать так называемый механизм сложной маршрутизации).