Friday, February 16, 2007

Using the BIRT Source Build

In the previous post, I mentioned that I have been doing a fair amount of extension development in preperation for the conference. In the past, I have always pulled all of the BIRT source from CVS when I did extension or integration work. The ability to step through the source code in the calling methods proved to be really helpful. The only problem was the amount of work required to pull and compile a source build. Between DataTools and BIRT there are more than 100 Eclipse projects, not including any of the test projects. That is a lot of download/configuration.

For this latest round of development, I decided to use the source builds from BIRT and DataTools to see how well it worked. The answer is it worked really well. So I thought I would provide a quick HowTo in case you are interested in using BIRT in this way.

I wanted to work with the BIRT M5 Release, which has not been officially release but is scheduled to be the 20070209 build. To get to this build I went to the BIRT/downloads and selected the Recent Builds Page from the More Downloads section. Then I select the build that I want to download 2.2.0-N20070209. From this page I get the
- All-In-One and the BIRT SDK build. I first unzip the All-In-One and then I unzip the BIRT SDK build over the top of the All-In-One.

Typically this would be the place where I would go out and create a launch icon with the appropriate memory triggers. It turns out that the M5 build uses the eclipse.ini to setup various command line options. Using eclipse.ini will set the MaxPermSize vmarg which will make your Eclipse installation run significantly faster. You can continue to use your command line args, but it seems to be easier to just use the eclipse.ini. I have a lot of memory on my workstation so I use:

-vmargs
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m

Normally I test that the SDK is working by opening the Eclipse instance and type <CTRL><SHIFT><T> and enter ReportEngine. If when you select the ReportEngine it shows source code, then you have an SDK build of BIRT. So everything is good to go right? Well almost, you still need to get the SDK build from the DataTools project.

BIRT 2.2 is using the DTP 1.0 build. If you get the dtp-sdk_1.0 build and install it over your current Eclipse installation, then you are ready to go.

The only piece missing from the puzzle is the ReportEngine code. It turns out that the libraries and code that is distributed with the RunTime libraries does not include source. Unfortunately the packaging of the files in the RunTime libraries is different (similar) from the Eclipse distributions. I have submitted a Bugzilla entry to have a SDK version of the RunTime distribution created. Once I have that, it will be far easier to support multiple versions of BIRT without having to have check outs from each.

Scott

8 comments:

Anonymous said...

DEAR FRIEND
MY NAME IS LUIZ AND IM FROM BRAZIL
IM WORKING IN A PROJECT WITH ORACLE PL/SQL LANGUAGE AND BIRT AND I´VED SOME PROBLEMS WITH THE BIRT PARAMETERS(THEY DONT UPDATE A REPORT WHEN I CALL ANOTHER - THE LAST MODEL STAND ON)
ID LIKE TO KNOW HOW I CAN DO TO MAKE THE REPORT CHANGE THE DATA TO YOUR CORRECT INFORMATION
I CREATE A REPORT WITH 3 PARAMETERS AND ID LIKE TO KNOW HOW I CAN MANIPULATE THE DATA NAVIGATION TO THE PARAMETERS IN THE REPORT
MY SQL CODE OF THIS REPORT IS BELOW
select idmoeda,
DATAVIGENCIAINICIO,
DATAVIGENCIATERMINO,
VALORATUAL,(select VALORATUAL
FROM tb_cotacaomensal t
WHERE T.IDMOEDA=?
AND T.DATAVIGENCIAINICIO=to_date(?,'DD/MM/YYYY')
AND T.TA_DATAEXCLUSAO IS NULL) valor_base,
(VALORATUAL/(select VALORATUAL
FROM tb_cotacaomensal t
WHERE T.IDMOEDA=t.idmoeda
AND T.DATAVIGENCIAINICIO=to_date(t.datavigenciainicio,'DD/MM/YYYY')
AND T.TA_DATAEXCLUSAO IS NULL)*100) AS BASE100,
(VALORATUAL/(select VALORATUAL FROM tb_cotacaomensal t
WHERE T.IDMOEDA=t.idmoeda
AND T.DATAVIGENCIAINICIO=to_date(t.datavigenciainicio,'DD/MM/YYYY')
AND T.TA_DATAEXCLUSAO IS NULL)-1)*100 AS VARIACAOACUMULADA
FROM tb_COTACAOMENSAL T
WHERE T.IDMOEDA=t.idmoeda
AND T.DATAVIGENCIAINICIO>=to_date(t.datavigenciainicio,'DD/MM/YYYY')
AND T.DATAVIGENCIATERMINO<=to_date(t.datavigenciatermino,'DD/MM/YYYY')
AND T.TA_DATAEXCLUSAO IS NULL
HOPE FOR A ANSWER AS SOON AS YOU CAN
TKS
LUIZ
KTLUBR@CLICK21.COM.BR

