此文档说明如何在Smartbi中实现自定义JavaeBean示例。
在项目的使用过程中,有一些数据不能直接从关系或者多维数据库中获取,可能需要从另外一些途径获取又或者需要一些特殊的处理。
Smartbi中的查询和多维分析无法完成此功能,因此提供了Java查询二次开发接口允许项目进行定制性的开发。 在项目的使用过程中,有一些数据不能直接从关系或者多维数据源中获取,可能需要从另外一些途径获取又或者需要一些特殊的处理。
Smartbi中的基于关系数据源的数据集、多维数据集和多维分析都无法完成此功能,因此提供了Java查询二次开发接口允许项目进行定制开发。 为了应对这种需求,Smartbi
提供了一个可以根据需要扩充的Java查询方式,可以根据实际情况开发来满足您的需求。
本方案是在Smartbi中添加自定义的Java查询类,并使Smartbi正确的展示数据的过程。 下面讲解一下具体的实现步骤:
- 按照使用smartbi提供工具创建扩展包开发扩展包的说明,新建扩展包项目MyJavaQueryProj,如果是使用cmd脚本创建,配置如下图:
- 解压smartbi.war到临时目录
- 将临时目录中的/WEB-INF/lib/smartbi-FreeQuery.jar、smartbi-Common.jar等smartbi依赖包复制到扩展包项目MyJavaQueryProj的lib-compile目录,并添加该目录下所有jar为项目的依赖包(如果要添加的jar不是smartbi.war中的jar,但是自定义javabean需要使用,则需要将jar包复制到MyJavaQueryProj的src/web/META-INF/lib目录,该目录下的jar在打包扩展包时将一同打包)
在MyJavaQueryProj项目中新建一个类com.proj.MyJavaQuery,并实现接口
IJavaQueryData
.ISimpleData
(该接口声明返回该类返回的数据量比较少,Smartbi会自动读取所有数据并支持计算字段、排序、聚合、条件的功能)
- 编译项目,运行/MyJavaQueryProj/build.xml将项目打包为扩展包MyJavaQueryProj.ext,如下图
注:Eclipse等IDE编译用的JDK必须与Smartbi服务器运行的JDK使用同一个版本 - 执行后刷新MyJavaQueryProj项目,可以看到新增一个dist目录,目录下MyJavaQueryProj.ext文件就是生成的扩展包
- 按照扩展包部署的方法,部署MyJavaQueryProj.ext到smartbi
- 重启smartbi应用服务器
- 在【定制管理】→【数据管理】的“数据源”节点右键新建Java数据源
- “Java数据源”上右键“新建Java查询对象”在类名中输入正确的Java查询实现类全名(如com.proj.MyJavaQuery)并获取默认配置,可自定义修改配置
修改文件名配置为E:\test.csv - 点击获取参数与结果集并保存
- 保存后就可以在【定制管理】→【数据集定义】的“Java查询”中使用对应的Java查询对象新建Java查询,拖动Java查询字段到表达式编辑器,然后保存Java查询
- 保存Java查询到指定目录后,可以基于java查询新建分析
...