主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

slreportgen.report.ExecutionOrder 类

命名空间: slreportgen.report
超类: slreportgen.report.Reporter

系统任务和模块执行顺序报告器

描述

使用 slreportgen.report.ExecutionOrder 类的对象来报告模型或非虚拟子系统的任务以及每个任务中的模块,按执行顺序排序。默认情况下,ExecutionOrder 报告器会生成:

  • 任务名称和属性表

  • 每个任务中的模块列表

有条件执行的块(例如由函数调用或 If 模块触发的子系统)不会显示在模块执行顺序列表中。相反,这些块显示在遵循模块执行顺序列表的 Conditional Execution 表中。该表列出了有条件执行的模块和触发其执行的模块。

使用 ExecutionOrder 报告器属性来过滤报告的内容并自定义内容格式。

注意

要在报告中使用 slreportgen.report.ExecutionOrder 报告器,您必须使用 slreportgen.report.Report 类或子类创建报告。如果将 ExecutionOrder 报告器添加到将 CompileModelBeforeReporting 设置为 falseslreportgen.report.Report 对象,则它不会生成内容。

slreportgen.report.ExecutionOrder 类是 handle 类。

类属性

HandleCompatible
true

有关类属性的信息,请参阅类属性

创建对象

描述

reporter = slreportgen.report.ExecutionOrder 根据默认模板创建一个空的 ExecutionOrder 报告器对象。您必须通过设置 Object 属性来指定要报告执行顺序的模型或子系统。使用其他属性来指定报告选项。

reporter = slreportgen.report.ExecutionOrder(system) 创建一个 ExecutionOrder 报告器并将 Object 属性设置为指定的模型或子系统。

示例

reporter = slreportgen.report.ExecutionOrder(Name=Value) 使用名称-值参量设置报告器属性。您可以按任意顺序指定多个名称-值参量。

属性

全部展开

要报告的模型或非虚拟子系统模块,指定为以下类型的值之一:

如果将 Object 属性设置为子系统引用,则生成的报告将包含一条消息,说明无法确定图的执行顺序。

指定代表卸载模型或虚拟子系统的 BlockResultDiagramResult 会导致错误。

是否包含任务详情表,指定为 truefalse。如果 ShowTaskDetailstrue,报告器将生成一个表,显示指定系统中的任务名称和属性。

数据类型: logical

是否包含模块执行顺序列表,指定为 truefalse。如果 ShowBlockEecutionOrdertrue,则报告器会为系统中的每个任务包含一个按执行顺序排序的模块列表。有条件执行的块(例如由函数调用或 If 模块触发的子系统)不会显示在执行顺序列表中。相反,这些块显示在遵循模块执行顺序列表的 Conditional Execution 表中。该表列出了有条件执行的模块和触发其执行的模块。

数据类型: logical

是否包括模块执行顺序的模块图,指定为 truefalse。当您将 ShowBlockDiagrams 设置为 true 时,报告器将包括一个显示每个任务模块执行顺序的图。如果 ShowBlockExecutionOrder 属性也是 true,则报告器在模块执行顺序之前显示图。

此属性要求模型或子系统可见。当系统被加载到内存中且 ShowBlockDiagrams 属性被设置为 true 时,系统将打开。

数据类型: logical

要报告的每个系统任务的属性,指定为字符串数组或字符向量元胞数组。默认情况下,包含所有属性。有效属性为:

  • Order - 在每个时间步骤中任务在任务执行顺序中的位置。对于异步和恒定任务,此属性报告为 N/A

  • Name - 任务名称。

  • Type - 任务类型,例如 PeriodicAperiodicAsynchronousConstant

  • Trigger - 周期性任务执行的速率或非周期性任务执行的时间列表。

  • TaskID - 指定系统中的任务索引。

  • SourceBlock - 定义任务的模块。

示例: ["Order" "Name" "Type" "Trigger" "TaskID" "SourceBlock"]

示例: {'Order' 'Name' 'Type'}

是否在任务详情表中显示空列,指定为 truefalse。如果 ShowEmptyColumnstrue,则任务详情表包含没有任何数据的列。

数据类型: logical

是否显示模块执行顺序列表中每个模块的类型,指定为 truefalse。如果 ShowBlocktypetrue,报告器会在执行顺序列表中的模块名称旁边包含每个模块的类型。

数据类型: logical

