esProc将计算能力封装成标准的JDBC接口,可作为各种报表工具的数据源。
普通数据库的JDBC驱动仅是一个接口,实际运算在作为服务器运行的数据库进行;与之不同的是,esProc JDBC已经嵌入了全部运算引擎,不再需要独立的服务器,这样就需要将esProc JDBC用到的jar都加到入应用(如报表工具)的类路径中。
esProc JDBC实现了JDBC的存储过程调用接口,通过该接口执行网络程序(dfx)并返回结果集。可以将esProc JDBC逻辑上看作是一个没有表的数据库。
下面通过实例说明在BIRT中如何应用esProc JDBC数据源。
先看一个无参数的简单例子,设有如下的esProc程序文件my.dfx
其中A1格的计算结果为
在BIRT中具体步骤如下:
1, 创建esProc JDBC的配置文件dfxConfig.xml:
<?xml version="1.0" encoding="UTF-8"?>
<dfxConfig>
<!—dfx文件的存放目录,上述my.dfx即放在此,在这里配置目录后esProc JDBC才能正确找到-->
<paths>c:\\</paths>
<!-- 配置dfx执行时用到的数据源,该节点下可以有配置任意多个数据源, -->
<jdbc-ds-configs>
<!-- 单个数据源配置, -->
<jdbc-ds-config>
<!-- 数据源名称,必须和dfx程序中用到的相同 -->
<name>mysql</name>
<url>jdbc:mysql://192.168.0.95:3306/test</url>
<driver>com.mysql.jdbc.Driver</driver>
<userName>root</userName>
<password>123456</password>
<dbCharset>iso8859-1</dbCharset>
<clientCharset>iso8859-1</clientCharset>
<useSchema>false</useSchema>
<caseSentence>false</caseSentence>
<needTranContent>false</needTranContent>
<needTranSentence>false</needTranSentence>
<!-- dfx中使用该数据源时,是否自动连接 -->
<autoConnect>true</autoConnect>
</jdbc-ds-config>
</jdbc-ds-configs>
</dfxConfig>
特别注意:dfxConfig.xml的文件名不可改变,必须是这个名字,否则esProc JDBC将无法找到。
2, 新建报表并配置其esProc JDBC数据源。
新建一个报表,在Data Sources下新建JDBC Data Source类型的数据源:
进入数据源创建向导页面后,通过“Manage Drivers”添加esProc JDBC驱动相关的jar共有4个
dm.jar 运算引擎
log4j_128.jar Apache的日志包
icu4j_3_4_5.jar IBM的国际化包
poi2.jar Apache的EXCEL读写包,dfx中没用到则可不加。
这些jar可在 [esProc安装目录]\designer\lib下找到。
当然,在dfx中用到的其它数据库驱动也要放进classpath中,如我们这里用的是MYSQL。
另外,dfxConfig.xml也需要被加到classpath中才能被esProc JDBC找到,只要简单地将以把该文件一起压到dm.jar中再加入到类路径中即可,注意要放到dm.jar的根目录下。
添加dm.jar后,Drivers中就会显示出“com.raqsoft.dfxserver.Driver”了,如下:
添加好驱动后,就可以如下配置了jdbc连接了(单击Test Connection…,提示Connection Successful,表示连接成功):
注:只要填入Driver和URL即可,由于没有独立的服务器,这里URL必须是local。esProc JDBC也不是完整的数据库,因而也没有用户名和口令。
3, 添加数据集。通过上面建好的数据源“New Data Set”,如下列图:
完成后,显示结果集的字段列结构如下:
4, 生成报表。把dataSet拖拽到设计面板,生成如下报表:
5, 预览结果,如下:
esProc JDBC还可以支持参数传递,设有如下带参数的网络程序文件my2.dfx
运行时,param1、param2的参数值如果分别设置为“male”,30,就会获得如下结果:
具体操作步骤如下:
1、 创建报表参数。
新建一个空白报表,在Data Explore->Report Parameters下创建两个报表参数p1,p2,默认值分别为:
2、 创建Data Source。步骤同上。
3、 创建Data Set,编写查询语句“call my2(?,?)”,以?代替动态参数。
4、 创建数据集参数,并与报表参数关联起来。点击“Parameters”,如下设置参数,把param_1和报表参数p1关联上,param_2和p2关联上:
5、 预览数据集列结构。点击到“Output Columns”,可以看到字段结构:
6、 预览数据集。点击到“Preview Results”,预览到结果:
7、 生成报表,预览。把Data Set拖拽到设计面板上,生成报表,点击预览,弹出如下参数输入框:
输入参数、点击OK,报表预览如下:
尾注:关于esProc JDBC的更深入信息,特别是dfxConfig.xml的详细说明,请参考esProc官方文档( www.esproc.com可下载)。