Я бы сказал, что BIRT является одним из наиболее независимых от данных инструментов. Любой инструмент отчетности будет ориентирован на данные; данные - это то, что вы пытаетесь представить своим пользователям. BIRT (как вы указали) имеет обширную поддержку как для RBDMS, так и для источников, не относящихся к RDBMS (например, POJO).
Я думаю, что POJO здесь логично, учитывая ваш сбор данных, управляемый приложением. Проблема не в доступе к данным; BIRT может сделать это легко через POJO (множество ссылок на это на BIRT Exchange ). Проблема возникает в том, как вы собираетесь использовать данные в самом отчете.
Наиболее важной зависимостью в архитектуре отчета является способность различных элементов управления, которыми вы пользуетесь, передавать данные пользователю, чтобы применять собранные данные осмысленным образом. Элементы управления (диаграммы, таблицы и т. Д.) Заботятся о двух вещах: типах данных и именах столбцов (по причинам доступа). Эти две вещи важны, если элемент управления собирается запросить элемент из набора данных и успешно применить его к полученному холсту.
Первая проблема имен столбцов может быть легко решена путем создания общих имен столбцов и простого заполнения этих столбцов из вашего POJO, когда набор данных собирается во время выполнения. Должна быть некоторая согласованность и логика в отношении управления столбцами в наборе данных и на уровне компонентов, но это выполнимо. Вы также не можете добавить столбцов к набору данных во время выполнения, но вы можете попытаться спроектировать максимальное количество столбцов во время разработки и заполнить то, что необходимо во время выполнения.
Вторая проблема типов данных может быть немного более ограничивающей и требует большего планирования перед внедрением. Если вы назвали первый элемент в наборе данных Val1
(в соответствии с предыдущим абзацем) и напечатали его как строку, он ДОЛЖЕН оставаться строкой каждый раз, когда вы заполняете набор данных, иначе вы увидите ошибка времени Если вы не выполняете тонны вычислений с данными, это можно преодолеть с помощью преобразования типов данных, когда вы переводите POJO в набор данных во время выполнения.
Так что есть способы сделать то, что вы хотите сделать. Реализация требует тщательного планирования как для структуры набора данных, так и для схемы элементов управления, которые используют набор данных. Помните, что каждое событие в жизненном цикле отчета может быть переопределено с помощью сценариев, что дает вам большие возможности и гибкость.
И, наконец, если вы хотите сделать все это во время выполнения, со строго типизированным набором данных, вы можете это сделать. Вам нужно будет использовать API BIRT для генерации ваших отчетов с кодом. Все, что вы можете сделать в конструкторе WYSIWYG Eclipse, можно сделать с помощью обширного API в коде. Проверьте BIRT Exchange для этого. Я бы порекомендовал изучить библиотеки отчетов (еще одна замечательная особенность BIRT), чтобы перетащить эти сложные элементы в многократно используемый портфель, так что вам придется проделать большую часть этой тяжелой работы только один раз.