是否显示在编译时创建的模块,指定为 truefalse。如果 ShowHiddenBlockstrue,则报告器将包括 Simulink® 在编译模型时插入的模块。如果 ShowHiddenBlocksfalse,则报告器仅包含用户添加的模块。

数据类型: logical

是否引用非虚拟子系统的模块列表,指定为 truefalse。如果 IncludeSubsystemBlocks 为真,则报告器将包含对非虚拟子系统模块的引用。SubsystemBlocksDisplayPolicy 属性决定如何引用非虚拟子系统模块。

数据类型: logical

用于引用非虚拟子系统中的模块的执行顺序列表的策略,指定为以下字符串标量或字符向量之一:

  • "Link" -(默认)在子系统名称旁边插入一个指向该子系统的单独模块执行顺序列表的链接。仅当包含此报告器的报告生成程序还包含用于子系统的单独 ExecutionOrder 报告器时,此链接才有效。对于多任务模型中包含子系统的每个任务,链接转到子系统 ExecutionOrder 报告器报告的相应任务的模块执行顺序列表。没有为 MATLAB Function 模块子系统插入链接。

  • "NestedList" - Subsystem 模块显示为嵌套列表。

系统任务用于过滤,指定为函数句柄、字符串标量或字符向量。如果 TaskFilterFcn 为空,则报告将包括所有系统任务。

如果您指定了一个函数句柄,则与该句柄关联的函数必须:

  • 接受以下参量:

    • taskName - 任务名称。

    • taskType - 任务类型。

    • trigger - 任务的采样时间或命中次数。如果您将非周期性任务的触发时间指定为表达式,则触发器是一个包含要评估的表达式的字符串。

    • sourceBlock- 定义任务的模块。

  • 返回 true 以从报告中过滤指定的任务,或返回 false 以将任务包含在报告中。

例如,请参阅 使用函数句柄过滤任务

如果您指定一个字符串标量或字符向量,它必须包含一个表达式。表达式:

  • 可以使用变量 taskNametaskTypetrigger sourceBlock

  • 必须将变量 isFiltered 设置为 true 才能从报告中过滤指定的任务,或者将变量设置为 false 才能将任务包含在报告中

例如,请参阅 使用字符串标量过滤任务

任务详细信息表的格式化程序,指定为 mlreportgen.report.BaseTable 对象。该属性的默认值是 BaseTable 对象,其 TableStyleName 属性设置为 ExecutionOrderTable 样式,该样式在 ExecutionOrder 报告器的默认模板中定义。要自定义表格的外观,请修改默认 BaseTable 对象的属性或将该对象替换为您自己的 BaseTable 对象。如果向 BaseTable 对象的 Title 属性添加内容,则该内容会出现在生成的报告中的表格标题前面。

图报告器用于格式化模块执行顺序图,指定为 slreportgen.report.Diagram 报告器。

模块执行顺序列表的格式化程序,指定为 mlreportgen.dom.OrderedList 对象或 mlreportgen.dom.UnorderedList 对象。OrderedListUnorderedList 对象不能包含列表项。

该属性的默认值是 OrderedList 对象,其 StyleName 属性设置为 ExecutionOrderList 样式,该样式在 ExecutionOrder 报告器的默认模板中定义。要自定义列表的外观,请修改默认 OrderedList 对象的属性,或将该对象替换为您自己的 OrderedListUnorderedList 对象。

此报告器的模板来源,以下列方式之一指定:

  • 字符向量或字符串标量,指定包含此报告器模板的文件的路径

  • 此报告器使用的模板或其模板库中包含此报告器模板的报告器或报告

  • 文档对象模型 (DOM) 文档或文档部分,该报告器使用其模板或其模板库包含该报告器的模板

指定的模板必须与您附加此报告器的报告类型相同。例如,对于 Microsoft® Word 报告,TemplateSrc 必须是 Word 报告模板。如果 TemplateSrc 属性为空,则此报告器将使用默认报告器模板作为报告的输出类型。

属性:

GetAccess
公共
SetAccess
公共
NonCopyable
true

此报告器的模板名称,指定为字符向量或字符串标量。此报告器的模板必须位于此报告器 TemplateSrc 属性所指定模板的模板库中。

属性:

GetAccess
公共
SetAccess
公共

数据类型: char | string

