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

5 birt properties

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

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

Mys*_*ral 7

您可以创建功能数据源,将该数据源添加到报告库中,该报告库可以由系统中的所有BIRT报告导入和使用.库中的源可以具有静态连接属性,也可以使用外部化属性对它们进行抽象.

如果要外部化连接信息,则需要调整数据源本身.在数据源编辑器中,有一个"属性绑定"部分,允许您抽象管理数据连接的所有值.从那里,您可以将值(使用表达式编辑器)绑定到报表参数或属性文件.

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

要绑定到属性文件,请在Report的顶级属性中设置Resource文件.从那里,您可以使用属性键值将条目绑定到数据源.

祝好运!

  • 谢谢!这很有帮助.我不得不在属性绑定值中使用以下代码行:reportContext.getMessage("propertyKey",reportContext.getLocale()); (2认同)
  • 请举例说明如何使用属性文件中的属性密钥。目前尚不清楚这是如何存档的。 (2认同)

blu*_*ish 5

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

  • 创建数据源(例如"DS"),设置正确的参数配置以连接到数据库.
  • 右键单击"DS">外部化到连接配置文件...>选中两个选项,设置连接配置文件的名称,确定>设置路径和文件名以保存连接配置文件存储(例如"reportName.cps"),取消选中加密...(这样我们就可以手动修改XML文件中的信息).

现在我们有了"reportName.cps",这是一个XML文件,我们可以根据我们放置报告的环境(开发,生产......)进行修改.问题是"DS"已静态加载来自"reportName.cps"的信息.如果它可以在我们指定的绝对路径中找到"reportName.cps",则会以动态方式加载它们.因此,更改环境的文件路径将不同,报告将找不到我们的文件.要告诉报告文件的正确位置并动态加载它,让我们编写一个脚本:

  • 设置beforeOpen脚本以使用部署在资源文件夹中的连接配置文件,该配置文件对于每个环境可以是不同的:

    var myresourcefolder = reportContext.getDesignHandle().getResourceFolder();
    this.setExtensionProperty("OdaConnProfileStorePath", myresourcefolder + "/reportName.cps");
    
    Run Code Online (Sandbox Code Playgroud)