preExit

Класс: simevents.SimulationObserver
Пакет: simevents

Задайте поведение, прежде чем сущность выйдет из блока с устройством хранения данных сущности

Синтаксис

preExit(obj,evSrc,evData)

Описание

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

Входные параметры

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

Объект класса SimulationObserver

Обработайте к календарю событий. Указатель будет заполнен наблюдателем симуляции.

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

Примеры

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

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

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