Создание отчетов с BIRT - PullRequest
       39

Создание отчетов с BIRT

2 голосов
/ 03 января 2011

Я проверил базовые учебные пособия по BIRT и почувствовал, что BIRT сильно ориентирован на базу данных.У меня совершенно другая ситуация.

Я должен генерировать отчеты из другого типа источника данных.Данные, которые будут опубликованы, создаются на лету (это работа другого модуля), и у меня есть сложные структуры данных, содержащие данные (например, список карт).У меня не может быть шаблона, так как все зависит от взаимодействия с пользователем.Но структура данных содержит все данные, необходимые для создания каждого отчета, а именно имена столбцов, количество строк и значения строки.

Я действительно запутался, как создавать отчеты из такого источника данных.BIRT поддерживает только POJO.Могу ли я указать карту в качестве набора данных и класс Java в качестве источника данных?Или, если нет, каковы альтернативы?

Ответы [ 3 ]

4 голосов
/ 12 марта 2012

У вас есть несколько вариантов:

1) Используйте источник данных со сценариями и передайте структуру списка / карты через контекст приложения. В своем отчете вы будете делать что-то подобное в событии инициализации:

var myData = reportContext.getApplicationContext().get("myPassedInValue");
reportContext.setGlobalVariable("data", myData);

Затем в событии выборки набора сценариев данных выполните итерацию по списку / карте, если необходимо.

2) Создайте плагин ODA, который явно обрабатывает вашу структуру данных. Это намного сложнее, но упрощает разработку отчета.

3) Построить отчет и данные программно, используя BIRT Design Engine API.

2 голосов
/ 04 января 2011

Я бы сказал, что BIRT является одним из наиболее независимых от данных инструментов. Любой инструмент отчетности будет ориентирован на данные; данные - это то, что вы пытаетесь представить своим пользователям. BIRT (как вы указали) имеет обширную поддержку как для RBDMS, так и для источников, не относящихся к RDBMS (например, POJO).

Я думаю, что POJO здесь логично, учитывая ваш сбор данных, управляемый приложением. Проблема не в доступе к данным; BIRT может сделать это легко через POJO (множество ссылок на это на BIRT Exchange ). Проблема возникает в том, как вы собираетесь использовать данные в самом отчете.

Наиболее важной зависимостью в архитектуре отчета является способность различных элементов управления, которыми вы пользуетесь, передавать данные пользователю, чтобы применять собранные данные осмысленным образом. Элементы управления (диаграммы, таблицы и т. Д.) Заботятся о двух вещах: типах данных и именах столбцов (по причинам доступа). Эти две вещи важны, если элемент управления собирается запросить элемент из набора данных и успешно применить его к полученному холсту.

Первая проблема имен столбцов может быть легко решена путем создания общих имен столбцов и простого заполнения этих столбцов из вашего POJO, когда набор данных собирается во время выполнения. Должна быть некоторая согласованность и логика в отношении управления столбцами в наборе данных и на уровне компонентов, но это выполнимо. Вы также не можете добавить столбцов к набору данных во время выполнения, но вы можете попытаться спроектировать максимальное количество столбцов во время разработки и заполнить то, что необходимо во время выполнения.

Вторая проблема типов данных может быть немного более ограничивающей и требует большего планирования перед внедрением. Если вы назвали первый элемент в наборе данных Val1 (в соответствии с предыдущим абзацем) и напечатали его как строку, он ДОЛЖЕН оставаться строкой каждый раз, когда вы заполняете набор данных, иначе вы увидите ошибка времени Если вы не выполняете тонны вычислений с данными, это можно преодолеть с помощью преобразования типов данных, когда вы переводите POJO в набор данных во время выполнения.

Так что есть способы сделать то, что вы хотите сделать. Реализация требует тщательного планирования как для структуры набора данных, так и для схемы элементов управления, которые используют набор данных. Помните, что каждое событие в жизненном цикле отчета может быть переопределено с помощью сценариев, что дает вам большие возможности и гибкость.

И, наконец, если вы хотите сделать все это во время выполнения, со строго типизированным набором данных, вы можете это сделать. Вам нужно будет использовать API BIRT для генерации ваших отчетов с кодом. Все, что вы можете сделать в конструкторе WYSIWYG Eclipse, можно сделать с помощью обширного API в коде. Проверьте BIRT Exchange для этого. Я бы порекомендовал изучить библиотеки отчетов (еще одна замечательная особенность BIRT), чтобы перетащить эти сложные элементы в многократно используемый портфель, так что вам придется проделать большую часть этой тяжелой работы только один раз.

0 голосов
/ 19 января 2011

Что вам, возможно, понадобится сделать, это построить свой отчет из кода на основе ваших данных. Вы не описали свою ситуацию достаточно подробно, чтобы сказать это наверняка. И сборка из кода должна выполняться только в редких случаях, потому что это требует изменения программы для любого изменения. Но если ваши потребности в контроле находятся за пределами какого-либо инструмента отчетности, посмотрите на этот подход. Если вы используете этот подход, то вы можете использовать iText для генерации PDF, OpenXML для DOCX / XLSX / PPTX и т. Д.

С учетом вышесказанного, вы можете создать файл XML из ваших POJO? Это дополнительный шаг, но если вы можете, то вы можете передать его большинству любой системы отчетности, если схема вашего XML постоянна. Это был бы намного лучший подход, поскольку вы бы сохранили макет отчетности, форматирование и логику в инструменте отчетности. Экономит ваше время и значительно упрощает пересмотр.

Если вы пойдете по XML-пути, посмотрите на Наветренные отчеты . (Отказ от ответственности, я технический директор Windward.) С Windward вы создаете отчеты в Microsoft Word, Excel или PowerPoint, что делает разработку и редактирование отчетов быстрым и простым.

Для общей информации я предлагаю java-отчеты и программное обеспечение для отчетов . Ключом к системе, которая хорошо работает для вас, является тот, в котором инструмент дизайна естественным образом подходит для вашего стиля - так что попробуйте несколько.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...