Создание отчета BIRT произвольной формы с использованием скриптового источника данных

Я пытаюсь создать отчет BIRT в свободной форме. Отчет не состоит из строк, которые имеют одинаковые имена столбцов в каждой строке.

Вместо этого это отчет в свободной форме, который будет иметь следующую форму.

"Name: {FirstName} {LastName}         Addess : {Address}
 Phone#  {Phone#}
....
....
"

Я использую скриптовый источник данных, который по сути возвращает карту, содержащую пары значений имени {Имя, Фамилия, Адрес, Телефон и другие поля} ..

Но я не уверен, как установить переменные и как получить FirstName, LastName и т. Д. Стоит ли мне пытаться использовать динамический текст.

Я не знаю, каким образом BIRT может обрабатывать данные, не связанные со строками.

Вот мой открытый сценарий набора данных.

open:

    util = new Packages.test.ReportsUtil();
    reportsVO = util.getReportVO("ABC");


in fetch:
    if(currentrow < totalrows) {
        dataSetRow["FirstName"] = reportsVO.getPropValue("identity.FirstName");
        dataSetRow["LastName"] = reportsVO.getPropValue("identity.LastName");    
        currentrow++;
    } else {
        return (false);
    }

Но я не уверен, как мне получить доступ к FirstName и LastName на главной странице макета.

Спасибо


person Tuco    schedule 02.08.2011    source источник


Ответы (2)


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

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

Вы даже можете вызвать свой объект Java непосредственно из обработчика событий JavaScript (гораздо проще подключить через IDE), используя конструкцию JS «Packages».

Есть много примеров, которые помогут вам сделать это на BIRT Exchange.

person MystikSpiral    schedule 04.08.2011

Я сделал нечто подобное (BIRT 3.7), но я использовал row ["colName"] вместо dataSetRow ["colName"], и, похоже, это сработало. У меня есть данные в списке, а затем каждый элемент списка представляет собой сетку. Я установил привязку данных в списке к набору данных. Сетка может видеть значение как row ["colName"].

person dreadjavapirate    schedule 12.12.2011