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
-----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