Assembler


Этот блок позволяет осуществить сборку одной новой заявки из определенного числа заявок, пришедших из различных источников (до 5). Он может быть использован, например, для объединения различных этапов работы. Класс новой заявки, так же как и ее инициализация, определяется пользователем. Число заявок, которые должны поступить на каждый отдельно взятый порт для того, чтобы могла быть создана одна новая заявка, задается с помощью параметров объекта (Количество 1, Количество 2, и т.д.). Поступившие заявки ожидают поступления всех необходимых для сборки заявок. Как только новая заявка может быть собрана, начинается операция сборки. Время сборки задается в параметре Время задержки

Операция сборки может потребовать участия ресурсов - в этом случае Вы должны соединить соответствующий объект ResourcePool к нижнему порту объекта  Assembler и задать количество ресурсов этого типа, необходимое для сборки, в поле Количество ресурсов.

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

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

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

Все прибывающие в объект заявки могут отображаться на анимации в заданных пользователем областях.

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

Класс новой заявки
Класс заявок, покидающих объект через порт out, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, например, onExit.
Синтаксис: T extends Entity
Значение по умолчанию: Entity
Класс заявки 1
Класс заявок, поступающих в порт in1, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, например, onEnter1.
Синтаксис: T1 extends Entity
Значение по умолчанию: Entity
Класс заявки 2
Класс заявок, поступающих в порт in2, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, например, onEnter2.
Синтаксис: T2 extends Entity
Значение по умолчанию: Entity
Класс заявки 3
Класс заявок, поступающих в порт in3, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, например, onEnter3.
Синтаксис: T3 extends Entity
Значение по умолчанию: Entity
Класс заявки 4
Класс заявок, поступающих в порт in4, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, например, onEnter4.
Синтаксис: T4 extends Entity
Значение по умолчанию: Entity
Класс заявки 5
Класс заявок, поступающих в порт in5, должен быть подклассом Entity. Указав класс заявки, Вы можете напрямую обращаться к полям этого класса в коде динамических параметров, например, onEnter5.
Синтаксис: T5 extends Entity
Значение по умолчанию: Entity

Порты

InPort in1
Первый входной порт.
InPort in2
Второй входной порт.
InPort in3
Третий входной порт.
InPort in4
Четвертый входной порт.
InPort in5
Пятый входной порт.
Port access
Порт, который может быть соединен с портом того объекта ResourcePool, чьи ресурсы будут использоваться этим объектом по умолчанию (если не будет указан другой объект в поле Объект ResourcePool).
OutPortPush out
Выходной порт.

Параметры

Количество 1 
Количество заявок, требуемое для поступления во входной порт in1 для создания одной заявки.
Синтаксис: int quantity1
Значение по умолчанию: 1 
Количество 2 
Количество заявок, требуемое для поступления во входной порт in2 для создания одной заявки.
Синтаксис: int quantity2
Значение по умолчанию: 1 
Количество 3 
Количество заявок, требуемое для поступления во входной порт in3 для создания одной заявки.
Синтаксис: int quantity3
Значение по умолчанию: 0 
Количество 4 
Количество заявок, требуемое для поступления во входной порт in4 для создания одной заявки.
Синтаксис: int quantity4
Значение по умолчанию: 0 
Количество 5 
Количество заявок, требуемое для поступления во входной порт in5 для создания одной заявки.
Синтаксис: int quantity5
Значение по умолчанию: 0 
Новая заявка [динамический]
Выражение, определяющая, какая заявка будет создаваться (обычно просто вызов конструктора класса создаваемой заявки).
Синтаксис: T newEntity
Локальные переменные:  Queue< T1 > queue1 - заявки, поступившие в порт in1 и хранящиеся в данный момент в очереди queue1.
             Queue< T2 > queue2 - заявки, поступившие в порт in2 и хранящиеся в данный момент в очереди queue2.
             Queue< T3 > queue3 - заявки, поступившие в порт in3 и хранящиеся в данный момент в очереди queue3.
             Queue< T4 > queue4 - заявки, поступившие в порт in4 и хранящиеся в данный момент в очереди queue4.
             Queue< T5 > queue5 - заявки, поступившие в порт in5 и хранящиеся в данный момент в очереди queue5.
