9.2 填报功能介绍
UniEAP Report填报模块通过丰富的RIA控件,良好的填报模型,为您提供了完整的填报解决方案,可以完全实现数据的“来去无关”。
填报相关概念
在本文档中,会使用如下概念:
- 可修改单元格(简称:可写格)
指可以修改单元格内数据的单元格,此外,可修改单元格中也可以定义控件。 - 填报逻辑定义格(简称:逻辑主格)
定义填报数据与数据集映射关系的单元格。 - 页面平衡校验
指页面上对数据进行的校验逻辑。例如:单元格间关系条件定义为A1+B1>C1,如果不满足此条件则给出校验提示,不能执行回填操作。 - 单元格逻辑校验
指对可修改单元格内填写数据的校验逻辑。例如:A1>50。不满足这个校验逻辑则给出校验提示。 - 单元格格式验证
可通过正则表达式约束填写数据的数据类型,如:字符串、Email等。 - 单元格自动计算
指修改了单元格中的数据后,可通过自动计算,将相关联单元格中的数值自动修改。自动计算单元格可以不是可写格。 - 惰性初始化
为了提高报表生成以及控件响应的效率,视具体需求在下拉列表和下拉树控件中设置异步请求数据的方式,通常又被称为懒加载。 - 多布局报表
多布局可以理解为一个报表组,类似于Excel的多工作表(多Sheet)。 - 附属格
在报表定义中,依赖于其他单元格的单元格称为附属格。 - 填报表达式
在UniEAP Report填报模块中使用的一种符合JavaScript语法的表达式,填报表达式中可以嵌入报表公式。
填报模型简介
UniEAP Report填报模型充分考虑了数据的来去无关性,数据集中的查询、插入、更新、删除语句中使用的数据库表之间可以完全不相关,单元格中的数据是通过逻辑主格的定义与数据集中字段建立映射关系。
下面通过一个简单的列表式报表为例描述填报模型:
例1, 列表式报表的填报逻辑
学号 | 姓名 | 性别 | 地址 | 电话 |
---|---|---|---|---|
A2,可修改单元格 | B2, 可修改单元格 逻辑主格 回填数据集 ds1 A2 ID B2 name C2 sex D2 address E2 phone |
C2,可修改单元格 | D2,可修改单元格 | E2,可修改单元格 |
上表是一个简单的数据列表,在这张报表中,定义B2为填报表的逻辑主格,在逻辑主格中定义了单元格与数据集字段间的映射关系,随着单元格被扩展,逻辑主格也被扩展,则通过扩展出的逻辑主格即可生成填报数据集,如下表所示:
生成的数据集
ID | Name | Sex | Address | Phone |
---|---|---|---|---|
001 | 张丽 | 女 | 辽宁省大连市 | 13012345678 |
002 | 王林 | 男 | 辽宁省沈阳市 | 13912345678 |
通过回填数据集中的插入、更新、删除语句即可将上述数据更新到数据库中。完成填报操作。
填报特性介绍
丰富的控件
UniEAP Report填报模块提供了丰富的RIA页面控件,为填报提供了丰富的Web页面展现效果,支持的控件类型和控件属性如下表所示:
控件类型 | 控件属性 |
---|---|
文本输入框 | 文本长度限制 |
下拉列表 | 是否允许多选可选择,自定义多选间隔符 是否惰性初始化可选择 是否允许手动输入数据可选择 可以设置多个下拉列表联动 数据动态异步过滤 可设置列表高度 数据可来源于数据集或自定义 |
日历 | 允许设置时分秒 允许设置默认时间 允许设置12/24小时制 |
下拉树 | 设置下拉树宽度、高度 设置下拉树背景色 设置下拉树叶节点条件 是否显示根节点可选 是否惰性初始化可选 是否仅可选择叶子可选 支持树的按末层循环定义 |
按钮 | 允许自定义按钮事件 设置按钮文字 自定义按钮事件 |
单选按钮 | (用于定义复杂参数页面) |
复选按钮 | (用于定义复杂参数页面) |
自定义控件 | 调用UniEAP Report提供的JavaScript API可以完成控件的自定义 |
自动计算
UniEAP Report填报模块支持Web页面的自动计算,当Web页面展现的某些报表单元格数据被修改时,通过在报表中定义的可嵌入在报表公式中的JavaScript代码,相关联的单元格中的数据会即时发生改变,从而实现将报表内统计的数据进行页面级的再计算。
数据验证
UniEAP Report可以通过单元格的正则表达式校验、逻辑表达式校验功能对数据的有效性做严格的限制。
数据审核
UniEAP Report可以通过报表的平衡验证表达式对报表数据进行审核,只有数据被审核通过后才能回填入数据库。
智能插入行、删除行操作
UniEAP Report通过在Web页面的鼠标右键菜单操作,来实现智能插入行、删除行的功能,该功能不仅能支持简单的行式报表,而且也可以支持多层分组报表。
数据填报
UniEAP Report提供了两种填报方式,一种为数据集填报方式,采用默认的数据映射更新方式;另一种为用户自定义方式。
数据集填报
通过定义填报数据集和逻辑主格,来映射单元格内数据与数据集字段,这种方式是UniEAP Report默认提供的数据更新方式。
用户自定义填报
如果UniEAP Report默认提供的数据更新方式不满足您的需求,您也可以通过实现UniEAP Report提供的自定义填报接口,来定制您自己的数据更新方式。
数据更新辅助监听接口
在部分业务中,除了存在向数据库表中回写指定的数据这一需求外,还需要将报表填报过程与一些业务关联,在填报表被更新的同时处理其它业务,如对数据进行额外的合法性检查、对用户的权限做验证等操作。
UniEAP Report提供了数据更新辅助监听接口,该接口中提供了beforeSave、afterSave两个方法,分别在填报表更新前、后被执行,如果您有上述的需求,则可以使用这个数据更新辅助监听接口。详见“报表填报属性定义”章节。
事务一致性
UniEAP Report填报模块的事务一致性避免了垃圾数据的写入,不但能够保证单一数据集的事务一致性,而且当一张报表中定义了多个回填数据集,多个回填数据集对应不同的数据库时,仍然能够保证数据库之间的事务一致性。
另外通过使用UniEAP事务管理组件,更新辅助监听接口中对数据库的业务操作也可保证与多数据集回填操作之间保证事务的一致性。
复杂参数页面
通过UniEAP Report提供的丰富的Web控件,可以自由定义复杂参数页面,让参数页面定义更灵活、便捷,省去了编写JSP参数页面的麻烦。
填报报表的定义规则
- 填报报表中不能定义子布局
- 填报报表不能分页、不能分栏
- 填报报表的单元格不能定义鼠标事件
- 填报报表不能是大数据量报表
- 逻辑主格仅能定义在附属格中
- 隐藏行列不能参与自动计算
- 在交叉报表(行列都扩展的报表)中不能增加行、删除行