Jason Weathersby said...

Are your dataset parameters linked to your report parameters?

In the dataset editor verify that you are not caching the results and as a test when previewing try using a different rptdocument name &__document=c:/temp/test.rptdocument.

Look at this example as well
http://www.eclipse.org/birt/phoenix/examples/reports/parameters/

Anonymous said...

JOHN MY BIGGER DIFFICULTIES ARE FOLLOWING AS: IN INSTRUCTION SELECT BELOW I AM PASSING 9 PARAMETERS FOR THE REPORT AS I MAKE CALLED TO THESE PARAMETERS TO MY CODE PL/SQL AND IN THE DATASET AND THE REPORT TO BRING THE CORRECT INFORMATION
PLEASE, HELP ME AS SOON AS YOU CAN OK
TKS
LUIZ - BRAZIL
select idmoeda,
DATAVIGENCIAINICIO,
DATAVIGENCIATERMINO,
VALORATUAL,
(select VALORATUAL
FROM tb_COTACAODIARIA T
WHERE t.IDMOEDA=20
AND t.DATAVIGENCIAINICIO=to_date('01/01/2007','DD/MM/YYYY')
AND t.TA_DATAEXCLUSAO IS NULL) valor_base,
(VALORATUAL/(select VALORATUAL FROM tb_COTACAODIARIA t
WHERE t.IDMOEDA=20
AND t.DATAVIGENCIAINICIO=to_date('01/01/2007','DD/MM/YYYY')
AND t.TA_DATAEXCLUSAO IS NULL)*100) AS BASE100,
(VALORATUAL/(select VALORATUAL
FROM tb_COTACAODIARIA t
WHERE t.IDMOEDA=20
AND t.DATAVIGENCIAINICIO=to_date('01/01/2007','DD/MM/YYYY')A
AND t.TA_DATAEXCLUSAO IS NULL)-1)*100 AS VARIACAOACUMULADA
FROM tb_COTACAODIARIA T
WHERE T.IDMOEDA=20
AND T.DATAVIGENCIAINICIO>=to_date('01/01/2007','DD/MM/YYYY')
AND T.DATAVIGENCIATERMINO<=to_date('02/01/2007','DD/MM/YYYY')
AND T.TA_DATAEXCLUSAO IS NULL

Anonymous said...

sorry jason, i called you john!

Anonymous said...

please jason , send me a email address because i´d like to send to you a copy of my package pl/sql and my report to you help me , cause i´m working too hard to understand how i can do this?
i´ll hope for a answer
tk so much
luiz-brazil
ktlubr@click21.com.br

Jason Weathersby said...

You can send me an email at jasonweathersby at alltel.net.
What problem are you having? Does the report run? If it is running but the data is not updating did you try usning a different rptdoucment?

Jason

Anonymous said...

Hello Scott,

Can you please let me know ,how to build the webviewer from the Birt Source code zip file , andhow toorganize the project in eclipse to be able to run the ant files in the birt viewer module in the source code zip file.

Thanks.

Scott Rosenbaum said...

Anonymous,

I checked with the BIRT Project Team, they recommend using the org.eclipse.birt.releng project to checkout all of the source code. I have not actually taken the time to figure this out for myself, but this is where I would start to achieve what you describe.

Scott