ModelAdvisor.FormatTemplate

Обработайте по шаблону для форматирования результатов анализа Model Advisor

Описание

Используйте ModelAdvisor.FormatTemplate класс, чтобы отформатировать результат регистрации панели результата анализа Model Advisor для универсального стили среди проверок вы создаете. Можно отформатировать результаты анализа как таблицу или список.

Создание

Описание

obj = ModelAdvisor.FormatTemplate(type) создает объект ModelAdvisor.FormatTemplate класс. type вектор символов, идентифицирующий тип формата шаблона, или список или таблица.

Необходимо возвратить объект результата в Model Advisor, чтобы отобразить результат форматирования в панели результата анализа.

Примечание

Используйте ModelAdvisor.FormatTemplate класс в коллбэках проверки.

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

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

Тип ModelAdvisor.FormatTemplate.

Функции объекта

addRowДобавьте строку в таблицу
setCheckTextДобавьте описание проверки, чтобы закончиться
setColTitlesДобавьте заголовки столбцов в таблицу
setInformationДобавьте описание подпроверки, чтобы закончиться
setListObjДобавьте список гиперссылок на объекты модели
setRecActionДобавьте раздел Recommended Action и текст
setRefLinkДобавьте раздел See Also и ссылки
setSubBarДобавьте линию между результатами подпроверки
setSubResultStatusДобавьте состояние в проверку или подпроверяйте результат
setSubResultStatusTextДобавьте текст ниже состояния в результате
setSubTitleДобавьте заголовок для подрегистрации результата
setTableInfoДобавьте данные в таблицу
setTableTitleДобавьте заголовок на таблицу в результатах анализа Model Advisor

Примеры

