Сервис


Сервис является неотъемлемой частью таких элементов разметки пространства, как Сервис с очередями и Сервис с областью. Правило обслуживания пешеходов, задаваемые для Сервиса с очередями или Сервиса с областью, применяются ко всем содержащимся в них элементам Сервис. При этом для каждого отдельного элемента Сервис вы можете выбрать свое правило обслуживания пешеходов, чей приоритет будет выше, чем у правила, заданного для исходного элемента.

Существуют два вида сервисов:

Чтобы сменить тип сервиса в элементе разметки
  1. Щелкните по элементу разметки Сервис с очередями или Сервис с областью, чтобы выбрать его в графическом редакторе.
  2. В свойствах элемента выберите необходимую опцию (Точечный или Линейный) в параметре Тип сервиса.

Свойства

Общие

Имя – Имя сервиса. Данное свойство используется для того, чтобы иметь доступ к этому элементу из программного кода.

Отображать имя – Если опция выбрана, имя элемента будет отражаться в графическом редакторе.

Отображается на верхнем уровне – Если опция выбрана, то фигура будет видна на презентации типа агента, в который будет вложен данный агент.

Переопределить правило выбора очереди – Приоритет этого выбора выше, чем приоритет правила, выбранного для элементов Сервис с очередями или Сервис с областью. Он задает очередь, пешеходов из которой будет обслуживать этот сервис. Когда сервис становится свободным, он выбирает очередь заново в соответствии с выбранной опцией. Доступны следующие опции:
Самой длинной очереди
- очередь, содержащая наибольшее количество пешеходов.
Ближайшей очереди
- очередь, которая расположена ближе всего к сервису, вне зависимости от того, содержит она пешеходов или нет.
Ближайшей непустой очереди -
очередь с пешеходами, которая расположена ближе всего к сервису.
Следующей очереди (по порядку) - очереди выбираются по порядку друг за другом.
Очереди с приоритетом - очередь с наивысшим приоритетом (в соответствии с выражением, заданным в поле Заданной очереди).
Очередь задается пользователем
- очередь возвращается при выполнении выражения, заданного в поле Очередь.

Заданной очереди – [Доступен, если в параметре Переопределить правило выбора очереди выбрана опция Очереди с приоритетом] Здес вы можете ввести выражение Java, которое будет возвращать приоритет очереди. Чем выше возвращаемое значение, тем выше приоритет. Выражение пересчитывается динамически для каждой непустой очереди. В соответствии с результатами расчетов выбирается очередь с самым высоким приоритетом. Вы можете обратиться к очередями сервиса в данном выражении, использовав локальную переменную queue.

Очередь – [Доступен, если в параметре Переопределить правило выбора очереди выбрана опция Очередь задается пользователем] Здесь вы можете ввести выражение Java, которое будет возвращать выбранную очередь. Как правило, именно здесь необходимо размещать вызов вашей нестандартной функции Java.

Местоположение и размер

X – X-координата точки сервиса (если сервис Точечного типа) или начальной точки линии сервиса (если сервис Линейного типа).

Y – Y-координата точки сервиса (если сервис Точечного типа) или начальной точки линии сервиса (если сервис Линейного типа).

Направление пешехода – [Доступен, если сервис Точечного типа]. Задает угол вращения для 2D / 3D модели пешехода и позволяет развернуть агента в нужную сторону в точке сервиса.

dX – [Доступен, если сервис Линейного типа] X-координата конечной точки линии сервиса.

dY – [Доступен, если сервис Линейного типа] Y-координата конечной точки линии сервиса.

Функции

Сервис

Функция

Описание

getLongestQueue()

Возвращает очередь, которая содержит наибольшее количество пешеходов.

getClosestQueue()

Возвращает очередь, которая расположена ближе всего к сервису, вне зависимости от того, содержит она пешеходов или нет.

getClosestQueueNotEmpty()

Возвращает непустую очередь, расположенную ближе всего к сервису.

int queuePriority(queue)

Данный метод должен быть замещен, чтобы вернуть приоритет очереди если для параметра Переопределить правило выбора очереди выбрана опция Очереди с приоритетом.

Параметр:
queue - локальная переменная, доступная для элемента Сервис.

customSelectQueue()

Данный метод должен быть замещен, чтобы вернуть очередь, если для параметра Переопределить правило выбора очереди выбрана опция Очередь задается пользователем.

boolean isSuspended()

Возвращает true, если элемент Сервис находится в состоянии приостановки; в противном случае возвращает false. Элемент в состоянии приостановки не активен и не принимает пешеходов.

setSuspended(boolean suspended)

Помещает элемент Сервис в состояние приостановки, если значение suspended равно true; в противном случае помещает элемент в активное состояние.

Color getColor()

Возвращает цвет элемента.

setColor(Color color)

Задает цвет элемента.

Параметр:
color - цвет элемента. Задается при помощи константы цвета или с помощью конструктора new Color(<red>, <green>, <blue>).


Линия сервиса

Функция

Описание

double getStartX()

double getStartY()

double getStartZ()

Возвращает координату X (Y, Z) начальной точки линии сервиса.

double getEndX()

double getEndY()

double getEndZ()

Возвращает координату X (Y, Z) конечной точки линии сервиса.

double length()

Возвращает длину линии сервиса в пространстве 2D (в пикселях).

Position getForwardStartPosition
(Position out)

Position getReverseStartPosition
(
Position out)

Возвращает объект типа Position, который содержит координаты начальной (конечной) точки линии сервиса, а также углы вращения по горизонтали и вертикали.

Параметр:
Position out - объект, в который записываются данные.

Position getForwardPositionByOffset
(
double offset, Position out)

Position getReversePositionByOffset
(
double offset, Position out)

Возвращает объект out типа Position, который содержит координаты точки, находящейся на заданном расстоянии от начальной (конечной) точки линии сервиса, а также углы вращения по горизонтали и вертикали (в радианах.

Параметры:
double offset - расстояние (в пикселях) от начальной (конечной) точки линии сервиса.
Position out - объект, в который записываются данные.

double getForwardOrientation()

double getReverseOrientation()

Возвращает значение угла вращения линии сервиса по горизонтали вокруг начальной (конечной) точки (в радианах).


Точка сервиса

Функция

Описание

double getX()

double getY()

double getZ()

Возвращает координату X (Y, Z) точки сервиса.

Position getPosition(Position out)

Возвращает объект out типа Position, который содержит координаты точки сервиса, а также углы вращения по горизонтали и вертикали.

Параметр:
Position out - объект out, в который записываются данные.

double getOrientation()

Возвращает ориентацию сервиса (в радианах), т.е. угол вращения, заданный для 2D / 3D модели пешехода, проходящего обслуживание.



См. также

Сервисы

Сервис с очередями

Сервис с областью

Сервис с очередью-змейкой

Java документация (англ.): Класс ServiceUnit