Значение по умолчанию: new Entity()
Фигура анимации новой заявки [динамический]
Фигура анимации, с помощью которой заявки, создаваемые этим объектом, будут отображаться на презентации. Фигура доступна из кода как  entity.getShape() и может быть изменена в любое время с помощью метода entity.setShape(). Поскольку этот параметр динамический, Вы можете задавать различные фигуры для различных заявок, или вообще задать уникальную фигуру для каждой заявки, написав здесь, например, new ShapeOval().
Синтаксис: Shape entityShape
Локальная переменная: T entity - заявка.
Уникальная фигура для каждой заявки
Если опция выбрана (true), то объект создаст копию заданной Фигуры анимации новой заявки и присвоит ее создаваемой заявке. В этом случае свойства фигуры (и ее содержимое, если это группа фигур) могут быть изменены отдельно для каждой заявки. Если же опция не выбрана, то все заявки будут отображаться с помощью одной и той же фигуры, и любое изменение ее свойств приведет к изменению анимаций всех таких заявок.
Синтаксис: boolean uniqueShape
Значение по умолчанию: false
Разрешить вращение
Если опция выбрана (true), то при движении собранных объектом заявок их фигуры анимации будут всегда поворачиваться согласно текущему направлению движения заявки.
Синтаксис: boolean enableRotation
Значение по умолчанию: true
Разрешить вращение по вертикали
Если опция выбрана (true), то при движении собранных объектом заявок их фигуры анимации будут поворачиваться согласно текущему направлению движения заявки как по горизонтали, так и по вертикали.
Синтаксис: boolean enableVerticalRotation
Значение по умолчанию: true
Количество ресурсов [динамический]
Выражение, вычисляющее количество ресурсов, необходимое для сборки одной заявки. Если задано значение 0, то операция будет проводиться без привлечения ресурсов.
Если Количество ресурсов равно нулю, то наличие ресурсов не проверяется (может ни быть соединен объект ресурсов, ни указано его имя в поле Объект ResourcePool, т.e. там будет значение null), при этом заявка будет просто проходить через объект.
Синтаксис: int quantity
Значение по умолчанию: 1
Локальная переменная: T entity - заявка.. 
Время задержки [динамический]
Выражение, вычисляющее время задержки, необходимое для сборки одной заявки.
Синтаксис: double delayTime
Локальная переменная: T entity - текущая заявка.
Значение по умолчанию: triangular( 0.5, 1, 1.5 )
Объект ResourcePool [динамический]
Выражение, возвращающее имя объекта ResourcePool, задающего ресурсы, которые требуются для сборки заявки. Если Вы оставите поле пустым, или если выражение будет возвращать null, то будут использоваться ресурсы объекта ResourcePool, соединенного с портом access этого объекта Service.
Синтаксис: ResourcePool resourcePool
Значение по умолчанию: null
Локальная переменная: T entity - заявка.
Действие при входе 1 [динамический]
Код, выполняемый при поступлении заявки в порт in1.
Синтаксис void onEnter1
Локальная переменная T1 entity - заявка.
Действие при входе 2 [динамический]
Код, выполняемый при поступлении заявки в порт in2.
Синтаксис void onEnter2
Локальная переменная T2 entity - заявка.
Действие при входе 3 [динамический]
Код, выполняемый при поступлении заявки в порт in3.
Синтаксис void onEnter3
Локальная переменная T3 entity - заявка.
Действие при входе 4 [динамический]
Код, выполняемый при поступлении заявки в порт in4.
Синтаксис void onEnter4
Локальная переменная T4 entity - заявка.
Действие при входе 5 [динамический]
Код, выполняемый при поступлении заявки в порт in5.
Синтаксис void onEnter5
Локальная переменная T5 entity - заявка.
Действие при начале задержки [динамический]
Код, выполняемый, когда заявка поступает во вложенный объект delay.
Синтаксис: void onEnterDelay
Локальные переменная: T entity - заявка
Действие при выходе [динамический]
Код, выполняемый, когда собранная заявка покидает объект.
Синтаксис: void onExit
Локальная переменная: T entity - заявка.
Фигура анимации (queue 1)
Фигура анимации вложенного объекта queue1. Тип фигуры зависит от выбранного Типа анимации (queue 1).
Синтаксис: Shape animationGuideQueue1
Тип анимации (queue 1)
Тип анимации вложенного объекта queue1. Допустимые значения: Путь, Мешок, Упорядоченная, Набор, Одиночная
Синтаксис: int animationTypeQueue1
Значение по умолчанию: Путь
Допустимые значения: Animator.PATH, Animator.BAG, Animator.ARRANGED, Animator.SET, Animator.SINGLE
Направление анимации (queue 1)
[Параметр виден, если в качестве Типа анимации (queue 1) выбран Путь] Направление движения анимаций по фигуре анимации вложенного объекта queue2.
Синтаксис: boolean animationForwardQueue1
Значение по умолчанию: Вперед (true)
Фигура анимации (queue 2)
Фигура анимации вложенного объекта queue2. Тип фигуры зависит от выбранного Типа анимации (queue 2).
Синтаксис: Shape animationGuideQueue2
Тип анимации (queue 2)
Тип анимации вложенного объекта queue2. Допустимые значения: Путь, Мешок, Упорядоченная, Набор, Одиночная
Синтаксис: int animationTypeQueue2
Значение по умолчанию: Путь
Допустимые значения: Animator.PATH, Animator.BAG, Animator.ARRANGED, Animator.SET, Animator.SINGLE
Направление анимации (queue 2)
[Параметр виден, если в качестве Типа анимации (queue 2) выбран Путь] Направление движения анимаций по фигуре анимации вложенного объекта queue2.
Синтаксис: boolean animationForwardQueue2
Значение по умолчанию: Вперед (true)
Фигура анимации (queue 3)
Фигура анимации вложенного объекта queue3. Тип фигуры зависит от выбранного Типа анимации (queue 3).
Синтаксис: Shape animationGuideQueue3
Тип анимации (queue 3)
Тип анимации вложенного объекта queue3. Допустимые значения: Путь, Мешок, Упорядоченная, Набор, Одиночная
Синтаксис: int animationTypeQueue3
Значение по умолчанию: Путь
Допустимые значения: Animator.PATH, Animator.BAG, Animator.ARRANGED, Animator.SET, Animator.SINGLE
Направление анимации (queue 3)
[Параметр виден, если в качестве Типа анимации (queue 3) выбран Путь] Направление движения анимаций по фигуре анимации вложенного объекта queue3.
Синтаксис: boolean animationForwardQueue3
Значение по умолчанию: Вперед (true)
Фигура анимации (queue 4)
Фигура анимации вложенного объекта queue4. Тип фигуры зависит от выбранного Типа анимации (queue 4).
Синтаксис: Shape animationGuideQueue4
Тип анимации (queue 4)
Тип анимации вложенного объекта queue4. Допустимые значения: Путь, Мешок, Упорядоченная, Набор, Одиночная
Синтаксис: int animationTypeQueue4
Значение по умолчанию: Путь
Допустимые значения: Animator.PATH, Animator.BAG, Animator.ARRANGED, Animator.SET, Animator.SINGLE
Направление анимации (queue 4)
[Параметр виден, если в качестве Типа анимации (queue 4) выбран Путь] Направление движения анимаций по фигуре анимации вложенного объекта queue4.
Синтаксис: boolean animationForwardQueue4
Значение по умолчанию: Вперед (true)
Фигура анимации (queue 5)
Фигура анимации вложенного объекта queue5. Тип фигуры зависит от выбранного Типа анимации (queue 5).
Синтаксис: Shape animationGuideQueue5
Тип анимации (queue 5)
Тип анимации вложенного объекта queue5. Допустимые значения: Путь, Мешок, Упорядоченная, Набор, Одиночная
Синтаксис: int animationTypeQueue5
Значение по умолчанию: Путь
Допустимые значения: Animator.PATH, Animator.BAG, Animator.ARRANGED, Animator.SET, Animator.SINGLE
Направление анимации (queue 5)
[Параметр виден, если в качестве Типа анимации (queue 5) выбран Путь] Направление движения анимаций по фигуре анимации вложенного объекта queue4.
Синтаксис: boolean animationForwardQueue5
Значение по умолчанию: Вперед (true)
Фигура анимации (delay)
Фигура анимации объекта delay. Тип фигуры зависит от выбранного Типа анимации (delay).
Синтаксис: Shape animationGuideDelay
Тип анимации (delay)
Тип анимации объекта delay. Допустимые значения: Путь, Мешок, Упорядоченная, Набор, Одиночная
Синтаксис: int animationTypeDelay
Значение по умолчанию: Путь
Допустимые значения: Animator.PATH, Animator.BAG, Animator.ARRANGED, Animator.SET, Animator.SINGLE
Направление анимации (delay)
[Параметр виден, если в качестве Типа анимации (delay) выбран Путь] Направление движения анимаций по фигуре анимации объекта delay.
Синтаксис: boolean animationForwardDelay
Значение по умолчанию: Вперед (true)
Включить сбор статистики
Если опция выбрана (true), то для вложенных объектов будет собираться статистика.
Синтаксис: boolean enableStats
Значение по умолчанию: false

Функции

int queueSize( int n ) - возвращает количество заявок в очереди с заданным индексом. 

T queueGet( int n, int index ) -  возвращает заявку, находящуюся в очереди с заданным индексом n в позиции с номером index (ближайшая к выходу из очереди позиция имеет номер 0).

int delaySize() - возвращает количество заявок во вложенном объекте Delay.

T delayGet( int index ) - возвращает заявку, находящуюся во вложенном объекте Delay в позиции с номером index (самая "старая" заявка находится в позиции с номером 0).