Сгенерируйте встроенный отчет веб-представления

Чтобы сгенерировать встроенный отчет Веб-представления, создайте экземпляр класса, который задает генератор отчетов (см., Создают Встроенный Генератор отчетов Веб-представления). Затем используйте fill и методы генератора отчетов close.

Например, предположите, что вы хотите создать отчет с помощью примера класса SimulinkDesignVariables (см. Файл Определения класса для Встроенного Веб-представления). Эти команды генерируют и отображают экземпляр того отчета:

model = 'f14';
rptName = sprintf('%sVariables', model);
load_system(model);
rpt = SystemDesignVariables(rptName, model);
fill(rpt);
close(rpt);
close_system(model);
rptview(rptName);

Команда fill(rpt) использует метод fill, который генератор отчетов наследовал от своего базового класса. Этот метод встраивает Веб-представление модели f14 в отчете. Это также вызывает метод fillContent генератора отчетов, который заполняет панель отчетного документа с отчетом относительно переменных, используемых моделью f14.

Получившийся Встроенный отчет Веб-представления показывают.

Для получения информации о навигации к различным частям отчета смотрите Навигацию по Встроенному Отчету Веб-представления.

Файл определения класса для встроенного веб-представления

Этот класс генерирует отчет относительно рабочей области и переменных словаря данных, используемых заданной моделью Simulink®. Этот класс в качестве примера включает значения скалярных числовых переменных только.

classdef SystemDesignVariables < slreportgen.webview.EmbeddedWebViewDocument
    %SystemDesignVariables Report on variables used by a Simulink model
    %   Defines a class of report generators to produce HTML reports on
    %   the workspace and data dictionary variables used by a Simulink
    %   model. The generated report includes this information for
    %   each variable:
    %   
    %   Value (if the value is a scalar, numeric value)
    %   Data Type
    %   Source (e.g, path of dictionary containing the variable)
    %   Source Type (e.g., data dictionary or base workspace)
    %   Users (path of blocks that use the variable)
    %
    %   The report includes a Web View of the model with two-way
    %   links between design variable user paths and blocks in the Web
    %   View that use the design variables.
    %
        
    methods
        
        function rpt = SystemDesignVariables(reportPath, modelName)
            
            % Invoke the EmbeddedWebViewDocument constructor, which
            % saves the report path and model name for use by the
            % report's fill methods.
            rpt@slreportgen.webview.EmbeddedWebViewDocument(reportPath,...
                modelName);
            
            % Turn off duplicate link warnings to avoid warnings for
            % blocks that use multiple design variables.
            rpt.ValidateLinksAndAnchors = false;
            
            rpt.ExportOptions.IncludeMaskedSubsystems = true;
            rpt.ExportOptions.IncludeSimulinkLibraryLinks = true;
            rpt.ExportOptions.IncludeReferencedModels = true;
        end
        
        function fillContent(rpt)
            % Fill the Content hole in the report template with design
            % variable information. The rpt variable is a subclass of the 
            % DOM Document class, so you can use DOM methods to create, 
            % format, and append content to this report.
            
            %% Set up report
            % Allow use of unqualified names for DOM objects, 
            % such as Paragraph instead of mlreportgen.dom.Paragraph.
            import mlreportgen.dom.*
            
            % Obtain model name, which was saved by the report
            % constructor. getExportedModels returns model names as a
            % cell array, in case a report uses multiple models.
            model = getExportModels(rpt);
            
            % Extract the model from the cell array. (This report uses 
            % only one model.)
            model= model{1};
            
            %% Create report title
            title = Paragraph(sprintf('%s Design Variables',model));
            title.Style = {Bold,Color('white'),BackgroundColor('gray'), ...
                FontFamily('Helvetica'),FontSize('18pt')};
            append(rpt,title);
            
            %% Find all variables used by this model.
            vars = Simulink.findVars(model,'ReturnResolvedVar',true);
            
            %% Loop through the variable information returned by 
            % Simulink.findVars, converting the info to formatted document 
            % objects and appending the formatted info to the report.
            nVars = numel(vars);
            for i = 1:nVars
                
                % var is a Simulink.VariableUsage object
                var = vars(i);
                
                %% Create variable section heading
                varHeading = Heading1(var.Name);
                varHeading.Style = {FontFamily('Helvetica'),...
                    FontSize('16pt'),OuterMargin('0pt','0pt','12pt','0pt')};
                append(rpt,varHeading);
                rule = HorizontalRule;
                rule.Style = {Color('LightGray'), ...
                    OuterMargin('0pt','0pt','0pt','0pt')};
                append(rpt, rule);
                
                %% Format variable info
                
                % Convert the variable information into a cell array
                % by using the DOM Table class.
                info = cell(5,1);
                info{1,1} = 'Value:';
                value = var.Value;
                type = class(value);
                if isa(value,'Simulink.Parameter')
                    value = value.Value;
                end
                if isnumeric(value) && isscalar(value)
                    info{1,2} = num2str(value);
                else
                    % Insert logic here to handle non-scalar values.
                    info{1,2} = 'n/a';
                end
                info{2,1} = 'Type:';
                info{2,2} = type;
                info{3,1} = 'Source:';
                info{3,2} = var.Source;
                info{4,1} = 'Source Type:';
                info{4,2} = var.SourceType;
                info{5,1} = 'Users:';
                
                % var.Users contains a cell array of the paths to the model
                % blocks that use this variable. Create two-way hyperlinks
                % between the paths and the corresponding elements in the
                % Web View of the model embedded in this report by this 
                % report's superclass, EmbeddedWebViewDocument. Note that
                % this fails when the Web View element already contains
                % a link, e.g., when the element uses more that one 
                % variable. In this case, the element links only to the
                % first variable that it uses.
                nUsers = numel(var.Users);
                users = Table(cell(nUsers,1));
                for u = 1:nUsers
                    userPath = var.Users{u};
                    userLink = createElementTwoWayLink(rpt,...
                                userPath,...
                                mlreportgen.dom.Paragraph(userPath));
                    userLink.Style = {OuterMargin('0pt', '0pt','0pt','0pt')};
                    append(users.entry(u,1),userLink);
                end               
                info{5, 2} = users;
                 
                %% Convert the usage info to a table, format the table,
                % and append the table to the rport.
                infoTable = Table(info);
                grp = TableColSpecGroup;
                grp.Style = {OuterMargin('0pt','0pt','0pt','0pt')};
                specs(1) = TableColSpec;
                specs(1).Style = {Bold};
                specs(2) = TableColSpec;
                grp.ColSpecs = specs;
                infoTable.ColSpecGroups = grp;
                
                append(rpt, infoTable);
                
            end
        end
    end
end