Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [birt-report-engine-dev] Caching ExecutionContext?s reportIR object

Hi Attila,

Thank you for your interest in BIRT.

The standard process is to submit a Bugzilla entry, include your comments, and attach the proposed code contribution.

Someone from the BIRT team will review and get back with you.

Thank you.

 

Roshanak Afsarifard

Director, Engineering

Actuate Corporation

951 Mariners Island Blvd

San Mateo, CA  94404

Tel: (650) 645-3913                 Fax: (650) 645-3700

Email: rafsarifard@xxxxxxxxxxx   www.actuate.com

 

facebook-25.jpg   twitter-25.jpg   linkedin-25.jpg   youtube-25.jpg   google-25.jpg

Actuate-logo-email-sig.jpg

-----Original Message-----
From: birt-report-engine-dev-bounces@xxxxxxxxxxx [mailto:birt-report-engine-dev-bounces@xxxxxxxxxxx] On Behalf Of Attila Molnár
Sent: Tuesday, June 10, 2014 4:32 AM
To: birt-report-engine-dev@xxxxxxxxxxx
Subject: [birt-report-engine-dev] Caching ExecutionContext?s reportIR object

 

Hi!

 

I’m sorry to bother you with my letter, but I do not know what channel I should write.

We would lik to change the BIRT code and we do not know whether this should be published, and if yes, then how.

But first we want to ask for help, that we are on the right way

 

Briefly describe the problem

 

We use BIRT 4.2.0 with Weblogic 12c

We have a singleton ReportEngine, caching the ReportRunnable objects and create and run RunAndRenderTasks

 

code:

EngineConfig config = new EngineConfig(); reportEngine = new ReportEngine(config); … IReportRunnable design = reportEngine.openReportDesign(designInputStream);

try {

IRunAndRenderTask task = reportEngine.createRunAndRenderTask(design);

PDFRenderOption options = new PDFRenderOption(); options.setOutputStream(outputStream);

options.setOutputFormat(PDFRenderOption.OUTPUT_FORMAT_PDF);

task.setRenderOption(options);

Map appContext = task.getAppContext();

appContext.put("org.eclipse.datatools.enablement.oda.xml.inputStream",

dataXmlInput);

appContext.put("org.eclipse.datatools.enablement.oda.xml.closeInputStream",

"true");

task.run();

task.close();

return outputStream.toByteArray();

} catch (EngineException e) {

throw new EJBException(e);

} finally {

try {

outputStream.close();

} catch (IOException e) {

}

}

 

I looked at the BIRT source and realized that each task running, the ExecutionContext build a Report (reportIR) object. It seems to me, this object is a model object and does not change after was built.

(Except Report’s query map and the corresponding maps. But when these maps is modified, report object is synchronized) So, I think the report object could be cached, for performance improvement.

(I cached report object, tests the operation, and it seems to work.

But i’m not sure it is a good solution.)

 

Is it a useful solution caching the report object?

If not, why?

If yes,:

Is there already a working solution?

Is there some limitation, if we work that? (eg.: the same ReportRunnable object don’t create and run task in multiple thread) If no such solution, and we work out this, how we publish the source?

(We have to publish or not?)

 

Thanks in advance!

Attila Molnar

_______________________________________________

birt-report-engine-dev mailing list

birt-report-engine-dev@xxxxxxxxxxx

https://dev.eclipse.org/mailman/listinfo/birt-report-engine-dev


Back to the top