BIRT 如何配置动态数据源
< 返回列表时间: 2020-06-17来源:OSCHINA
BIRT本身不直接支持动态数据源,常见解决办法是在数据源的beforeopen事件中添加类似如下代码:
...
importPackage( Packages.java.io );
importPackage( Packages.java.util );
fin = new java.io.FileInputStream(new String("d:/config.txt"));
props = new java.util.Properties( );
props.load(fin);
extensionProperties.odaDriverClass = new String(props.getProperty("driver"));
extensionProperties.odaURL = new String(props.getProperty("url"));
extensionProperties.odaUser = new String(props.getProperty("username"));
extensionProperties.odaPassword = new String(props.getProperty("password"));
fin.close()
...

这种通过硬编码的方式解决(要么需要大量修改报表文件,要么需要每个报表继承一个公共的库文件),过程还是比较复杂,在报表数量较多,开发人数较多时,需要注意的地方有些多,并不完美。
如果有了集算器,这样的问题就简单多了,其独特的宏替换机制极大地提高代码复用程度,根据不同参数值,得到不同结果。
比如要处理这么个场景: 数据源myDB和oraDB分别指向不同的数据库,两库中有相同结构的表ORDER,报表需要根据参数动态连接数据源,查询并展现ORDER中金额大于1000的订单。示意图如下:



集算器SPL仅1行就搞定了:

1
A =${pSource}.query("select * from ORDER where Amount>1000")

其中 pSource 为是报表参数,代表数据源名,${…} 表示将字符串解析为表达式。其实还有很多情况BIRT解决动态计算问题不太方便,但有集算器SPL的辅助却很简单,感兴趣可以参考: 解决 BIRT 动态数据源的若干示例
集算器提供了 JDBC 驱动,可以很方便的与BIRT等报表工具集成, BIRT调用SPL脚本 有使用和获得它的方法。
关于集算器安装使用、获得免费授权和相关技术资料,可以参见 如何使用集算器 。
热门排行