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

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

有帮助吗?

解决方案

一,你创建一个功能的数据源,可以添加数据源可以导入和使用的所有BIRT在你的系统报告的报告库。库内部的源可以具有静态的连接属性,也可以抽象他们使用外部化的性质。

如果您想要外部化的连接信息,您将需要调整数据源本身。里面的数据源代码编辑器,有一个“属性绑定”部分,可以让你抽象所有管理数据连接的值。从那里可以将值(使用表达式编辑器)结合任一报告参数或者属性文件中。

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

要绑定到属性文件,设置在该报告的顶级属性的资源文件。从那里,你可以使用属性键值项的数据源绑定。

祝您好运!

其他提示

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

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

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

  • 设置一个 before打开脚本 使用资源文件夹中部署的连接配置文件,该配置文件对于每个环境可能有所不同:

    var myresourcefolder = reportContext.getDesignHandle().getResourceFolder();
    this.setExtensionProperty("OdaConnProfileStorePath", myresourcefolder + "/reportName.cps");
    
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top