Формулировка проблемы: при разработке гибких
отчётов в них задаётся большое количество параметров, при этом для
конкретного отчёта может требоваться всего несколько из них. Кроме
того, типы параметров, которые может передавать отчёту
Arta Synergy
, нигде не зафиксированы, а в
пользовательском интерфейсе используются старые компоненты.
Решение:
Каждый параметр отчёта JasperReports имеет следующий набор свойств:
Name — имя параметра;
Parameter Class — тип параметра;
Description — описание;
Use as a prompt — запрашивать ли при проверке отчёта в iReport;
Default Value Expression — выражение для значения по умолчанию;
Properties — расширенные свойства параметра. Можно добавить сколько угодно таких свойств. Каждое расширенное свойство имеет строковые название и значение.
Мы вводим разделение параметров отчёта на две группы — обязательные
и опциональные. Все имеющиеся в отчёте параметры — по умолчанию
обязательные. Чтобы сделать параметр опциональным, к нему необходимо
добавить расширенное свойство с названием
kz.arta.synergy.reports.parameters.optional
с
любым значением.
Arta Synergy
запрашивает у пользователя параметры
отчёта (если таковые имеются) с помощью специального диалога:
Рисунок 233. Пример диалога «Параметры отчёта» с опцией отчёта «Тип загрузки» - "Сохранить в хранилище"
Заголовок окна диалога равен названию отчёта. Минимальный размер
диалога — 605*174 px (2134*613.8 mm, 72 dpi)
,
максимальный —
604*440 px (2130.8*1552.2 mm, 72 dpi)
.
Если у параметра заполнено поле «описание» (Description), то в качестве подписи параметра используется оно, если нет — то имя параметра (Name).
Если в отчёте есть обязательные параметры, то они отображаются в диалоге сразу же, а при наличии опциональных параметров в диалоге появляется выпадающий список «Добавить параметр», в котором перечислены имеющиеся в отчёте опциональные параметры. При выборе параметра из этого списка он добавляется в диалог ниже и пропадает из списка. Добавленный в диалог опциональный параметр может быть удалён по нажатию на значок «корзины», при этом он вновь появляется в списке для добавления.
Примечание: пример вышеописанного механизма поведения добавления/удаления параметров можно увидеть в создании/редактировании фильтров потоков работ («Добавить условие» и т. д.).
Значение всех параметров отчёта, обязательных и добавленных
опциональных, должно быть заполнено. Для не добавленных в диалог
опциональных параметров в качестве значения в отчёт передаётся
null
.
Параметры отчёта с точки зрения Arta Synergy
делятся на несколько видов в зависимости от типа параметра
JasperReports и способа ввода данных в него (компонент GUI, источник
данных и т. п.). В следующей таблице перечислены виды параметров
отчёта, которые обрабатывает Arta Synergy:
Вид параметра | Название параметра (Name) должно содержать | Тип параметра (Parameter Class) | Используемый GUI- компонент Arta Synergy | Примечание |
---|---|---|---|---|
Строка |
java.lang.String |
Стандартное поле ввода строки. |
Выражение для значения по умолчанию: «какая-то строка» | |
Дата |
java.util.Date |
Стандартное поле ввода даты. Пример: компонент форм «Дата/время» без ввода времени | ||
Время |
java.sql.Time |
Стандартное поле ввода времени. Пример: ввод времени от компонента форм «Дата/время» | ||
Флажок |
java.lang.Boolean |
Стандартный флажок | ||
Выбор нескольких пользователей |
users |
java.lang.String |
Стандартный компонент выбора пользователя с мультивыбором. Пример: компонент форм «Объекты Synergy» с типом данных «Пользователи» и включенным «Позволять мультивыбор» |
В отчёт будет передана строка вида
|
Выбор одного пользователя |
user |
java.lang.String |
Стандартный компонент выбора пользователя без мультивыбора. Пример: компонент форм «Объекты Synergy» с типом данных «Пользователи» и выключенным «Позволять мультивыбор» |
В отчёт будет передана строка с идентификатором пользователя |
Выбор нескольких подразделений |
departments |
java.lang.String |
Стандартный компонент выбора подразделения с мультивыбором. Пример: компонент форм «Объекты Synergy» с типом данных «Пользователи» и включенным «Позволять мультивыбор» |
В отчёт будет передана строка вида
|
Выбор одного подразделения |
department |
java.lang.String |
Стандартный компонент выбора подразделения без мультивыбора. Пример: компонент форм «Объекты Synergy» с типом данных «Подразделения» и выключенным «Позволять мультивыбор» |
В отчёт будет передана строка с идентификаторо |
Выбор нескольких проектов |
actions |
java.lang.String |
Оставить реализацию как есть |
В отчёт будет передана строка вида
|
Выбор одного проектa |
actions |
java.lang.String |
Оставить реализацию как есть |
В отчёт будет передана строка вида с идентификатором проекта |
Выбор одного значения из списка |
_dictionary |
java.lang.String |
Стандартный компонент выбора одного значения из списка (combobox) |
Элементы списка берутся из справочника с кодом, равным
названию (Name) параметра. Столбец этого справочника,
данные из которого будут использоваться в качестве
подписей элементов, должен иметь код
|
Выбор нескольких значений из списка |
_dictionary |
java.util.List |
Стандартный компонент выбора нескольких значений из списка. Пример: «Отображаемые поля» в настройках фильтра потоков работ |
Элементы списка — аналогично предыдущему. Пример выражения
для значения по умолчанию:
|