Динамическое создание отчетов в Пентахо и работа с определениями отчетов в базе данных. - PullRequest
0 голосов
/ 12 января 2011

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

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

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

1 Ответ

1 голос
/ 12 января 2011

Считайте ваши отчеты в байтовый массив, а затем используйте метод ResourceManager.createDirectly, как обычно.Это решит вашу проблему с анализом отчетов.

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

ResourceManager.createDirectly (bytes, SubReport.class)

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

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

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

...