Параметры источника данных Birt из файла свойств - PullRequest
5 голосов
/ 27 августа 2009

У меня есть несколько отчетов BIRT, которые получают данные из одного и того же источника данных jdbc.

Можно ли получить параметры соединения (URL-адрес драйвера, имя пользователя и пароль) из внешнего файла свойств или аналогичного?

Ответы [ 2 ]

7 голосов
/ 27 августа 2009

Создав функциональный источник данных, вы можете добавить этот источник данных в библиотеку отчетов, которая может быть импортирована и использована всеми отчетами BIRT в вашей системе. Источник внутри библиотеки может иметь статические атрибуты соединения или вы можете абстрагировать их, используя внешние свойства.

Если вы хотите экспортировать информацию о соединении, вам нужно настроить сам Источник данных. В редакторе источника данных есть раздел «Привязка свойств», который позволяет абстрагировать все значения, управляющие подключением к данным. Оттуда вы можете привязать значения (используя редактор выражений) либо к параметрам отчета, либо к файлу свойств.

Для привязки к параметру отчета используйте следующий синтаксис: params[parametername].value в качестве выражения.

Чтобы привязать файл свойств, установите файл ресурсов в свойствах верхнего уровня отчета. Оттуда вы можете просто использовать значение ключа свойства, чтобы связать запись с источником данных.

Удачи!

5 голосов
/ 10 июня 2011

Альтернативой хорошему решению @ 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");
    
...