Если вам нужно использовать API ресурсов для получения информации о ресурсах и их изменения, рекомендуем использовать нестандартный тип ресурсов.
Ресурсы блоков ResourcePool и ресурсы, используемые агентами, формируют отдельные списки агентов (ресурсов). Такой список невозможно модифицировать, но с его помощью вы можете получить доступ к отдельным ресурсам.
-
Чтобы получить список ресурсов из набора ресурсов resourcePool:
resourcePool.resourceUnits();
-
Чтобы получить список ресурсов, используемых агентом:
agent.resourceUnits();
-
Чтобы получить список ресурсов, используемых агентом в блоке Service, называющемся service:
service.getResourceUnits(agent);
-
Чтобы получить список ресурсов, используемых блоком Service, называющимся service:
service.resourceUnits();
Есть несколько способов получить доступ к отдельному ресурсу из списка.
Предположим, модель содержит набор ресурсов miningCarts, каждый ресурс в котором — агент типа MiningCart. Перемещающиеся по диаграмме процесса агенты используют ресурс, находясь в блоке Service.
Чтобы взаимодействовать с ресурсом в описанном сценарии, нам нужно вызвать его и привести его тип:
-
С помощью итератора:
List resources = agent.resourceUnits(); MiningCart unit = (MiningCart)resources.iterator().next();
-
С помощью индекса ресурса в списке:
List resources = agent.resourceUnits(); int index = 0; MiningCart unit = (MiningCart)resources.get(index);
После вызова и приведения типа ресурса, вы можете использовать любую из функций, доступных для ресурсов, работающих в диаграммах процессов Библиотеки моделирования процессов и Библиотеки производственных систем:
- Информация о ресурсах
-
Функция Описание ResourcePool resourcePool() Возвращает блок ResourcePool, которому принадлежит этот ресурс. ResourceType getResourceType() Возвращает тип ресурса (RESOURCE_STATIC, RESOURCE_MOVING, RESOURCE_PORTABLE). - Состояние
-
Функция Описание boolean isBusy() Проверяет, занят ли текущий ресурс (захвачен, движется к базовому местоположению или к месту применения). Возвращает true, если ресурс занят, в противном случае — false. boolean isIdle() Проверяет, свободен ли текущий ресурс, и можно ли его занять. Возвращает true, если ресурс свободен, в противном случае возвращает false. boolean isReserved() Возвращает true, если ресурс зарезервирован определенным запросом — ресурс при этом может быть свободен, то есть запрос не завершен, или занят другой задачей, которая будет прервана и вытеснена, когда запрос завершится. Agent getReservedBy() Возвращает агента, который зарезервировал этот ресурс, или null (если этот ресурс не зарезервирован, см. isReserved()). Agent getServicedEntity() Возвращает агента, который в данный момент владеет этим ресурсом. Возвращает null, если этот ресурс свободен либо занят сторонней задачей, не относящейся к агенту (к примеру, ремонт ресурсов). - Статистика загруженности
-
Функция Описание double getUtilization() Возвращает загруженность ресурса: долю времени, в течение которой ресурс был занят. Возвращаемое значение загруженности ресурса находится в диапазоне [0..1]. Если доступность этого ресурса задана в блоке ResourcePool с помощью расписания, то коэффициент загрузки рассчитывается только для рабочих часов. double timeInState(ResourceUsageState state) Возвращает время, которое ресурс провел в заданном состоянии.
state — состояние ресурса (ResourceUsageState.USAGE_IDLE или ResourceUsageState.USAGE_BUSY)double timeInState(ResourceUsageState state, TimeUnits units) Возвращает время, которое ресурс провел в заданном состоянии (в заданных единицах измерения времени).
state — состояние ресурса (ResourceUsageState.USAGE_IDLE или ResourceUsageState.USAGE_BUSY)
units — константа, определяющая единицу измерения времени.void resetStats() Производит сброс статистики загруженности. - Статистика обслуживания, аварий, перерывов
-
Функция Описание double totalDowntime() Возвращает время, которое ресурс провел в простое любого типа. double totalDowntime(TimeUnits units) Возвращает время (в указанных единицах измерения времени), которое ресурс провел в простое любого типа.
units — константа, определяющая единицу измерения времениdouble totalRepairTime() Возвращает время, которое ресурс провел в состоянии аварии. double totalRepairTime(TimeUnits units) Возвращает время (в указанных единицах измерения времени), которое ресурс провел в состоянии аварии.
units — константа, определяющая единицу измерения времениdouble totalMaintenanceTime() Возвращает время, которое ресурс провел на обслуживании. double totalMaintenanceTime(TimeUnits units) Возвращает время (в указанных единицах измерения времени), которое ресурс провел на обслуживании.
units — константа, определяющая единицу измерения времениdouble totalBreaksTime() Возвращает время, которое ресурс провел на перерывах. double totalBreaksTime(TimeUnits units) Возвращает время (в указанных единицах измерения времени), которое ресурс провел на перерывах.
units — константа, определяющая единицу измерения времениdouble totalCustomTasksTime() Возвращает время, которое ресурс потратил на дополнительные задачи. double totalCustomTasksTime(TimeUnits units) Возвращает время (в указанных единицах измерения времени), которое ресурс потратил на дополнительные задачи.
units — константа, определяющая единицу измерения времени - Прикрепление ресурсов
-
Функция Описание void setAttached(boolean attached) Прикрепляет ресурс к агенту или отсоединяет ресурс от агента, который им владеет. Применимо только к захваченным агентами ресурсам, в противном случае будет выдана ошибка.
attached — при значении true ресурс присоединяется; false — отсоединяетсяboolean isAttached() Проверяет, прикреплен ли ресурс к агенту. Возвращает true, если прикреплен, в противном случае возвращает false. - Задачи
-
Функция Описание ResourceTaskType currentTaskType() Возвращает тип текущей задачи или null, если ресурс свободен.
Допустимые значения:
TASK_ENTITY — задача, которая выполняется, пока ресурс захвачен агентом
TASK_END_OF_SHIFT — ресурс находится в промежутке между рабочими сменами в соответствии с расписанием
TASK_WRAP_UP — завершающая задача, которая выполняется после того, как ресурс выполнил основную задачу и освободился от агента
TASK_BREAK — ресурс на перерыве
TASK_REPAIR — задача определена как ремонт
TASK_MAINTENANCE — задача определена как обслуживание
TASK_CUSTOM — нестандартная задача из списка, указанного в блоке DowntimeResourceUnitTask currentTask() Возвращает текущую задачу этого ресурса в виде экземпляров соответствующих классов. Если ресурс свободен, возвращает null.
Допустимые значения:
ResourceUnitBasicTask — в данном случае ресурс находится на перерыве либо выполняет задачу, определенную как ремонт или обслуживание
ResourceUnitEntityServiceSubTask — ресурс выполняет задачу, будучи захваченным агентом
ResourceUnitCustomTask — ресурс выполняет нестандартную задачу из списка, заданного в блоке Downtime
ResourceUnitEndOfShiftTask — ресурс находится между задачами в соответствии с расписанием и не выполняет никаких задач
ResourceUnitWrapUpTask — ресурс выполняет задачу, которая выполняется после того, как ресурс закончил основную задачу и освободился от агента - Базовое местоположение
-
Функция Описание void setHomeLocation(INode home) Задает базовое местоположение для ресурса.
home — базовое местоположениеINode getHomeLocation() Возвращает узел сети, заданный в качестве базового местоположения для этого ресурса. void setHomePosition(double x, double y) Задает координаты базового местоположения ресурса.
x — X координата
y — Y координатаvoid setHomePosition(double x, double y, double z) Задает координаты базового местоположения ресурса.
x — X координата
y — Y координата
z — Z координатаdouble getHomeX() Возвращает X координату базового местоположения ресурса. double getHomeY() Возвращает Y координату базового местоположения ресурса. double getHomeZ() Возвращает Z координату базового местоположения ресурса. double getHomeRotation() Возвращает угол вращения базового местоположения ресурса.
-
Как мы можем улучшить эту статью?
-