我有多个从同一个 jdbc 数据源获取数据的 BIRT 报告。
是否可以从外部属性文件或类似文件中获取连接参数(驱动程序 URL、用户名和密码)?
一旦您创建了一个功能数据源,您就可以将该数据源添加到一个报告库中,该报告库可以被您系统中的所有 BIRT 报告导入和使用。库中的源可以具有静态连接属性,或者您可以使用外部属性抽象它们。
如果要外部化连接信息,则需要调整数据源本身。在 Data Source Editor 中,有一个“Property Binding”部分,它允许您抽象控制数据连接的所有值。从那里您可以将值(使用表达式编辑器)绑定到报告参数或属性文件。
要绑定到报表参数,请使用以下语法: params[parametername].value
作为表达式。
要绑定到属性文件,请在报告的顶级属性中设置资源文件。从那里您可以使用属性键值将条目绑定到数据源。
祝你好运!
好的@Mystik 的“属性绑定”解决方案的替代方案是外部化到连接配置文件。
现在我们有了“reportName.cps”,这是一个 XML 文件,我们可以根据放置报告的环境(开发、生产……)对其进行修改。问题是“DS”已经从“reportName.cps”静态加载了这些信息。如果它可以在我们指定的绝对路径中找到“reportName.cps”,它会动态加载它们。所以改变环境文件路径会不同,报告将找不到我们的文件。为了告诉报告文件的正确位置并动态加载它,让我们编写一个脚本:
设置beforeOpen 脚本以使用资源文件夹中部署的连接配置文件,每个环境可能不同:
var myresourcefolder = reportContext.getDesignHandle().getResourceFolder();
this.setExtensionProperty("OdaConnProfileStorePath", myresourcefolder + "/reportName.cps");