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