Pickup

Удаляет заявки из заданного объекта Queue и добавляет их к содержимому поступающей заявки-контейнера. Объект Queue может быть задан как графически, путем соединения его порта out с портом inPickup этого объекта Pickup, так и с помощью параметра Объект Queue (в случае одновременого использования обоих способов заявки будут извлекаться из объекта, указанного в параметре).

По прибытии заявки в порт in объект Pickup просматривает в цикле заявки, содержащиеся в очереди объекта Queue и выбирает оттуда заявки согласно выбранному в параметре Подбирать режиму: либо Все заявки из очереди, либо первые N заявок (Заданное количество (если доступно)), либо только те заявки, для которых выполняется заданное Условие. Вся операция занимает нулевое время.

Условие может зависеть как от добавляемой заявки, так и от партии заявок. Операция занимает нулевое время: как только партия заявок поступает в объект Pickup, она сразу его покидает.

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

Приведем некоторые примеры условия выбора заявок: 

true - из очереди будут извлечены все заявки

container.contents.size() <= maxSize - будут извлечены не более maxSize первых заявок

entity instanceof Cat and ((Cat)entity).age < 3 - только коты не старше 3 лет

Впоследствии Вы можете извлечь заявки из заявки-контейнера либо с помощью объекта Dropoff, либо (если при этом нужно будет удалить саму заявку-контейнер) - с помощью  Unbatch. Если же Вам нужно просто группировать Ваши заявки, то, возможно, удобнее будет использовать для этого не Pickup, а Batch.

Параметры класса

Классы заявок
Контейнер
Класс заявок-контейнеров, поступающих в порт in, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, таких, как onEnter.
Синтаксис: TContainer extends Entity
Значение по умолчанию: Entity
Заявка
Класс заявок, подбираемых заявкой-контейнером, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, таких, как onPickup.
Синтаксис: TBatch extends Entity
Значение по умолчанию: Entity

Порты

InPort in
Входной порт.
InPort inPickup
Входной порт, который должен быть соединен с портом out того объекта Queue, из которого контейнер должен подбирать заявки, или же оставлен несоединенным (если имя объекта Queue задается с помощью параметра объекта Объект Queue).
OutPortPush out
Выходной порт.

Параметры

Подбирать
Определяет режим помещения заявок из очереди Queue в заявку-контейнер: должен ли объект извлекать Все заявки из очереди, либо их Заданное количество (если доступно), либо только те заявки, для которых выполняется заданное Условие (Пока выполняется условие).
Синтаксис: int pickupType
Значение по умолчанию
: Пока выполняется условие (Pickup.BY_CONDITION)
Допустимые значения: Pickup.ALL, Pickup.QUANTITY, Pickup.BY_CONDITION
Условие [динамический]
[Виден, если у параметра Подбирать выбрана опция Пока выполняется условие] Условие, вычисляемое для каждой заявки в очереди и определяющее, должна ли данная заявка быть помещена в заявку-контейнер. Условие может зависеть как от заявки-контейнера, так и от содержащихся в очереди заявок - "кандидатов" на добавление.
Синтаксис: boolean condition
Локальные переменные: T entity - заявка - "кандидат" на добавление в контейнер.
                          TContainer container - заявка-контейнер.
Значение по умолчанию: true (в контейнер будут помещаться все заявки)
Количество [динамический]
[Виден, если у параметра Подбирать выбрана опция Заданное количество (если доступно)] Выражение, возвращающее количество заявок, которое должно быть помещено в заявку-контейнер (если в очереди Queue будет содержаться такое количество заявок).
Синтаксис int quantity
Локальная переменная: TContainer container - заявка-контейнер.
Значение по умолчанию 1
Действие при входе [динамический]
Код, выполняемый, когда заявка-контейнер поступает в объект.
Синтаксис: void onEnter
Локальная переменная: TContainer container - заявка-контейнер.
Действие при подборе [динамический]
Код, выполняемый для каждой заявки, извлекаемой из очереди Queue и добавляемой в заявку-контейнер.
Синтаксис: void onPickup
Локальные переменные: T entity - добавляемая в контейнер заявка.
                          TContainer container - заявка-контейнер. 
Действие при выходе [динамический]
Код, выполняемый, когда заявка-контейнер покидает объект.
Синтаксис: void onExit
Локальная переменная: TContainer container - заявка-контейнер.
Объект Queue [динамический]
Динамически вычисляемое выражение, возвращающее имя объекта Queue, из которого будут извлекаться заявки. Если выражение вернет допустимое имя объекта, то именно оно и будет использоваться объектом, даже если графически к его порту будет подсоединен другой объект Queue.
Синтаксис: Queue queue
Локальная переменная: TContainer container - заявка-контейнер.
Значение по умолчанию: null