Можно настроить поведение системы дискретных событий путем определения событий и действий событий.
Вы можете:
Планируйте события
Задайте действия события в ответ на события
Инициализация событий
Отменить события
Система дискретных событий может иметь эти типы событий и их цели.
Тип события | Цель | Цель |
---|---|---|
eventAcquireResource | Сущность | Разрешить сущности получить один или несколько ресурсов. |
eventDestroy | Сущность | Уничтожить существующую сущность в хранилище. |
eventForward | Сущность | Переместите сущность из его текущего хранилища в другой порт хранения или вывода. |
eventIterate | Хранение | Итерация и обработка каждой сущности в хранилище. |
eventReleaseResource | Сущность | Разрешить сущности деблокировать один или несколько ресурсов. |
eventReleaseAllResources | Сущность | Разрешить сущности освобождать все ранее приобретенные ресурсы. |
eventTestEntry | Хранение | Создайте событие, указывающее, что политика приемки хранилища изменена, и хранилище повторно проверяет поступающие сущности. |
eventTimer | Сущность | Создайте событие таймера. |
eventGenerate | Хранение | Создайте сущность внутри хранилища. |
Форвардные события
Если из-за блокировки не удается выполнить событие переадресации, событие переадресации остается активным. Когда пространство становится доступным, система дискретных событий перепланирует форвардное событие для немедленного выполнения.
События разметки
Можно запланировать несколько событий одного типа для одного актёра. При использовании нескольких событий одного типа используйте теги для различения событий. Для примера сущности может иметь несколько таймеров с различными тегами. Когда срок действия одного таймера истекает, можно использовать tag
аргумент timer
метод, чтобы дифференцировать, какой это таймер. Дополнительные сведения см. в разделе Пользовательский блок хранения сущностей с несколькими событиями таймера.
Если вы планируете два события с одним и тем же тегом на том же актёре, то последующее событие заменяет первое событие. Если вы планируете два события с различными тегами, система дискретных событий вызывает их отдельно.
Когда происходит событие, система дискретных событий реагирует на него, вызывая соответствующее действие. Реализуйте эти действия как методы системного object™. В этой таблице перечислены каждый метод действия и событие запуска.
Действие события | Событие запуска | Цель |
---|---|---|
blocked | eventForward | Вызывается, если при выполнении события forward сущность не может уйти из-за блокировки из целевого хранилища. |
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