Шаблон для форматирования результатов анализа Model Advisor
Используйте ModelAdvisor.FormatTemplate для форматирования результата проверки на панели результатов анализа в Model Advisor для однородного вида и ощущения среди создаваемых проверок. Результаты анализа можно отформатировать в виде таблицы или списка.
obj = ModelAdvisor.FormatTemplate( создает объект type)ModelAdvisor.FormatTemplate класс. - символьный вектор, определяющий тип формата шаблона - список или таблицу. type
Чтобы отобразить отформатированный результат на панели результатов анализа, необходимо вернуть объект результата в мастер модели.
Примечание
Используйте ModelAdvisor.FormatTemplate класс в контрольных обратных вызовах.
addRow | Добавить строку в таблицу |
setCheckText | Добавить описание проверки к результату |
setColTitles | Добавление заголовков столбцов в таблицу |
setInformation | Добавление описания подконтроля к результату |
setListObj | Добавление списка гиперссылок к объектам модели |
setRecAction | Добавить раздел «Рекомендуемое действие» и текст |
setRefLink | Добавить раздел «См. также» и ссылки |
setSubBar | Добавление строки между результатами подконтроля |
setSubResultStatus | Добавление статуса к результату проверки или подпроверки |
setSubResultStatusText | Добавить текст ниже состояния в результат |
setSubTitle | Добавить заголовок для подпроверки в результат |
setTableInfo | Добавление данных в таблицу |
setTableTitle | Добавить заголовок в таблицу |
Следующий код создает два объекта шаблона: ft1 и ft2и использует их для форматирования результата выполнения проверки в таблице и списке. Результат определяет блоки в модели. Графика, следующая за кодом, отображает выходные данные в том виде, в каком они отображаются в Model Advisor, когда проверка проходит и завершается неуспешно.
function sl_customization(cm) % register custom checks cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks); % register custom factory group cm.addModelAdvisorTaskFcn(@defineModelAdvisorTasks); % ----------------------------- % defines Model Advisor Checks % ----------------------------- function defineModelAdvisorChecks % Define and register a sample check rec = ModelAdvisor.Check('mathworks.example.SampleStyleOne'); rec.Title = 'Sample check for Model Advisor using the ModelAdvisor.FormatTemplate'; setCallbackFcn(rec, @SampleStyleOneCallback,'None','StyleOne'); mdladvRoot = ModelAdvisor.Root; mdladvRoot.register(rec); % ----------------------------- % 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.SampleStyleOne'); mdladvRoot.publish(rec); % publish inside By Group list % ----------------------------- % Sample Check With Subchecks Callback Function % ----------------------------- function ResultDescription = SampleStyleOneCallback(system) mdladvObj = Simulink.ModelAdvisor.getModelAdvisor(system); % get object % Initialize variables ResultDescription={}; ResultStatus = false; % Default check status is 'Warning' mdladvObj.setCheckResultStatus(ResultStatus); % 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)'}); % Perform the check actions allBlocks = find_system(system); if length(find_system(system)) == 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)'}); ResultStatus = false; 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 ResultStatus = true; 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(find_system(system)) == 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)'}); ResultStatus = false; 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; % Set overall check status mdladvObj.setCheckResultStatus(ResultStatus);
На следующем рисунке отображаются выходные данные в том виде, в котором они отображаются в Model Advisor при прохождении проверки.

На следующем рисунке отображаются выходные данные в том виде, в котором они отображаются в Model Advisor при сбое проверки.

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