свернуть все

  1. Следующий sl_customization файл содержит код, который создает два объекта шаблона, ft1 и ft2, и использует их, чтобы отформатировать результат выполнения регистрации таблицы и списка. Результат идентифицирует блоки в модели.

    function sl_customization(cm)
    
    % register custom checks
    cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks);
    
    % register custom factory group 
    cm.addModelAdvisorTaskFcn(@defineModelAdvisorTasks);
    
    end
    
    
    % -----------------------------
    % defines Model Advisor Checks
    % -----------------------------
    function defineModelAdvisorChecks
    
    % Define and register a sample check 
    rec = ModelAdvisor.Check('mathworks.example.SampleDetailStyle');
    rec.Title = 'Sample check for Model Advisor using the ModelAdvisor.FormatTemplate';
    setCallbackFcn(rec, @SampleDetailStyleCallback,'None','DetailStyle');
    rec.setReportStyle('ModelAdvisor.Report.DefaultStyle');
    
    mdladvRoot = ModelAdvisor.Root;
    mdladvRoot.register(rec);
    
    end
    
    
    % -----------------------------
    % defines Model Advisor Tasks
    % -----------------------------
    function defineModelAdvisorTasks
    mdladvRoot = ModelAdvisor.Root;
     
    % --- sample factory group
    rec = ModelAdvisor.FactoryGroup('com.mathworks.sample.factorygroup');
    rec.DisplayName='My Group 1';
    rec.Description='Demo Factory Group';
    rec.addCheck('mathworks.example.SampleDetailStyle');
    mdladvRoot.publish(rec); % publish inside By Group list
    
    end
    
    
    % -----------------------------
    % Sample Check With Subchecks Callback Function
    % -----------------------------
    function [ResultDescription] = SampleDetailStyleCallback(system, CheckObj)
    
    % Initialize variables
    ElementResults = ModelAdvisor.ResultDetail.empty();
    
    % Perform the check actions
    allBlocks = find_system(system);
    [ResultDescription] = getFormattedTemplate(allBlocks);
    
    % Perform the subcheck actions - Result Details - Table
    if length(allBlocks) == 1
        % Add result details for detailed style check
        ElementResults(end + 1) = ModelAdvisor.ResultDetail;
        ElementResults(end).IsViolation = true;
        ElementResults(end).Description =  ['Find and report all blocks in a table. '...
            '(setInformation method - Description of what the subcheck reviews)'];
        ElementResults(end).Status =  ['The model does not contain blocks. '...
            '(setSubResultStatusText method - Description of result status)'];   
    else  
        for i=1:numel(allBlocks)
            ElementResults(end+1) = ModelAdvisor.ResultDetail;
            ElementResults(end).IsViolation = false;
            ElementResults(end).Format = 'Table';       
            ModelAdvisor.ResultDetail.setData(ElementResults(end),'SID',allBlocks{i});
            ElementResults(end).Description =  ['Find and report all blocks in a table. '...
                '(setInformation method - Description of what the subcheck reviews)'];
            ElementResults(end).Status = ['The model contains blocks. '...
                '(setSubResultStatusText method - Description of result status)'];
        end    
    end
    
    % Perform the subcheck actions  - Result Details - List
    if length(allBlocks) == 1
         ElementResults(end+1) = ModelAdvisor.ResultDetail;
         ElementResults(end).IsViolation = true;
         ElementResults(end).Description =  ['Find and report all blocks in a table. '...
            '(setInformation method - Description of what the subcheck reviews)'];
         ElementResults(end).Status =  ['The model does not contain blocks. '...
            '(setSubResultStatusText method - Description of result status)'];    
    else   
        for i= 1:numel(allBlocks) 
            ElementResults(end+1) = ModelAdvisor.ResultDetail;
            ElementResults(end).IsViolation = false;       
            ModelAdvisor.ResultDetail.setData(ElementResults(end),'SID',allBlocks{i});
            ElementResults(end).Description =  ['Find and report all blocks in a list. '...
                '(setInformation method - Description of what the subcheck reviews)'];
            ElementResults(end).Status = ['The model contains blocks. '...
                '(setSubResultStatusText method - Description of result status)'];  
        end    
    end
    
    %Set check result details
    CheckObj.setResultDetails(ElementResults);
    
    end
    
    function [ResultDescription] = getFormattedTemplate(allBlocks)
    ResultDescription={};
    
    % Create FormatTemplate object for first subcheck, specify table format
    ft1 = ModelAdvisor.FormatTemplate('TableTemplate');
    
    % Add information describing the overall check
    setCheckText(ft1, ['Find and report all blocks in the model. '...
        '(setCheckText method - Description of what the check reviews)']);
    
    % Add information describing the subcheck
    setSubTitle(ft1, 'Table of Blocks (setSubTitle method - Title of the subcheck)');
    setInformation(ft1, ['Find and report all blocks in a table. '...
        '(setInformation method - Description of what the subcheck reviews)']);
    
    % Add See Also section for references to standards
    setRefLink(ft1, {{'Standard 1 reference (setRefLink method)'},
        {'Standard 2 reference (setRefLink method)'}});
    
    % Add information to the table
    setTableTitle(ft1, {'Blocks in the Model (setTableTitle method)'});
    setColTitles(ft1, {'Index (setColTitles method)',
        'Block Name (setColTitles method)'});
    
    
    if length(allBlocks) == 1
        % Add status for subcheck
        setSubResultStatus(ft1, 'Warn');
        setSubResultStatusText(ft1, ['The model does not contain blocks. '...
            '(setSubResultStatusText method - Description of result status)']);
        setRecAction(ft1, {'Add blocks to the model. '...
            '(setRecAction method - Description of how to fix the problem)'});    
    else
        % Add status for subcheck
        setSubResultStatus(ft1, 'Pass');
        setSubResultStatusText(ft1, ['The model contains blocks. '...
            '(setSubResultStatusText method - Description of result status)']);
        for inx = 2 : length(allBlocks)
            % Add information to the table
            addRow(ft1, {inx-1,allBlocks(inx)});
        end    
    end
    
    % Pass table template object for subcheck to Model Advisor
    ResultDescription{end+1} = ft1;
    
    % Create FormatTemplate object for second subcheck, specify list format
    ft2 = ModelAdvisor.FormatTemplate('ListTemplate');
    
    % Add information describing the subcheck
    setSubTitle(ft2, 'List of Blocks (setSubTitle method - Title of the subcheck)');
    setInformation(ft2, ['Find and report all blocks in a list. '...
        '(setInformation method - Description of what the subcheck reviews)']);
    
    % Add See Also section for references to standards
    setRefLink(ft2, {{'Standard 1 reference (setRefLink method)'},
        {'Standard 2 reference (setRefLink method)'}});
    
    % Last subcheck, suppress line
    setSubBar(ft2, false);
    
    % Perform the subcheck actions
    if length(allBlocks) == 1
        % Add status for subcheck
        setSubResultStatus(ft2, 'Warn');
        setSubResultStatusText(ft2, ['The model does not contain blocks. '...
            '(setSubResultStatusText method - Description of result status)']);
        setRecAction(ft2, {'Add blocks to the model. '...
            '(setRecAction method - Description of how to fix the problem)'});
       
    else
        % Add status for subcheck
        setSubResultStatus(ft2, 'Pass');
        setSubResultStatusText(ft2, ['The model contains blocks. '...
            '(setSubResultStatusText method - Description of result status)']);
        % Add information to the list
        setListObj(ft2, allBlocks);
    end
    
    % Pass list template object for the subcheck to Model Advisor
    ResultDescription{end+1} = ft2;
    
    end
    
  2. Сохраните sl_customization файл к вашей рабочей директории.

  3. В окне команды MATLAB, введите:

    Advisor.Manager.refresh_customizations

  4. Откройте модель.

  5. Во вкладке Modeling выберите Model Advisor.

  6. В папке By Task> My Group 1 выберите Sample check for Model Advisor using ModelAdvisor.FormatTemplate.

  7. Нажмите Run This Check.

    Следующие графические дисплеи выход, как это появляется в Model Advisor, когда проверка передает.

    Model Advisor output when the check passes

    Следующие графические дисплеи выход, как это появляется в Model Advisor, когда проверка предупреждает.

    Model Advisor check output when the check warns

Альтернативы

Когда вы задаете ModelAdvisor.Check объект, для CallbackStyle свойство, если вы задаете DetailStyle, вы не должны использовать ModelAdvisor.FormatTemplate API или другие API форматирования к результатам формата, которые появляются в отчете Model Advisor. DetailStyle также позволяет вам просматривать результаты блоком, подсистемой или рекомендуемым действием.

Если форматирование по умолчанию не удовлетворяет ваши потребности, используйте ModelAdvisor.FormatTemplate API или другие API форматирования. ModelAdvisor.FormatTemplate класс обеспечивает универсальный стиль среди проверок, которые вы создаете.

Представленный в R2009a