exponenta event banner

класс slreportgen.finder.StateFinder

Пакет: slreportgen.finder
Суперклассы:

Найти состояния Stateflow

Описание

Поиск состояний Stateflow ®.

Строительство

finder = StateFinder(diagram) создает поисковик, который по умолчанию находит все необъявленные состояния Stateflow в указанной диаграмме diagram. Чтобы ограничить поиск определенными типами диаграмм, используйте свойства этого поиска.

Примечание

Этот поисковик предоставляет два способа получения результатов поиска:

  1. Чтобы вернуть результаты поиска в виде массива, используйте find способ. Добавление результатов непосредственно в отчет или обработка результатов в for цикл.

  2. Чтобы выполнить итерацию результатов по одному, используйте hasNext и next методы в while цикл.

Ни один из вариантов не имеет преимущества в производительности.

finder = StateFinder(Name,Value) задает свойства, используя пары имя-значение. Можно указать несколько аргументов пары имя-значение в любом порядке. Заключите каждое имя свойства в отдельные кавычки.

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

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

См. раздел Свойство контейнера.

Свойства

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

Диаграмма, в которой выполняется поиск, заданная как одно из следующих значений:

  • Дескриптор блока диаграммы Stateflow

  • Путь к блоку диаграммы Stateflow

  • Идентификатор диаграммы потока состояний

  • Объект диаграммы потока состояний

Выбор для включения состояний с комментариями в результаты поиска, указанные как логические. Если false, закомментированные состояния исключаются из результатов поиска.

Свойства состояний для поиска, заданные как массив ячеек пар имя-значение. Поиск возвращает только те состояния, которые имеют указанные свойства с указанными значениями.

Пример: finder.Properties = {'ArrowSize','5'}

Методы

results = find(finder) находит состояния в диаграмме diagram определяется поисковиком. Этот метод возвращает состояния, которые он находит вложенными в результирующие объекты типа slreportgen.finder.DiagramElementResult. Чтобы добавить таблицы свойств состояния, добавьте объекты результатов непосредственно в отчет или добавьте их в репортер, который затем будет добавлен в отчет. Отчеты, к которым можно добавить results этого метода должны быть отчеты типа slreportgen.report.Report.

tf = hasNext(finder) определяет, содержит ли схема диаграммы, которую искатель ищет, по крайней мере, одно состояние. Если диаграмма имеет хотя бы одно состояние, hasNext метод ставит это состояние в очередь как следующее состояние, next метод вернется. hasNext затем метод возвращает true. Используйте next способ получения этого состояния. При последующих вызовах hasNext определяет, имеет ли диаграмма состояние, что next метод еще не получен. Он ставит в очередь состояние для next метод для извлечения и возврата true. Если больше нет состояний для извлечения, этот метод возвращает false. Для постепенного поиска состояний на диаграмме используйте hasNext с помощью next метод в цикле while.

result = next(finder) возвращает следующий поиск result в очереди результатов, которая hasNext создан метод. Этот метод возвращает состояние, которое он находит заключенным в результирующий объект типа slreportgen.finder.DiagramElementResult. Чтобы добавить таблицы свойств состояния, добавьте объекты результатов непосредственно в отчет или добавьте их в репортер, который затем будет добавлен в отчет. Отчеты, к которым можно добавить results этого метода должен иметь тип slreportgen.report.Report.

Копирование семантики

Ручка. Сведения о том, как классы обработки влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

Найти состояния Stateflow

Создание отчета, включающего свойства всех состояний Stateflow в shift_logic график slrgex_sf_car модель.

import mlreportgen.report.*
import slreportgen.report.*
import slreportgen.finder.*

model_name = "slrgex_sf_car";
load_system(model_name);

rpt = slreportgen.report.Report("output","pdf");
open(rpt)

add(rpt, TitlePage("Title",...
    sprintf('States in %s Model',model_name)));
add(rpt, TableOfContents);

chartFinder = ChartDiagramFinder(model_name);
charts = find(chartFinder);
while hasNext(chartFinder)
    diagram = next(chartFinder);
    stFinder = StateFinder(diagram.Object);
    states = find(stFinder);
    if ~isempty(states)
        chapter = Chapter("Title",diagram.Name);
        add(chapter,diagram)
        for state = states
           sect = Section("Title","States");       
           add(sect,states)
        end
        add(chapter,sect)
        add(rpt,chapter)
    end
end

close(rpt)
close_system(model_name)
rptview(rpt)

Представлен в R2017b