En

JazzTeam Software Development Company

Agile Java Development

Формирование отчетов в BIRT

В первой статье, посвященной технологии BIRT, мы сделали простой шаблон отчета, который отображает некоторые данные из базы данных в табличной форме. Это простая база данных, которая используется в небольшом web-приложении. В базе содержится информация о событиях, а именно: название, описание, дата и время проведения, информация об авторе (пользователь, который добавил мероприятие) и тематика мероприятия (например, “Спорт”, “Культура”, “Образование” и т.п.).

Схема данной базы приведена на скриншоте ниже:

Сам же шаблон отчета выглядит следующим образом:

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

В этой статье мы рассмотрим некоторые возможности, которые позволяют делать более сложные и детализированные отчеты, такие, как группировка, агрегация, форматирование данных, передача параметров.

Группировка данных в отчете

Для более наглядного представления информации очень удобно использовать группировку данных в отчете. Например, мы можем выделить какие-либо группы в нашем наборе данных. Также, есть возможность сгруппировать наши события по тематикам, и в таком случае мы будем видеть конкретную группу — события, связанные, например, со спортом. А внутри данной группы мы можем выделить еще одну группу — автор события. В таком случае, структуру нашего отчета можно будет описать при помощи такой схемы:

Теперь попробуем реализовать это в BIRT. За основу возьмем шаблон из первой статьи, только в нём немного изменим запрос (добавим получение значения идентификатора тематики мероприятия).

Для того, чтобы добавить группировку в наш отчет, нам нужно навести курсор на нашу таблицу, и кликнуть на значок Table (после наведения на таблицу значок появится слева под таблицей). Затем, кликнем правой кнопкой мыши на строке Detail Row и выберем пункт “Insert Group”.

В диалоговом окне нам нужно указать имя нашей группы (Поле “Name”), а также поле, по которому будет происходить группировка (поле “Group On”). Жмём OK.

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

Удалим поле [theme_id], которое было автоматически подставлено в шаблон при создании шаблона, вместо него поставим [theme_name]

Аналогичным образом добавим вторую группировку, в этот раз — по полю [user_login].

Теперь сделаем так, чтобы поля [theme_name] и [user_login] отображались на одном уровне с данными из “Detail Row”. Для этого выделяем ячейку, которая содержит данное поле (важно: нужно выделить именно ячейку, а не содержащийся в ней элемент Data). Затем, в редакторе свойств на вкладке General, изменим значение свойства Drop с None на Detail.

Форматированный вывод

В отчете у нас присутствуют две колонки, в которых содержится информация о времени и дате проведения мероприятия. Допустим, нас не устраивает то, каким образом эти поля выводятся на отчет, и мы хотим, чтобы эта информация отображалась в одной ячейке, в формате “дд.мм.гггг, чч:мм”.

Для этого, удалим содержимое ячейки [event_date], после чего кликнем на ней правой кнопкой мыши → Insert → Text.

Далее, при помощи тега <VALUE-OF></VALUE-OF> мы можем динамически подставить значения из нужных полей нашего набора данных.

Для форматирования даты и времени воспользуемся атрибутом format. Для даты значение данного атрибута будет “Short Date” (дд.мм.гггг), для времени — “Short Time” (чч:мм).

Важный момент: нужно обязательно изменить тип с Auto на HTML. Если этого не сделать, то при просмотре отчета у нас будет просто выведено наше выражение.

После выполнения данных операций осталось только удалить колонку, в которой у нас находится элемент [event_time] и изменить ширину столбца с новой отформатированной датой.

Для этого необходимо выделить колонку, в редакторе свойств перейти на вкладку Advanced (она находится в самом низу) и изменить свойство Width, установив его значение равному 100 пикселей.

В результате наш шаблон будет иметь следующий вид:

Агрегация

Группировки, как правило, добавляют с целью выведения какой-либо итоговой информации по группе. Мы, например, можем добавить подсчёт количества мероприятий по каждой теме. Для этого, в шапке группы first_group, в ту же колонку, где находится название события, добавим поле Aggregation (клик правой кнопкой мыши по ячейке → Insert→ Aggregation).

Задаём название нашей агрегации (поле “Column Binding Name”), в поле “Function” выбираем функцию COUNT, а в поле “Expression” задаем привязку к полю event_name из нашего Data Set’a. Жмём ОК.

В результате мы можем увидеть, что в ячейке появился элемент Aggregation.

Наведём немного красоты. Объединим все ячейки футера в одну:

Затем установим левый отступ равному 25pt:

Добавим рамку сверху и снизу (свойство Width имеет значение Thin):

И установим цвет фона:

В результате, наш шаблон будет иметь следующий вид:

Запустим наш отчет. Для этого, на панели инструментов кликаем на кнопку View Report:

В нашем веб-браузере откроется новая вкладка с нашим отчетом:

Постороннему человеку, который посмотрит наш отчет, может быть не совсем понятно, что обозначают эти числа 1, 3, 2 и т.д. в итогах каждой группы. Давайте сделаем вывод итогов по каждой группе в формате: “Всего новостей по теме: число”.

Для этого, сперва, заменим элемент Aggregation на Text. Используя уже знакомый нам тег <VALUE-OF></VALUE-OF>, добавим динамическое отображение количества новостей в группе.
Важно: в выражении row[“Aggregation”], “Aggregation” - это имя нашей агрегации, которое мы задавали в поле “Column Binding Name” при её создании, так что если Вы задали другое имя, то использовать нужно именно ваше.