此报告器的超链接目标,指定为指定链接目标 ID 的字符向量或字符串标量,或 mlreportgen.dom.LinkTarget 对象。字符向量或字符串标量值转换为 LinkTarget 对象。链接目标紧接在输出报告中此报告器的内容之前。

属性:

GetAccess
公共
SetAccess
公共

方法

全部展开

示例

全部折叠

对于 vdp 模型的每个模块图或虚拟子系统,按执行顺序报告系统任务和每个任务中的块。

打开模型。

model_name = "vdp";
load_system(model_name); 

创建报告。

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

创建一个查找器来查找模型中的所有图。

finder = slreportgen.finder.DiagramFinder(model_name);

创建一个 Diagrams 章节。

ch = mlreportgen.report.Chapter("Diagrams");

对于每个作为模块图或非虚拟子系统的图,使用 slreportgen.report.ExecutionOrder 报告器属性的默认值按执行顺序报告系统任务和块。

while hasNext(finder)
    result = next(finder);
    if (strcmpi(result.Type,"Simulink.SubSystem") && strcmpi( ...
            get_param(result.Object,"IsSubsystemVirtual"),"off")) || ...
            strcmpi(result.Type,"Simulink.BlockDiagram")
        sect = mlreportgen.report.Section(result.Name);
        append(sect,result);

        rptr = slreportgen.report.ExecutionOrder(result);

        append(sect,rptr);
        append(ch,sect);
    end
end

将该章节附加到报告中。

append(rpt,ch);

关闭并查看报告。

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

此示例通过将 TaskFilterFcn 属性指定为函数句柄来报告周期性任务。

打开模型。

model_name = "vdp";
load_system(model_name);

创建报告。

rpt = slreportgen.report.Report("ExecutionOrder_example","html");

创建一个查找器来查找模型中的图。

finder = slreportgen.finder.DiagramFinder(model_name);

创建一个 Diagrams 章节。

ch = mlreportgen.report.Chapter("Diagrams");

对于每个模块图或非虚拟子系统,按执行顺序报告系统任务和模块。将 TaskFilterFcn 属性指定为名为 filterFcnHandle 的函数句柄,该函数句柄过滤非周期性任务。

while hasNext(finder)
    result = next(finder);
    if (strcmpi(result.Type,"Simulink.SubSystem") && strcmpi( ...
            get_param(result.Object,"IsSubsystemVirtual"),"off")) || ...
            strcmpi(result.Type,"Simulink.BlockDiagram")
        sect = mlreportgen.report.Section(result.Name);
        append(sect,result);

        rptr = slreportgen.report.ExecutionOrder(result);
        filterFcnHandle = @(taskName,taskType,trigger,sourceBlock) ...
            ~strcmpi(taskType,"Periodic");
        rptr.TaskFilterFcn = filterFcnHandle;

        append(sect,rptr);
        append(ch,sect);
    end
end

将该章节附加到报告中。

append(rpt,ch);

关闭并查看报告。

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

此示例通过将 TaskFilterFcn 属性指定为字符串来报告定期任务。

打开模型。

model_name = "vdp";
load_system(model_name);

创建报告。

rpt = slreportgen.report.Report("ExecutionOrder_example","html");

创建一个查找器来查找模型中的图。

finder = slreportgen.finder.DiagramFinder(model_name);

创建一个 Diagrams 章节。

ch = mlreportgen.report.Chapter("Diagrams");

对于每个模块图或非虚拟子系统,按执行顺序报告系统任务和模块。将 TaskFilterFcn 属性指定为一个字符串,以过滤非周期性任务。字符串必须包含一个表达式,该表达式设置名为 isFiltered 的变量的值。

while hasNext(finder)
    result = next(finder);
    if (strcmpi(result.Type,"Simulink.SubSystem") && strcmpi( ...
            get_param(result.Object,"IsSubsystemVirtual"),"off")) || ...
            strcmpi(result.Type,"Simulink.BlockDiagram")
        sect = mlreportgen.report.Section(result.Name);
        append(sect,result);

        rptr = slreportgen.report.ExecutionOrder(result);
        filterStr = "isFiltered = ~strcmpi(taskType, ""Periodic"");";
        rptr.TaskFilterFcn = filterStr;

        append(sect,rptr);
        append(ch,sect);
    end
end

将该章节附加到报告中。

append(rpt,ch);

关闭并查看报告。

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

版本历史记录

在 R2020b 中推出