
Этот блок может содержать в себе агентов и поддерживает их изъятие в ручном режиме (нужно вызвать функции free(), или freeAll()). Этот блок не имеет определенного порядка (кроме случаев, когда включено вытеснение).
- Тип агента
- 
    Тип агентов, проходящих через блок.
    Далее: T
- Вместимость
- 
    [Параметр виден, если не выбрана опция Максимальная вместимость]
 Вместимость очереди.Тип: int capacity
 Значение по умолчанию: 100
 Установить новое значение во время выполнения: set_capacity(новое значение)
- Максимальная вместимость
- 
    Если опция выбрана (true), то вместимость очереди будет максимально возможной (ограничена константой Integer.MAX_VALUE).
    Синтаксис: boolean maximumCapacity
 Значение по умолчанию: false
 Установить новое значение во время выполнения: set_maximumCapacity(новое значение)
- Место агентов
- 
    Фигура разметки (узел или путь), где располагаются агенты, пока они находятся в этом блоке.
    Синтаксис: AnimationStaticLocationProvider entityLocation
- Разрешить уход по таймауту
- 
    Если опция выбрана (true), то агенты могут покидать очередь по таймауту. После проведения в очереди максимально допустимого времени агенты будут покидать блок через специальный порт outTimeout .
    Синтаксис: boolean enableTimeout
 Значение по умолчанию: false
- 
    [Параметр виден, если выбрана опция Разрешить уход по таймауту]
 Выражение, вычисляющее значение таймаута (максимально допустимое время, которое агент может провести в очереди) для агента.Тип значения: double Локальная переменная: T agent — агент
- Разрешить вытеснение
- 
    Если опция выбрана (true), агенты располагаются в очереди соответственно их приоритетам и могут быть вытеснены агентами с более высоким приоритетом.
    Синтаксис: boolean enablePreemption
 Значение по умолчанию: false
- Вытеснять
- 
    [Параметр виден, если выбрана опция Разрешить вытеснение]
 Задает, как поступающие в блок агенты вытесняют агентов, уже находящихся в нем.
 Вытеснять можно:
 самого последнего агента — Выбранная по умолчанию политика. Будет вытеснен последний добавленный в очередь агент.
 агента с самым низким приоритетом — Агенты будут вытесняться согласно их приоритетам (заданным в поле Приоритет агента).
 по сравнению агентов — В этом режиме для каждого поступающего в блок агента будет проверяться логическое выражение, заданное в поле "agent1 может вытеснить agent2". Это выражение будет сравнивать этого агента с агентами, уже хранящимися в блоке, и определит того агента, который должен будет этот блок покинуть.
 самого старого агента — Будет вытеснен тот агент, который был добавлен в очередь раньше остальных.Имя: queuing
 Допустимые значения:
 Wait.QUEUING_FIFO — самого последнего агента
 Wait.QUEUING_PRIORITY — агента с самым низким приоритетом
 Wait.QUEUING_COMPARISON — по сравнению агентов
 Wait.QUEUING_LIFO — самого старого агента
- 
    [Параметр виден, если Вытеснять: агента с самым низким приоритетом]
 Приоритет поступающего агента (чем больше значение, тем выше приоритет).Тип значения: double
 Локальная переменная: T agent — агент
 Значение по умолчанию: 0
- 
    [Параметр виден, если Вытеснять: по сравнению агентов]
 Код сравнения, который должен возвращать true, если агент agent1 имеет более высокий приоритет чем агент agent2 (иначе, false, включая случаи равных приоритетов).Тип значения: boolean Локальная переменная: T agent1, T agent2 — агенты
 Значение по умолчанию: false
- Выталкивать агентов
- 
    Если опция выбрана (true), то агенты, созданные этим блоком, будут немедленно вытолкнуты дальше независимо от состояния следующего блока. Если опция не выбрана, агенты будут не выталкиваться, а выходить постепенно: только когда следующий блок готов принять еще одного агента, он запрашивает его у этого блока, и тогда агент проходит дальше.
    Синтаксис: boolean pushProtocol
 Значение по умолчанию: false
- Вернуть агента в исходную точку
- 
    Если опция выбрана, агенты возвращаются в свое начальное местоположение ( узел или путь, где они находились до того, как попали в этот блок), после того, как покинут фигуру разметки, заданную в параметре Место агентов.
    Синтаксис: boolean restoreEntityLocationOnExit
- Включить сбор статистики
- 
  Этот блок собирает статистику по длине очереди. Если сбор статистики глобально отключен для всех блоков Библиотеки моделирования процессов с помощью блока PML Settings, то эта опция позволяет переопределить эту настройку и включить сбор статистики для этого конкретного блока. Иначе статистика собирается вне зависимости от этой настройки.
  Синтаксис: boolean forceStatisticsCollection
 Значение по умолчанию: false
Во всех действиях текущий агент доступен как локальная переменная agent.
- При входе
- Код, выполняемый, когда агент поступает в блок (и помещается в очередь).
- При выходе
- Код, выполняемый, когда агент покидает блок через порт out (обычным способом).
- При уходе по таймауту
- 
    [Параметр виден, если выбрана опция Разрешить уход по таймауту]
 Код, выполняемый, когда агент покидает блок по таймауту (прождав в очереди максимально допустимое время) через специальный порт outTimeout.
- При вытеснении
- 
    [Параметр виден, если выбрана опция Разрешить вытеснение]
 Код, выполняемый, когда агент покидает блок через порт outPreempted в результате вытеснения.
- При извлечении
- 
    Код, выполняемый, когда агент умышленно извлекается из блока посредством вызова функции агента remove(). Этот код вызывается автоматически после вызова функции remove().
    Локальная переменная: T agent — агент
| Функция | Описание | 
|---|---|
| int size() | Возвращает количество агентов, находящихся в данный момент в очереди. | 
| T get(int index) | Возвращает агента, находящегося в позиции с номером index (ближайшая к выходу из очереди позиция имеет номер 0). | 
| T remove(Agent agent) | Извлекает агента agent из очереди и возвращает его. Если такого агента в очереди обнаружено не будет, функция вернет null. | 
| boolean free(Agent agent) | Сообщает очереди освободить указанного агента и направить его к выходному порту out. | 
| boolean freeAll() | Сообщает очереди освободить всех агентов и направить их к выходному порту out. | 
| boolean isStatisticsCollected() | Возвращает true, если блок собирает статистику. | 
| resetStats() | Удаляет статистику, собранную блоком к текущему моменту времени. | 
| Iterator<T> iterator() | Возвращает итератор агентов (в порядке: первый — у выхода, последний — самое большое время, оставшееся до его задержки). | 
- StatisticsContinuous statsSize
- Непрерывная статистика длины очереди. Статистика собирается, если сбор статистики не выключен блоком PML Settings.
- in
- Входной порт.
- out
- Выходной порт.
- outTimeout
- Выходной порт для агентов, покидающих блок по таймауту.
- outPreempted
- Выходной порт для агентов, покидающих блок в результате вытеснения.
- 
        Как мы можем улучшить эту статью?
-