exponenta event banner

предварительный выход

Класс: симевенты. SimulationObserver
Пакет: симевенты

Укажите поведение перед выходом объекта из блока с хранилищем объектов

Синтаксис

preExit(obj,evSrc,evData)

Описание

preExit(obj,evSrc,evData) используется для задания поведения перед выходом объекта из блока, в котором хранятся объекты. Обозреватель моделирования использует этот метод в качестве обратного вызова для уведомления о событии перед выходом и предоставляет дескрипторы объекту, блоку и его хранилищу, а также событию.

Входные аргументы

развернуть все

Объект класса М Наблюдатель

Дескриптор календаря событий. Маркер будет заполнен наблюдателем моделирования.

Список дескрипторов блоков, хранилищ и объектов. Список будет заполнен наблюдателем за моделированием.

Примеры

развернуть все

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

function preExit(this, ~, evData)
            % Override to specify listener for exit from a storage (queue/server)
            % evData contains block, storage, and entity handles

            entity = evData.CurrentEntity;
            
            if strcmp(evData.Block.BlockPath, [this.mModel '/Patron Enter'])
                % Create a new "dot" on the figure at the entry position
                h = plot(this.cEntryPos(1), this.cEntryPos(2), '.');
                set(h, 'MarkerSize', 32);
                
                % Add a mouse-click function to the dot so we can retrieve
                % attribute data when user clicks on this customer
                set(h, 'ButtonDownFcn', @(h,e)entityClickFcn(this,h,e));
                
                % Cache away the entity identifier on this dot
                set(h, 'Tag', num2str(entity.ID));
                
                % Cache away this dot handle so that we can move it in
                % future events
                this.mEntityGlyphs(num2str(entity.ID)) = h;
                
                % Cache away the entity handle
                this.mEntities(num2str(entity.ID)) = entity;

                % Increment the entry statistics
                this.updateStats(this.mTxtEntry, this.INCREMENT);
            
                % Schedule motion for this entity from its current position
                % to a random position in the waiting area
                this.scheduleMotion(entity, this.getRandWaitingPos());
                
                % Increment waiting statistic
                this.updateStats(this.mTxtWaiting, this.INCREMENT);
            elseif strcmp(evData.Block.BlockPath, [this.mModel '/Have Dinner'])
                this.releaseTable(entity);
            end
        end
        
    end
Представлен в R2016a