大数跨境

干货 | 教你如何在PREEvision中一键生成报告

干货 | 教你如何在PREEvision中一键生成报告 怿星科技
2020-02-14
4
导读:一份精美的报告模板需要各个模块的协同配合使用,也需要我们在使用PREEvision过程中多加利用Report功能,这样不仅能直观地呈现我们所搭建的模型信息,也能加深我们对各个模块使用的熟练程度。​

大家在用PREEvision做汽车电子电气架构开发时,是不是经常会思考这样一个问题:由于模型中会产生大量的数据信息,为了更加直观的去展示这些错综复杂的数据和模型信息,我们需要以报告的形式来表示产品开发的实际状态和最终产品的信息,如果手动去撰写报告,既费时费力,还会因模型某一元素的修改而导致整个报告的大批量修改,存在不少重复性手工劳动,而且极容易因人为因素产生错误。那么,有没有一种方法可以帮助我们解决这个问题呢?



其实PREEvision早就考虑到了这一点,PREEvision给我们提供了一种报告生成器,可以基于实际的E/E模型来自定义报告模板并生成报告。报告的内容来自于需要的模型元素并与模型元素相关联,模型中的所有信息(文字、框图、表格、Rules、Metrics等)都可以定义到报告中,不需要手动去创建和管理。根据实际需求完成自定义报告模板后,可一键生成odt或者PDF版本的报告,节省了大量的时间和人力,同时也能减少人为产生的错误。


PREEvision报告模板使用LibreOffice环境编辑,操作和Word十分类似,报告模板定义了报告的结构、内容和风格,模板上可以定义静态元素和动态元素,保证了报告数据的同源性和一致性。同时PREEvsion预置了大量基于ISO26262的功能安全报告模板,这部分模板在客户做功能安全开发时可以直接调用。接下来就带大家了解PREEvision在报告制作中提供了哪些方面的功能。



1

静态元素的创建
PREEvision中的报告模板的制作是在模型树的Administration|Report下完成的,在Administration|Report下新建一个Report Package用来存放我们的报告模板,在新建的Package下新建一个Report并打开该Report,如下图所示:



接下来我们可以在打开的Report中去定义一些静态元素。所谓静态元素是指报告中不会发生变化的内容,通常报告的标题、描述性文字、静态插图、页眉页脚等都是通过静态元素创建的。静态元素的编辑跟平时在Word编辑文档几乎一样,如下图所示是通过静态元素创建的报告封面。



2

动态元素的创建

除了静态元素外,PREEvision还提供了动态元素的创建。报告模板中动态元素表示报告中根据模型元素自动生成的部分,可以实现动态链接信息的功能,即使模型频繁改动,我们也能随时生成具有最新数据信息的报告,保证数据最新和同源。在报告模板中,动态信息是通过占位符(Placeholder)体现的,而占位符的内容是通过Context来引用的,因此在使用占位符之前需先创建相应的Context。报告模板中对不同类型模型元素的引用需通过不同组合的Context和占位符来完成。PREEvision提供了几种不同的Context供使用,在创建的Report下,右键New | Data Contexts可创建各种Context引用。接下来带大家熟悉一下PREEvision中最常用的几种Context引用方式并通过Context引用了解不同占位符的使用。


引用Application Context

Application Context可以用来获取正在运行的PREEvision应用程序和当前加载模型的相关数据,如用户名和项目名。例如在Report下创建Application Context并拖到报告模板的指定位置(比如上面通过静态元素创建的表格中Author一栏),接下来会弹出插入占位符页面(如下图所示),不同的占位符表示不同的内容,此处由于插入的是文本信息,因此我们选择Text占位符,并选择userName,这样便将客户端的用户名添加到Author一栏了。同样的方法可将表格的Date信息添加上去。



在报告模板中添加的相关信息是以占位符的形式出现的,如下图所示,在最终生成报告时,占位符会以实际信息显示。



引用Model Context

Model Context可用于从选定的模型元素中获取数据,因此,Model Context必须与模型元素关联。通过Model Context及相应的占位符可实现报告模板中对架构元素的引用。如下图所示,所引用的Model Context关联的是Diagram架构元素,可在报告模板中插入Model Context后选择Diagram占位符,在生成报告后,Diagram模型元素会以图形形式显示在报告的指定位置,当然,也可选择其他占位符插入关于该模型元素的其他属性信息,如通过Text占位符插入该模型元素的Name和Description等信息。



