Поведение системы с дискретными событиями можно настроить путем определения событий и действий с событиями.
Вы можете:
Планирование событий
Определение действий события в ответ на события
Инициализация событий
Отменить события
Система с дискретными событиями может иметь эти типы событий и их цели.
| Тип события | Цель | Цель |
|---|---|---|
eventAcquireResource | Предприятие | Разрешить сущности получать один или несколько ресурсов. |
eventDestroy | Предприятие | Уничтожить существующую сущность в хранилище. |
eventForward | Предприятие | Переместите объект из текущего хранилища в другое хранилище или выходной порт. |
eventIterate | Хранение | Итерация и обработка каждого объекта в хранилище. |
eventReleaseResource | Предприятие | Разрешить сущности освобождать один или несколько ресурсов. |
eventReleaseAllResources | Предприятие | Разрешить сущности освобождать все ранее полученные ресурсы. |
eventTestEntry | Хранение | Создайте событие, указывающее, что политика приемки хранилища изменена и хранилище повторно проверяет поступающие объекты. |
eventTimer | Предприятие | Создание события таймера. |
eventGenerate | Хранение | Создайте сущность внутри хранилища. |
Пересылка событий
Если событие forward завершается неуспешно из-за блокировки, событие forward остается активным. Когда пространство становится доступным, система дискретных событий переносит прямое событие для немедленного выполнения.
Маркирование событий
Можно запланировать несколько событий одного типа для одного и того же актера. При использовании нескольких событий одного типа используйте теги для различения событий. Например, объект может иметь несколько таймеров с различными тегами. По истечении одного таймера можно использовать tag аргумент timer способ дифференцирования таймера. Дополнительные сведения см. в разделе Блок хранилища настраиваемых сущностей с несколькими событиями таймера.
Если запланировать два события с одним тегом для одного и того же актера, следующее событие заменит первое событие. При планировании двух событий с различными тегами система дискретных событий вызывает их отдельно.
Когда происходит событие, система дискретных событий реагирует на него, вызывая соответствующее действие. Реализуйте эти действия в качестве методов object™ системы. В этой таблице перечислены каждый метод действия и инициирующее событие.
| Действие события | Инициирующее событие | Цель |
|---|---|---|
blocked | eventForward | Вызывается, если при выполнении события пересылки объект не может выйти из-за блокировки из целевого хранилища. |
destroy | eventDestroy | Вызывается до того, как объект будет уничтожен и удален из хранилища. |
entry | eventForward | Вызывается по записи сущности. |
exit | eventForward | Вызывается при выходе из сущности. При пересылке объекта из хранилища 1 к хранению 2, действие выхода хранилища 1 а затем входное действие хранилища 2 называются. |
generate | eventGenerate | Вызывается после создания новой сущности внутри элемента хранения. |
iterate | eventIterate | После выполнения события Iterate этот метод вызывается для каждого объекта от передней до задней части хранилища с возможностью досрочного прекращения. Если к объектам необходимо прибегнуть из-за изменения значения ключа, обращение происходит после завершения всей итерации. |
resourceAcquired | eventAcquireResource | Вызывается после успешного получения ресурсов. Получение ресурсов успешно только в том случае, если получены все указанные ресурсы. |
resourceReleased | eventReleaseResource | Вызывается после выпуска ресурса. |
testEntry | eventTestEntry | Вызывается после события записи теста. |
timer | eventTimer | Вызывается при выполнении события таймера объекта. |
Эти методы используются для инициализации пустых массивов и событий системы с дискретными событиями.
| Тип события | Цель |
|---|---|
initEventArray | Инициализация массива событий. |
initResourceArray | Инициализируйте массив спецификации ресурсов. |
setupEvents | Инициализация событий создания сущности. |
Эти методы используются для отмены ранее запланированных событий системы с дискретными событиями.
| Тип события | Цель |
|---|---|
cancelAcquireResource | Отмена запланированного ранее события получения ресурсов |
cancelDestroy | Отмена ранее запланированного события уничтожения сущности. |
cancelForward | Отмена события пересылки сущности. |
cancelGenerate | Отмена ранее запланированного события создания сущности. |
cancelIterate | Отмена ранее запланированного события итерации. |
cancelTimer | Отмена запланированного ранее события таймера. |
Существует два различных идентификатора для событий, предоставляемых matlab.DiscreteEventSystem класс.
Тег - Использовать tag в качестве входного аргумента для метода.
event1 = obj.eventTimer('mytimer1', 2); event2 = obj.eventTimer('mytimer2', 5);
Здесь, mytimer1 и mytimer2 используются в качестве тегов для ссылки на эти два события таймера.
Назначение - используйте назначение для идентификации событий пересылки.
event1 = obj.eventForward('storage', 2, 0.8); event2 = obj.eventForward('output', 1, 2);
Здесь, storage и output используются для различения двух форвардных событий.
События не различимы, если их идентификаторы совпадают. В этой таблице показано, как идентифицировать событие, когда несколько событий одного типа действуют на одном и том же целевом объекте.
| Тип события | Идентификация |
|---|---|
eventAcquireResource | Тэг |
eventGenerate | Тэг |
eventIterate | Тэг |
eventReleaseResource | Тэг |
eventReleaseAllResources | Тэг |
eventTimer | Тэг |
eventForward | Место назначения |
Примечание
Если определено событие, которое еще не выполнено, и второе событие с тем же типом и идентификатором, первое событие заменяется вторым.
blocked | destroy | entry | eventForward | eventGenerate | generate | matlab.DiscreteEventSystem | matlab.System | setupEvents