AnyLogic
Развернуть
Размер шрифта

Функции диаграмм состояний

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

Функции диаграмм состояний
Функция Описание
Statechart<T> getStatechart(A agent) Возвращает диаграмму состояний заданного агента, который управляет этим состоянием в данный момент.
IStatechartState getActiveSimpleState() Возвращает простое состояние диаграммы состояний, активное в данный момент.
IStatechartState getState() Возвращает простое состояние диаграммы состояний, активное в данный момент.
Эта функция не возвращает сложные состояния.
Set<T> getFullState() Возвращает неупорядоченный набор активных в данный момент сложных состояний этой диаграммы состояний, включая текущее простое состояние.
String getName() Возвращает имя диаграммы состояний.
String getFullName() Возвращает имя диаграммы состояний c именем агента в начале в качестве префикса (например, Truck.statechart).
boolean isStateActive(IStatechartState state) Возвращает true, если управление диаграммы состояний находится в заданном состоянии. Если в качестве аргумента функции передано простое состояния, то возвращает непосредственно это состояние. Если передано сложное состояние, то функция возвращает одно из его внутренних состояний. Возвращает false, если управление диаграммы состояний не находится в заданном состоянии.

state — состояние.
Agent getAgent() Возвращает агента, которому принадлежит это состояние.
boolean inState(IStatechartState state) Возвращает значение true, если агент находится в указанном состоянии, т.е. в простом состоянии, если указано простое состояние, или в одном из внутренних состояний сложного состояния, если указано сложное состояние.
boolean receiveMessage(Object msg) Размещает сообщение в диаграмме состояний, минуя постановку в очередь: сообщение либо сразу принимается (если есть активный переход, условие которого соответствует этому сообщению), либо удаляется. Если сообщение соответствует условиям двух или более переходов, эти переходы могут произойти независимо друг от друга (в соответствии со структурой диаграммы состояний), производя обработку одного и того же полученного сообщения. Если одновременно прибудут два (или более) сообщения, соответствующих условиям срабатывания перехода, то второе и все последующие сообщения будут проигнорированы.
Возвращает true, если сообщение соответствует хотя бы одному условию срабатывания; возвращает false в противном случае.

msg — сообщение, переданное в диаграмму состояний.
boolean receiveMessage(int msg) Выполняет то же, что и функция receiveMessage( Object ), но в качестве аргумента принимает целочисленное значение. Возвращает значение true, если сообщение соответствует хотя бы одному триггеру; в противном случае возвращает значение false.

msg — целое число, переданное в диаграмму состояний.
fireEvent(Object msg) Добавляет сообщение в очередь диаграммы состояний. Сообщение будет принято мгновенно или после одного или нескольких шагов диаграммы состояний, выполняемых за нулевое модельное время, в противном случае, будет удалено.

msg — сообщение, полученное диаграммой состояний.
void onChange() Следует вызывать, если в агенте что-то изменилось. Позволит определить момент изменения интенсивности или выполнения условия, если в диаграмме состояний присутствует хотя бы один переход, срабатывающий с заданной интенсивностью или при выполнении заданного условия.
Функции состояний
Функция Описание
IStatechartState getContainerState() Возвращает сложное состояние, в котором находится текущее состояние. Если данное состояние находится на высшем уровне, и не входит в состав сложных состояний, то функция возвращает null.
Set<T> getFullState() Возвращает неупорядоченный набор, содержащий это состояние и все сложные состояния (если такие имеются), содержащие это состояние.
Collection<T> getSimpleStatesDeep() Возвращает коллекцию всех простых состояний внутри данного состояния.
Statechart<T> getStatechart(Agent agent) Возвращает диаграмму состояний заданного агента agent, которому принадлежит данное состояние. Возвращает null, если у агента нет диаграммы состояния с данным состоянием.
Set<T> getStatesInside() Возвращает неупорядоченный набор всех состояний (простых и сложных), содержащихся внутри данного состояния.
boolean inState(Agent agent) Возвращает true, если заданный агент agent находится в данном состоянии; возвращает false в противном случае.
boolean containsState(IStatechartState simpleState) Проверяет, является ли данное состояние диаграммы состояний сложным и содержит ли оно simpleState state (также проверяет содержимое вложенных сложных состояний).
boolean isSimpleState() Возвращает true, если это состояние является простым; возвращает false, если оно является сложным.
String name() Возвращает имя данного состояния.
int ordinal() Возвращает порядковый номер этого состояния (порядок нумерации состояний детерминирован).
Функции переходов
Функция Описание
boolean isActive() Возвращает значение true, если срабатывание перехода запланировано. В противном случае возвращает значение false.
double getRest() Возвращает время, оставшееся до запланированного срабатывания перехода в единицах модельного времени или значение infinity, если срабатывание перехода не запланировано.
double getRest(TimeUnits units) Возвращает время, оставшееся до запланированного срабатывания перехода в заданных единицах времени. Например, функция, getRest(MINUTE) возвращает оставшееся время в минутах.
Как мы можем улучшить эту статью?