Combine


Дожидается поступления двух агентов в порты in1 и in2 (в произвольном порядке), а затем создает нового агента и направляет его на выходной порт. Агент, прибывающий первым, хранится внутри объекта, пока не придет другой. Как только прибывает другой агент, созданный агент сразу же покидает объект. 

Объект Combine может использоваться для различных целей. Во-первых, он может служить точкой синхронизации, позволяющей одному агенту продолжать свое движение только после прихода другого. Во-вторых, вы можете использовать объект Combine для воссоединения агента с его копией/родственным агентом, созданным объектом Split. В-третьих, Combine может служить альтернативой объекту Pickup, если требуется подобрать только одного агента: для этого нужно просто написать agent.addEntityToContents( agent2 ) в коде действия При выходе

Пожалуйста, обратите внимание, что в этом объекте могут уничтожаться агенты. Но поскольку объект не знает, какие именно агенты будут уничтожены, он не проверяет выполнение у агентов условий, необходимых для их уничтожения (см. описание объекта Sink). Обеспечение выполнения всех этих условий входит в вашу обязанность.

Если объединенный агент создается как абсолютно новый, вы можете указать собственный тип агента в параметре Новый агент (объединенный), чтобы продолжить использовать этот тип далее в параметрах блоков диаграммы процесса. В случае, если объединенный агент равен агентам agent1 или agent2, и это не стандартный тип агента, а созданный вами, и вы хотите, чтобы этот тип агента распознавался в следующих блоках диаграммы процесса, укажите этот тип в параметре Тип агента (out) секции Специфические.

Прибывающий первым агент может отображаться на презентации в заданном вами месте.

Параметры

Объединенный агент
Определяет, как будет создаваться новый (объединенный) агент: 
Абсолютно новый - новый агент создается путем выполнения пользовательского кода в поле Новый агент (объединенный),
agent1 - новый агент равен первоначальному агенту, поступившему в порт in1 (другой агент уничтожается),
agent2 - новый агент равен первоначальному агенту, поступившему в порт in2 (другой агент уничтожается).
Имя: combineMode
Значение по умолчанию: Абсолютно новый (Combine.NEW)
Возможные значения: Combine.NEW, Combine.ENTITY1, Combine.ENTITY2 
Новый агент (объединенный) [динамический]
[Параметр виден, если у параметра Объединенный агент выбрана опция Абсолютно новый] Тип нового агента (или выражение, определяющее, какой агент будет создаваться).
Тип значения: Agent
Локальные переменные: T1agent1 - первоначальный агент, поступивший в порт in1.
                                           T2agent2 - первоначальный агент, поступивший в порт in2.
Изменить размеры [динамический]
Если опция выбрана (true), можно будет изменить размеры агентов, создаваемых этим блоком, задав соответствующие значения в параметрах Длина, Ширина и Высота ниже.
Тип значенияboolean
Локальная переменная:  agent - агент
Длина [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Новая длина создаваемого агента.
Тип значенияdouble
Локальная переменная:  agent - агент
Ширина [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Новая ширина создаваемого агента.
Тип значенияdouble
Локальная переменная:  agent - агент
Высота [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Новая высота создаваемого агента.
Тип значенияdouble
Локальная переменная:  agent - агент
Место агентов 1
Фигура разметки (узел или путь) первоначального агента, поступившего в объект через порт in1 и ожидающего поступления другого агента.
Синтаксис: AnimationStaticLocationProvider entityLocation1
Место агентов 2
Фигура разметки (узел или путь) первоначального агента, поступившего в объект через порт in2 и ожидающего поступления другого агента.
Синтаксис: AnimationStaticLocationProvider entityLocation2
Местоположение собранных агентов
Узел или путь, где находится объединенный агент, пока он не перешел в следующий блок. 
Синтаксис: AnimationStaticLocationProvider entityLocation
Специфические
Добавить созданных агентов в
Здесь вы можете указать, куда будут помещены агенты, созданные этим блоком, в популяцию по умолчанию или в другую популяцию агентов, которую вы можете выбрать ниже.
Синтаксис:  boolean addToCustomPopulation
Популяция агентов [динамический]
[Параметр виден, если выбрана опция  Добавить объединенных агентов в] Имя популяции агентов, куда будут помещены агенты, созданные этим блоком.
Тип значения: AgentList
Локальные переменные: T agent - созданный агент, покидающий объект.
                                           T1agent1 - первоначальный агент, поступивший в порт in1.
                                           T2agent2 - первоначальный агент, поступивший в порт in2.
Выталкивать агентов
Если опция выбрана (true), то агенты, созданные этим блоком, будут немедленно вытолкнуты дальше независимо от состояния следующего блока. 
Синтаксис:  boolean pushProtocol
Вернуть агента в исходную точку
Если опция выбрана, агенты возвращаются в свое начальное местоположение (узел или путь, где они находились до того, как попали в блок Combine), после того, как покинут фигуры разметки, заданные в параметрах Место агентов 1, 2.
Синтаксис:  boolean restoreEntityLocationOnExit
Действия
При входе 1 [код]
Код, выполняемый, когда через порт in1 в объект поступает агент.
Локальная переменная: T1 agent - агент. 
При входе 2 [код]
Код, выполняемый, когда через порт in2 в объект поступает агент.
Локальная переменная: T2 agent - агент. 
При выходе [код]
Код, выполняемый, когда созданный агент покидает объект.
Локальные переменные: T agent - созданный агент, покидающий объект в данный момент времени.
                     T1agent1 - первоначальный агент, поступивший в порт in1.
                     T2agent2 - первоначальный агент, поступивший в порт in2.
Специфические
Тип агента (in1), Тип агента (in2), Тип агента (out)
Тип агентов, поступающих в объект через порт in1, 
Тип агентов, поступающих в объект через порт in2, 
Тип агентов, покидающих объект.
Возможно, вам понадобится указать собственные типы агентов, чтобы они были доступны в действиях блока.
Далее: T1, T2, T

Порты

in1
Входной порт 1.
in2
Входной порт 2.
out
Выходной порт.