第1章 概述
datastore数据源的使用需要同时满足如下两个条件:
1.在使用UniEAP Platform V4(或更高版本)的RIA组件;
2.数据已经在客户端的web页面存储,数据读取通过业务逻辑已经实现,如果使用report的sql数据源,就需要重复开发。并且,有些数据是通过复杂的业务逻辑计算得来,而不是简单的sql可以查询到的。
第2章 具体实现方法
2.1 创建datastore数据集
点击数据源管理右侧“+”号,点击创建DataStore数据集,打开如下页面
2.2 选择已配置数据源
注意:此Tab页是为了兼容旧版本设计器的数据源配置方式而保留的,如果是新做的报表,建议使用在线数据源配置
为了兼容旧版本的C/S报表设计器,在Web报表设计器中增加了“选择已配置数据源”选项,可以在下方数据源下拉列表中,选择到datasource.xml文件中已配置的datastore数据源,如下图红框位置
2.2.1 数据源只有一个sessionFactory
数据源名称选择datastore_v4_sessionFactory。
2.2.2 数据源有多个sessionFactory
对于数据源有多个sessionFactory,需要在datasource.xml中配置多个数据源。
<Category Name="datastore" Caption="UniEAP DataStore 数据源" SourceClass="com.neusoft.report.engine.dataset.datasource.impl.DataStoreDataSource"
QuerierClass="com.neusoft.report.engine.dataset.executer.datastore.DataStoreDataSetExecuter">
<DataSource Name="datastore_v4_sessionFactory" Caption="datastore_v4_sessionFactory">
<Parameters>
<Param Name="metadataProvider" Value='com.neusoft.report.engine.dataset.datasource.impl.HibernateMetadataProvider'/>
<Param Name="sessionFactoryName" Value='sessionFactory'/>
</Parameters>
</DataSource>
<DataSource Name="datastore_v3_drm" Caption="datastore_v3_drm">
<Parameters>
<Param Name="metadataProvider" Value='com.neusoft.report.engine.dataset.datasource.impl.DrmDataStoreMetadataProvider'/>
</Parameters>
</DataSource>
</Category>
2.3 在线配置数据源
在线配置数据源支持在线配置metadataProvider,可以将类完整路径填入输入框中,如下图所示
2.4 获得数据集的字段
获得数据集的字段有以下几种方法
2.4.1 自动解析
无论是使用“已配置的数据源”还是“在线配置数据源”,添加了metadataProvider,就可以通过点击“解析按钮”,解析出metadataProvider类中返回的字段
注意:解析时metadataProvider中可能会用到“DataStore名称”,可以在解析前输入“DataStore名称”,
解析完成后,单击确定即可。
2.4.2 手动添加
在获取数据集字段时,也可以不配置metadataProvider,而通过手动添加的方式,添加数据集字段,添加完成后,单击确定即可。
2.4.3 通过Entity添加
如果datastore与UniEAP Platform V4.x的entity模型有映射关系,可以直接通过Entity名称进行解析。
在下页面中,输入一个entity类名称,
输入Entity类名称的时候需要注意,如类为com.neusoft.report.User,那么直接输入User,然后点击解析,解析出对应entity的元数据。 其中datastore名称可以自己取,但需注意在前台调用时,名称要与这个名称匹配。
2.5 前台调用方法以及举例
在路径report/unieap/pages/sample/jsp/othershow/datastore/demo2.jsp中
function submitData(){
var dc = new unieap.ds.DataCenter();
dc.addDataStore(dataCenter.getDataStore("测试"));
dc.addDataStore(dataCenter.getDataStore("title"));
var param={};
param.reportId="datacenter_report_orders";
param.newReport="true";
param.datacenter=dc.toJson();
DSReportShow(param);
}
这一段代码中实现了:
1.DataCenter的创建
2.两个DataStore"测试"和"title"的创建
3.数据集的调用
查看页面,实现效果如下:
点击下面的生成报表按钮,则此页面上的数据生成了一张报表,如图: