Моделирование работы отдела банка

Queue

Объект Queue моделирует очередь, он хранит поступающие заявки в определенном порядке: FIFO (заявки помещаются в очередь в порядке поступления), LIFO (заявки помещаются в порядке, обратном поступлению), RANDOM (заявки помещаются в произвольные места очереди) или PRIORITY (заявки помещаются в очередь в соответствии со значением своих полей priority). Заявка может покинуть объект Queue различными способами:

• “обычным способом” через порт output, когда объект, следующий в блок-схеме за этим объектом, готов принять заявку

• через порт outputTimeout, после того, как заявка проведет в очереди заданное количество времени (если включен режим таймаута)

• через порт outputPreempted, будучи вытесненной другой поступившей заявкой при заполненной очереди (если включен режим вытеснения)

• “вручную”, путем вызова фунцкии remove(int i)

В первом случае объект Queue покидает заявка, находящаяся в самом начале очереди (в нулевой позиции). Если заявка направлена в порт outputTimeout или outputPreempted, то она должна покинуть объект мгновенно. Если включена опция вытеснения preemption, то объект Queue всегда готов принять новую заявку, в противном случае при заполненной очереди заявка принята не будет. В свойстве capacity зададим максимальную длину очереди.

Переменные

Тип

Имя

Описание

Entity

Entity

Текущая заявка.

int

Position

Позиция очереди, в которую помещена только что прибывшая заявка.

double

timeoutValue

Значение таймаута, установленное для только что прибывшей заявки.

Функции

Тип возвращаемого значения

Имя

Описание

void

block()

Блокирует входной порт.

void

unblock()

Разблокировывает входной порт.

boolean

blocked()

Возвращает true, если входной порт заблокирован, и false - если нет.

int

size()

Количество заявок в очереди.

Entity

get( int i )

Возвращает заявку из i-й позиции (ближайшей к выходу считается позиция 0).

Entity

remove( int i )

Удаляет заявку из i-й позиции и возвращает ее.

boolean

canEnter()

Возвращает true, если новая заявка может быть помещена в очередь. Если включен режим вытеснения, то это происходит всегда; иначе это эквивалентно size()<capacity.

TimedDataSet

getStatsSize()

Возвращает статистику размера очереди.

void

resetStats()

Производит сброс накопленной статистики.

Параметры

Тип

Имя

Значение по умолчанию

Описание

code

onEnter

Код, выполняемый, когда заявка поступает в объект.

code

onExitPreempted

Код, выполняемый, когда заявка покидает объект через порт outputPreempted, будучи вытесненной другой заявкой.

code

onExitTimeout

Код, выполняемый, когда заявка покидает объект через порт outputTimeout в результате истечения таймаута ее пребывания в очереди.

code

onAtExit

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

code

onExit

Код, выполняемый, когда заяка покидает объект или через порт output, или после вызова функции remove().

int

queueType

FIFO

Тип очереди. Может быть одним из следующих: FIFO LIFO RANDOM PRIORITY

integer

capacity

100

Вместимость очереди.

integer

entitiesToAnimate

all

Количество заявок, которое будет отображено на анимации.

boolean

preemption

false

Если true, то включен режим вытеснения.

boolean

timeout

false

Если true, то включен режим таймаута.

Code double>

timeoutTime

infinity

Выражение, вычисляющее значение таймаута для заявки. Применяется только при включенном режиме таймаута (timeout равен true).

boolean

statsEnabled

false

Если true, то для этого объекта будет собираться статистика.

ShapeBase

animationShape

Шаблон анимации очереди. Тип зависит от выбранного аниматора.

int

animationType

AUTO

Тип аниматора очереди. Может быть одним из следующих: AUTO SINGLE SET BAG ARRANGED QUEUE

boolean

animationForward

true

Направление движения заявок на анимации, если объект отображается на анимации ломаной линией.

 
Перейти на страницу: 1 2 3 4 5