Сохраняем изменения. Теперь наш шаблон отчета выглядит следующим образом:

И результат после запуска:

 

Параметризированные отчеты

Довольно часто отчет нужно конфигурировать на основании некоторых переменных параметров. Для того, чтобы сделать отчет BIRT параметризированным, необходимо выполнить следующие шаги:
1) На панели Data Explorer, находим категорию “Report Parameter”. Кликаем правой кнопкой мыши на эту категорию и выбираем “New Parameter”.

2) В открывшемся диалоге, задаём имя нашего параметра (поле “Name”), тип (поле “Data type”), формат (поле “Format as”) и значение по умолчанию (поле “Default value”).

Мы будем передавать в отчет некую дату, события до которой нас не интересуют. Следовательно, тип у нас будет Date, а в значение по умолчанию мы будем передавать текущую дату. Дата у нас будет в формате “Short Date”.

Далее, переходим в свойства нашего Data Set’a. Для этого на вкладке “Data Explorer” раскрываем категорию “Data Sets”, дважды кликаем на нашем наборе данных, переходим на вкладку Parameters, нажимаем New.

В открывшемся диалоге задаём имя нашего параметра (поле “Name”), тип (поле “Data type”), и связываем его с созданным в предыдущем шаге параметром отчета (в выпадающем списке “Linked to Report Parameter” выбираем наш созданный параметр):

Сохраняем, и переходим на вкладку Query. Здесь нам нужно изменить наш SQL запрос, добавив условие по выборке событий (строка 11):

После выполнения этих шагов, можно запустить отчет и посмотреть, что получилось. После запуска отчета, BIRT нам отобразит стандартное окно ввода параметров. Ничего не меняя, жмём ОК.

В результате мы видим отчёт, в котором присутствует только одна запись:

Попробуем ввести другое значение:


Кастомная страница параметров

При интеграции BIRT в существующее web-приложение может появится необходимость написания собственной страницы ввода параметров. Для этих целей в BIRT имеется библиотека тегов для описании страницы параметров. Нам необходимо подключить к нашей JSP странице .tld файл, и используя специальные теги описать нашу страницу параметров.

На строке 4 происходит подключение .tld файла. На строке 13 мы объявляем страницу параметров, используя директиву parameterPage, которая объявлена в том самом tld файле, который мы подключили до этого. Также, при помощи атрибута reportDesign указываем, к какому шаблону относится наша страница параметров, а при помощи атрибута pattern указываем, как именно мы хотим отобразить наш отчет (frameset, preview, run и т.д.). На 14-й строке мы описываем элемент для ввода данных. Для того, чтобы связать наше поле для ввода и параметр отчета, необходимо лишь указать в атрибуте name нашего поля такое же имя, как и у параметра отчета.

Затем мы можем использовать нашу страницу параметров аналогично той, что предоставляет BIRT. После запуска страницы параметров, можно указать значение нашего параметра, и после клика по кнопке “Run Report” выполнится наш отчет.

Графики

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

В качестве примера, давайте выведем диаграмму, на которой будет выведена статистика по 5 категориям, по которым больше всего событий.
Для того, чтобы создать график, кликнем правой кнопкой мыши на пустом пространстве в шаблоне отчета → Insert → Chart. В открывшемся диалоговом окне, в панеле “Select Chart Type” выбираем Pie и кликаем на кнопку Next.

На следующей вкладке нам необходимо сконфигурировать набор данных для заполнения графика. Данные мы будем брать из базы данных, так что в группе “Select Data” выбираем переключатель “Use Data From”:

Далее, в выпадающем списке выбираем “New Data Set”:

Нам откроется диалог создания нового Data Set’a. В поле “Data Set Name” вводим название нашего набора данных и кликаем Next:

Теперь нам нужно сформировать SQL запрос для получения данных из БД. В наборе у нас будет две колонки: theme_name с названием тематики и events_count с количеством событий по данной тематике. Пишем запрос и кликаем Next:

Далее нам необходимо указать, какие колонки за что отвечают. Для группы “Slice Size Definition” (1), из выпадающего списка выбираем events_count, затем для группы “Category Definition” (2) выбираем из списка theme_name:

Далее настроим фильтр. Для этого кликнем на кнопку Filters в открывшемся диалоговом окне кликаем на Add:

В данном диалоговом окне нам нужно настроить наш фильтр. Нам нужно сделать так, чтобы в нашем наборе были тематики, по которым зарегистрировано наибольшее число мероприятий. Для этого, в первом поле выбираем “events_count”, в выпадающем списке выбираем функцию “Top n”, а в последнее поле вводим число записей - 5:

Мы выполнили все необходимые шаги по настройке набора данных для отчета. Кликаем Next и попадаем на последнюю вкладку — “Format Chart”. Сделаем некоторые визуальные изменения в отображении нашего отчета: изменим заголовок диаграммы, добавим заголовок к нашей легенде, и отобразим число мероприятий по каждой категории.

Чтобы изменить заголовок диаграммы, переходим на “Title” и в поле “Char Title” вводим новое название:

Затем, переходим на вкладку Legend, и в поле Title вводим название, которое будет отображено над легендой:

Далее, настроим отображение количества событий по каждой категории. Для этого перейдем на вкладку “Value Series”, и кликнем на кнопку Labels:

В открывшемся диалоговом окне, в группе “Format”, в поле “Position” установим значение Inside:

После выполнения всех шагов, в окне предпросмотра мы увидим следующее:

Запустим наш отчет:

, , ,

Leave a Reply

Your email address will not be published. Required fields are marked *