Вопрос дизайна.
Ранее в этом году я разработал веб-приложение для онлайн-тестирования. Я использовал сервлеты Java и шаблоны Freemarker и делал это полностью в соответствии с парадигмой MVC.
Одна большая отсутствующая функция в приложении - то, что оно не предоставляет отчетов. Первоначальный дизайн приложения не рассматривал отчетность как часть ядра из-за различных ограничений, не обязательно технических. Службы отчетов по мере необходимости должны позволять пользователям в любое время получать свои отчеты в Интернете, а также загружать их в предварительно определенных форматах.
Приложение переросло в стадию, на которой я не хотел бы вводить в него больше кода и хочу изолировать основные модули и разработать будущие потребности вокруг этого ядра.
Я хотел бы услышать несколько идей о том, как продолжить разработку этой службы отчетов на основе основного приложения.
Какие инструменты отчетности я могу использовать? Раньше я использовал Jasper, но слышал, что BIRT тоже хорош. Киньте свои предложения.




Я бы порекомендовал Jasper, потому что я использовал его в прошлом и нашел его довольно простым в настройке и использовании. Его можно без особых проблем интегрировать в свое приложение.
Я слышал только хорошее о BIRT, но никогда не реализовывал его сам.
Хотя Jasper - довольно хороший выбор, если у вас достаточно продвинутые требования, такие как:
Но если вам действительно нужно отображать табличные отчеты в популярных форматах, таких как HTML / PDF / XLS, вы можете пройти долгий путь с помощью только диплайтаг, с гораздо меньшими усилиями, чем требует Jasper.
Простой табличный отчет занимает около 20 строк кода JSP с использованием displaytag, но тот же отчет требует около 500 строк XML с использованием Jasper. Я бы исследовал, может ли displaytag соответствовать вашим требованиям, прежде чем переходить к «тяжелому» решению для создания отчетов, например BIRT / Jasper.
Я бы порекомендовал искусство: http://art.sourceforge.net/. Мы пользуемся этим инструментом без проблем. Это все еще активный проект, поэтому, если вы добавите новую функцию, вы можете добавить запрос на нее.