在项目运行了较长时间之后,报表的内容往往需要跟着管理口径的变化做出调整。像负责人、版本、工作项类型、统计时段还有项目名称这些字段一旦改过,如果每次都去复制一份新页面,再靠手工修改里面的查询条件,那报表很快会变得又多又乱,后面维护起来就很不方便了。Polarion本身支持通过LiveReport页面、可视化组件和页面参数来制作能够动态变化的报表,也允许将报表导出成PDF格式,方便离线查阅或者拿去做评审材料,不用每次都打开系统去翻。
一、Polarion里面怎么调整报表模板
在对报表模板动手修改之前,要先弄清楚眼下这份报表到底是用LiveReport页面做的,还是放在LiveDoc文档里的,又或者是团队自己开发出来的Velocity组件。这三种类型的报表改法不一样,入口也不一样,不能混在一块处理,否则很容易找错设置的位置。
1、先进入报表的编辑模式
打开需要调整的那张LiveReport页面,然后点击页面上方那个【Edit】按钮,让页面切换到可编辑的状态。这种页面一般是由表格、图表、查询结果列表、文本说明区块,还有参数组件这些部分拼起来的。如果想要调整布局,可以把现有的组件挪一挪位置,也可以把已经不用的旧组件删掉,再从右侧的组件区域里把新的表格或者图表拖进来,重新搭一个更符合当前需求的结构。
2、修改组件里面的查询条件
在页面上点击需要调整的那个组件,打开它的配置页面,去检查里面设置的工作项类型、状态、负责人、版本,还有查询的范围是不是都还对得上目前的口径。在比较普通的场景下面,可以直接在查询框里填写Lucene查询语句;如果需要让查询的内容根据页面上的变量动态变化,那就把查询类型切成支持Velocity模式的那一种,然后在查询语句里面去引用页面参数,这样用户在外面改参数时,表里的数据就会跟着自动刷新,不用再回到编辑模式里手工改语句了。Polarion的LiveReport页面不仅可以用预定义好的组件来搭建报表,也允许进一步去扩展一些自定义组件,灵活性是足够的。
3、做大改动之前先把原来的页面复制一份
假如这张报表已经在周报、正式评审或者审计场景中使用了,那就不建议直接在原页面上反复修改,万一改乱了,之前的数据展示口径就找不回来了。更稳妥的做法是先复制一份模板出来,在这份副本里去做字段调整、图表替换和筛选条件的修改,等到验证完了确认没有问题,再用这份新的页面去替换掉原来的正式页面。这样一来,旧版本的报表还能继续保留着,修改失败时也有一条稳妥的回退路径。
二、报表模板里的变量该怎么替换
Polarion报表中的变量,通常是通过页面参数(Page Parameters)来管理的,这个功能的主要目的,是让用户能在打开报表的界面里,自己去选择版本、状态或者工作项类型,而报表里面的数据会自动跟着这些选择去变化,不用每次都要进到编辑模式里手动去改查询语句的内容。
1、先把页面参数创建好
在报表的编辑界面中,打开页面参数设置的那一项,去新建一个参数。根据这个参数将来要用来选什么,来决定它的类型——比如是字符串、整数、日期,还是那种可以从下拉列表里选的枚举类型,然后再把参数的ID、在页面上显示的名字,还有默认值都填好。例如用来筛选版本的参数可以命名为targetVersion,用来选工作项类型的参数可以命名为workItemType,这样后面在查询里引用的时候更好辨认。
2、把建好的参数挂到页面上去
在报表页面里,从组件区里把【Page Parameters】这个组件添加进来,再把刚才创建好的参数放进去,保存页面之后,用户再打开这张报表时,就能直接在这个组件里选择参数的值了。按照官方Widget SDK的说明,页面脚本既可以新增页面参数,也可以把这些页面参数绑定到具体的组件参数上,形成联动效果。
3、在查询语句当中引用这些变量
当需要某个组件跟着页面上的选择动态变化时,就把那个组件的查询方式切换到支持Velocity的模式,然后在查询语句里按照对应写法去引用参数。在官方SDK给出的示例里面,页面参数可以通过类似${pageParameters.Year}这样的写法放进查询条件里去,不过要特别注意,不同类型的参数取值方式不太一样,枚举类型的参数和普通文本参数不能直接套用完全相同的表达式,需要根据变量的实际类型做适配,否则运行时会取不到值。
三、报表模板修改之后应该怎么检查
变量替换的工作做完了以后,不能光看一眼页面能正常打开就认为报表没问题了,实际上还要把默认值、空值情况、不同权限账号看到的结果,还有导出来的PDF文件都检查一遍,才能确保在所有使用场景下都是正常的。
1、切换不同的参数组合来验证
在页面上至少选择两组不一样的版本、状态或者工作项类型,分别点一下查询,看看表格里拉出来的数据量,还有图表上显示的内容,是不是会跟着参数的变化而变化。如果发现参数切来切去,数据却一动不动,那通常要去排查一下参数的ID写对了没有、查询表达式里的变量引用是不是出了问题,还有组件跟参数之间的绑定关系是不是没有连上。
2、检查一下空值的处理逻辑
有些项目可能确实没有填目标版本,或者部分工作项的负责人字段是空的。如果查询条件写得过于严苛,这些带有空值的记录就会被直接过滤掉,不会出现在报表里面,这样统计出来的结果就可能偏少。因此需要先想清楚,这份报表到底是只看那些字段填写完整的数据,还是也要把这些空值记录一并列出来,然后再去调整查询条件的写法,把该涵盖的情况都覆盖进去。
3、把PDF导出的结果也检查一遍
在线页面的数据显示正常以后,还要再执行一次PDF导出,看看导出来的文件里内容是不是完整的、图表有没有变形、中文有没有出现乱码。Polarion既支持在浏览器里在线查看报表,也支持把报表导出成PDF供离线访问,部分版本还允许用项目名称、空间名称、文档名称和时间等变量去拼接导出文件的文件名,这样导出来的文件一眼就能看出是哪张报表、什么时间生成的,不容易混淆。
总结
关于Polarion里怎么去调整报表模板,以及模板中的变量应该怎么替换,整个操作顺序可以大体概括成:先把原来的报表页面复制一份,然后在副本里去调整组件的布局和查询条件;遇到需要动态筛选的场景,就去创建页面参数,再把这些参数绑定到表格或者图表的查询语句里面。在修改完成之后,通过切换多组参数来测试数据的刷新情况,再把空值、权限和PDF导出的结果都核实一遍。这样处理下来,报表模板就可以长期复用了,不用每次管理口径一变就靠手工重新做一张新页面。