主要内容

分层报告系统

这个示例展示了如何创建一个报告,其中的部分根据系统层次结构进行编号。每个部分包含一个系统快照和包含子系统快照的子部分。要创建这样一个部分,请创建一个部分对象,添加一个图表快照,然后添加子系统部分。要创建子系统部分,请再次创建一个部分,添加一个子系统关系图快照,然后添加它的子系统部分。创建分段的算法是递归的。这个示例创建并使用一个名为createSystemSection的本地函数,它实现了递归算法。

使用createSystemSection函数创建分层报告

打开一个模型。

模型=“slrgex\U sf\U汽车”开放式系统(模型);

创建并打开报表对象。

%将输出类型从“pdf”更改为“docx”或“html”,以创建%Word或HTML报告。rpt=slreportgen.report.report(“我的报告”,“pdf”); 开放式(rpt);

添加标题页。

titlepage=mlreportgen.report.titlepage();titlepage.Title=“分层报告”;添加(rpt,标题页);

添加一个目录,其级别数设置为6,这是最大值。

toc=mlreportgen.report.TableOfContents();toc.TOCObj.NumberOfLevels=6;add(rpt,toc);

通过调用createSystemSection本地函数(见下文)为模型创建系统节。此函数递归调用自身为子系统创建节。

节= createSystemSection(模型);添加(rpt,部分);

生成并显示报告。

关闭(rpt);rptview(rpt);

定义createSystemSection局部函数

系统部分由系统快照及其子系统组成。要创建系统部分,请使用搜索深度为1的slreportgen.finder.DiagramFinder查找所有系统一级深度。

作用section=createSystemSection(sys)df=slreportgen.finder.DiagramFinder(sys);df.SearchDepth=1;%在迭代器模式下使用查找器。下一个函数返回搜索结果%一个接一个,hasNext函数确定什么时候没有更多%搜索结果。要获取当前系统,请调用下一个函数%一次。sysResult=next(df);%现在,在系统中使用mlreportgen.report.section创建一个节%名称作为标题。section=mlreportgen.report.section(...“标题”,mlreportgen.utils.normalizeString(sysResult.Name));%添加系统快照和显示完整关系图路径的标题。%要包含有关系统的其他信息,请将其添加到%节对象。diag=slreportgen.report.Diagram(sysResult.Object);diag.Snapshot.appendCaption(sysResult.Path);add(section,diag);%要创建子部分,循环所有子系统并递归调用%在调用createSystemSection之前,添加分页符%因此,每个系统都从一个新页面开始%在系统快照之后,将在报告末尾添加一个空白页。虽然hasNext(df)childSysResult=next(df);add(section,mlreportgen.dom.PageBreak());subSection=createSystemSection(childSysResult.Object);add(section,subSection);终止终止