Задача [REPORTS1]: Параметры отчёта

Формулировка проблемы: при разработке гибких отчётов в них задаётся большое количество параметров, при этом для конкретного отчёта может требоваться всего несколько из них. Кроме того, типы параметров, которые может передавать отчёту Arta Synergy, нигде не зафиксированы, а в пользовательском интерфейсе используются старые компоненты.

Решение:

Каждый параметр отчёта JasperReports имеет следующий набор свойств:

Мы вводим разделение параметров отчёта на две группы — обязательные и опциональные. Все имеющиеся в отчёте параметры — по умолчанию обязательные. Чтобы сделать параметр опциональным, к нему необходимо добавить расширенное свойство с названием kz.arta.synergy.reports.parameters.optional с любым значением.

Arta Synergy запрашивает у пользователя параметры отчёта (если таковые имеются) с помощью специального диалога:

Рисунок 230. Пример диалога «Параметры отчёта» - только обязательные параметры

Пример диалога «Параметры отчёта» - только обязательные параметры

Рисунок 231. Пример диалога «Параметры отчёта» - параметры без мультивыбора

Пример диалога «Параметры отчёта» - параметры без мультивыбора

Рисунок 232. Пример диалога «Параметры отчёта» - параметры с мультивыбором

Пример диалога «Параметры отчёта» - параметры с мультивыбором

Рисунок 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-id-1', user-id-2, ...

Выбор одного пользователя

user

java.lang.String

Стандартный компонент выбора пользователя без мультивыбора. Пример: компонент форм «Объекты Synergy» с типом данных «Пользователи» и выключенным «Позволять мультивыбор»

В отчёт будет передана строка с идентификатором пользователя

Выбор нескольких подразделений

departments

java.lang.String

Стандартный компонент выбора подразделения с мультивыбором. Пример: компонент форм «Объекты Synergy» с типом данных «Пользователи» и включенным «Позволять мультивыбор»

В отчёт будет передана строка вида 'department-id-1', 'department-id-2', ...

Выбор одного подразделения

department

java.lang.String

Стандартный компонент выбора подразделения без мультивыбора. Пример: компонент форм «Объекты Synergy» с типом данных «Подразделения» и выключенным «Позволять мультивыбор»

В отчёт будет передана строка с идентификаторо

Выбор нескольких проектов

actions

java.lang.String

Оставить реализацию как есть

В отчёт будет передана строка вида 'project- id-1','project-id-2',

Выбор одного проектa

actions

java.lang.String

Оставить реализацию как есть

В отчёт будет передана строка вида с идентификатором проекта

Выбор одного значения из списка

_dictionary

java.lang.String

Стандартный компонент выбора одного значения из списка (combobox)

Элементы списка берутся из справочника с кодом, равным названию (Name) параметра. Столбец этого справочника, данные из которого будут использоваться в качестве подписей элементов, должен иметь код title, а столбец значений - value

Выбор нескольких значений из списка

_dictionary

java.util.List

Стандартный компонент выбора нескольких значений из списка. Пример: «Отображаемые поля» в настройках фильтра потоков работ

Элементы списка — аналогично предыдущему. Пример выражения для значения по умолчанию: ava.util.Arrays.asList ( dic-value-1», «dic-value-2 )