来自属性文件的 Birt 数据源参数

Posted

技术标签:

【中文标题】来自属性文件的 Birt 数据源参数【英文标题】:Birt data source parameters from a property file 【发布时间】:2010-11-23 08:15:37 【问题描述】:

我有多个从同一个 jdbc 数据源获取数据的 BIRT 报告。

是否可以从外部属性文件或类似文件中获取连接参数(驱动程序 URL、用户名和密码)?

【问题讨论】:

【参考方案1】:

一旦您创建了一个函数数据源,您就可以将该数据源添加到一个报告库中,该报告库可以被您系统中的所有 BIRT 报告导入和使用。库中的源可以具有静态连接属性,也可以使用外部属性抽象它们。

如果您想外部化连接信息,您需要调整数据源本身。在 Data Source Editor 内部,有一个“Property Binding”部分允许您抽象控制数据连接的所有值。从那里您可以将值(使用表达式编辑器)绑定到报告参数或属性文件。

要绑定到报告参数,请使用以下语法:params[parametername].value 作为表达式。

要绑定到属性文件,请在报告的***属性中设置资源文件。从那里您可以使用属性键值将条目绑定到数据源。

祝你好运!

【讨论】:

谢谢!那很有帮助。我不得不在属性绑定值中使用以下代码行:reportContext.getMessage("propertyKey", reportContext.getLocale()); 对于不熟悉BIRT的人,双击Data Source可以找到Property Binding选项卡。它不是 Eclipse 的 Properties 视图中显示的内容。 请举例说明如何使用属性文件中的属性键。目前尚不清楚这是如何存档的。 对于属性文件,=。 ex : db.driver=com.mysql.jdbc.Driver 然后绑定这个属性,使用如下reportContext.getMessage("db.driver", reportContext.getLocale());【参考方案2】:

良好的@Mystik“属性绑定”解决方案的替代方案是外部化到连接配置文件

创建一个数据源(比如“DS”),设置正确的参数配置以连接到数据库。 右击“DS”>Externalize to Connection Profile...>勾选两个选项,设置Connection Profile的名称,OK>设置路径和文件名用于保存Connection Profile Store (比如“reportName.cps”),取消选中 Encrypt...(这样我们可以手动修改 XML 文件中的信息)。

现在我们有了“reportName.cps”,这是一个 XML 文件,我们可以根据放置报告的环境(开发、生产……)对其进行修改。问题是“DS”已经从“reportName.cps”静态加载了这些信息。如果它可以在我们指定的绝对路径中找到“reportName.cps”,它会动态加载它们。所以改变环境文件路径会不同,报告将找不到我们的文件。为了告诉报告文件的正确位置并动态加载它,让我们编写一个脚本:

设置 beforeOpen 脚本以使用资源文件夹中部署的连接配置文件,该配置文件可能因环境而异:

var myresourcefolder = reportContext.getDesignHandle().getResourceFolder();
this.setExtensionProperty("OdaConnProfileStorePath", myresourcefolder + "/reportName.cps");

【讨论】:

以上是关于来自属性文件的 Birt 数据源参数的主要内容,如果未能解决你的问题,请参考以下文章

BIRT 中如何根据参数动态拼接 SQL

BIRT 怎么调用 Webservice 作为数据源

如何将ListBox中选择的值发送到BIRT中的java Web服务参数?

BIRT 如何用 rest api 接口获取 json 做报表

如何在 BIRT 中禁用或启用图表可见性

birt的使用注意事项