再给大家介绍一个小技巧,对于模型中架构元素的引用,更简便的方法是直接把模型元素拖放到报告模板中,在弹出的占位符设置界面中设置好占位符后,会在模型树中Report下自动创建与该架构元素关联的Model Context。


引用Query Context

Query Context可用于从指定的规则模型中获取数据,因此,Query Context必须与规则模型相关联,接下来通过示例来介绍Query Context的使用。我们先在Report下创建Query Context,并将规则模型busType与此Query Context关联,如下图所示,该规则模型是获取模型树上所有的BusSystem和BusType。



接下来将创建的Query Context拖放到报告模板的指定位置,由于规则模型的返回形式是List或者ITempTable,所以在占位符上选择List或者Table,本例中选择List占位符,如下图所示:



需要注意的是此时创建出来的List是空的,需要再次把Query Context拖放到该List中添加元素,拖放时需要将Context放到List的大括号内。在弹出的占位符中,通过Text占位符选择List的元素,也就是Model Query的返回值,选择想要表示的模型元素属性,如下图所示:



最终生成的报告如下图所示:



当然我们也可以直接将Model Query拖放到报告模板中,选择占位符后会在模型树Report下自动生成与该Model Query关联的Query Context。


引用Metric Context

Metric Context可以用来从Metric模块中获取数据,因此Metric Context必须与相应的Metric相关联。报告模板必须通过Metric中Report Result Block模块获取数据,所以在Metric开发时需要将运算结果发送到Report Result Block中,然后将该Block赋给Metric Context,如下图所示:



若所引用的Metric运算包含输入模块(Metric Context Block),如上图示例中的Metric含有Wiring Harness输入模块,则需要在报告模板的Metric Context下创建一个Model Context用作复写该Metric中的Wiring Harness输入模块。此时需要将创建的Metric中Metric Context Block拖入到Model Context中模型复写属性栏中,如下图所示,这样在生成报告时,Metric运算会基于Model Context中的模型元素。



完成上述步骤后,最后我们将Metric Context拖放到报告中,占位符选择Metric Context的引用结果,每次生成报告时,会自动执行Metric运算。本示例中的Metric是计算线束的总长度,因此选择Text占位符插入线束的总长度信息,如下图所示:



最终报告模板中插入的占位符及生成的报告如下图所示:



3

报告的嵌套

在报告模板中,当有数据传递的时候,需要使用到Report Module。Report Module是Report的子集,我们可以将Report看作是主报告,Report Module是子报告,它引用了主报告Report中的数据作为Report Module的输入,对Report Module的操作与Report相同。一个Report可以包含若干个Report Module,Report Module之间可以平行组合在一起,也可以互相嵌套,最终汇总成一个报告模板。下面通过示例来介绍Report Module的使用:


在Report Package中创建一个Report Module,打开新建的Report Module,用同样的方法可在模板上创建各种静态、动态元素,比如创建一个Query Context,通过规则模型获取ECU的MicroProcessor,在Report Module中插入该Query Context,选择Text占位符显式ECU中MicroProcessor的名称,如下图所示:



创建好后,把Report Module拖放到主Report中,使之成为Report的一部分。这时我们从弹出的对话框中可以看到Report Module中的Model Query可以引用主Report中存在的元素,使之成为Model Query的输入。这样就把主Report中的数据传递到了Report Module中。如下图所示,Report Module中的Model Query引用了主Report中Model Context所关联的ECU。这样,主Report在生成报告时,会在相应位置显示Report Module中的内容,而Report Module中的数据来源于主Report。



一份精美的报告模板往往需要各个模块的协同配合使用,也需要我们在使用PREEvision过程中多加利用Report功能。通过今天的学习,相信大家对PREEvision中几大常用模块都有了基本的认识,大家在平时的工作中不妨多加练习,加深对各个模块的熟练程度,如此才能更为直观、快速地呈现我们想要搭建的模型信息哦!



更多精彩推荐:

如何利用PREEvision和MATLAB开发AUTOSAR软件组件

闲谈PREEvision中的二次开发

如何在PREEvision中进行SOA建模

手把手教你如何在PREEvision中进行CAN的多路信号复用设计

PREEvision对汽车以太网的支持

MVVM架构在Kanzi项目开发中的应用

浅谈AUTOSAR架构及开发方法



【声明】内容源于网络
0
0
怿星科技
让智能汽车研发更高效!
内容 428
粉丝 0
怿星科技 让智能汽车研发更高效!
总阅读795
粉丝0
内容428