Динамическое генерирование отчетов в Pentaho и дело с определениями отчетов в базе данных

StackOverflow https://stackoverflow.com/questions/4665380

  •  10-10-2019
  •  | 
  •  

Вопрос

Я разрабатываю приложение отчетности, в котором пользователь может выбрать (и заказывать) отчеты из списка из 100 отчетов и запрашивать основной отчет. Этот основной отчет будет содержать все выбранные отчеты в точном порядке и с содержимым таблицей, в которых перечислены отчеты, включенные в основной отчет. Отчеты, доступные для пользователя, чтобы выбрать (что может быть 100 -е годы), хранятся в базе данных.

Мои вопросы:-

  1. Чтобы сгенерировать основной отчет с выбранными пользователями отчетами, единственное решение, которое я вижу, - это использование API отчетного двигателя для генерации динамического отчета, в который я должен добавить выбранные пользователя отчеты в качестве подрепортов. Это правильный и самый простой способ подойти к этой проблеме? У кого -нибудь есть образцы использования API отчетного двигателя, особенно для внедрения субрепорт в главном отчете?
  2. Поскольку я храню отчеты в DB (Blobs), я пытаюсь найти способ сгенерировать свои подложки с помощью входного потока, а не URL, как указано в ResourceManager.createDirectly(url, MasterReport.class), но до сих пор не был успешным. Как я могу генерировать отчеты из определений, хранящихся в базе данных? Там должна быть некоторая абстракция ресурсов.
Это было полезно?

Решение

Прочитайте свои отчеты в байтовую арайю, а затем используйте метод ResourcceManager.createdirectly, как обычно. Это решит вашу проблему разбора отчетов.

Вы можете проанализировать их непосредственно в субрепорты, используя

Resourcemanager.createdirectly (байты, subreport.class)

Эти субрепорты могут затем быть добавлены в ваш основной отчет в качестве полос подрепортом. Если вы хотите, чтобы выбранные вами отчеты запустились на новой странице, убедитесь, что вы установили стиль «Breakbreak-Bree» на заголовке отчетов вашего подропорта.

Существует абстракция ресурсов: она называется «libloader», и вы можете создавать свои собственные ресурсозагрузчики, которые решают проблему выталкивания ваших данных из вашей базы данных в качестве необработанных потоков, чтобы ресурсофакторные реализации могли интерпретировать/анализировать необработанные данные.

Но каждая база данных спроектирована по -разному и, следовательно, ты Поскольку системный интегратор должен написать для него код клея. Мы можем предложить только интерфейсы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top