Configuration :
Appache 2.2
PHP 5.2
JVM 1.6
tomcat 5.5
eclipse-reporting-galileo-SR1
birt-runtime-2_5_1(viewer)
php-java-bridge_5.5.3
Bonjour à tous,
J'ai commencé par créer un rapport avec le designer d'eclipse. Dans ce rapport, j'ai définit une data source s'appuyant sur un fichier xml et un xsd en dur. Cela fonctionne bien, et j'arrive à appeler ce rapport grace à l'url du viewer avec un code php du style :
1 2 3 4
| <?php
$dest = "http://localhost:8080/birt-viewer/frameset?__report=/report/essai.rptdesign";
header("Location: $dest" );
?> |
Maintenant, j'aimerai que l'url du fichier xml du data source soit variable.Pour cela, je me suis intéressé aux fonctions java (php-java-bridge) . J'ai essayé le code suivant pour appeler le même rapport sans m'occuper de la data source pour le moment :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <?php
define ("JAVA_HOSTS", "localhost:8080");
define ("JAVA_SERVLET", "/JavaBridge/JavaBridge.phpjavabridge");
require_once("java/Java.inc");
session_start();
$ctx = java_context()->getServletContext();
$birtReportEngine = java("org.eclipse.birt.php.birtengine.BirtEngine")->getBirtEngine($ctx);
java_context()->onShutdown(java("org.eclipse.birt.php.birtengine.BirtEngine")->getShutdownHook());
try{
$report = $birtReportEngine->openReportDesign("c:/essai.rptdesign");
$task = $birtReportEngine->createRunAndRenderTask($report);
$taskOptions = new java("org.eclipse.birt.report.engine.api.HTMLRenderOption");
$outputStream = new java("java.io.ByteArrayOutputStream");
$taskOptions->setOutputStream($outputStream);
$taskOptions->setOutputFormat("html");
$task->setRenderOption( $taskOptions );
$task->run();
$task->close();
} catch (JavaException $e) {
echo $e; //"Error Calling BIRT";
}
echo $outputStream;
?> |
-> j'obtient le message d'erreur suivant
[[o:Exception]:"java.lang.Exception: Invoke failed: [[o:ReportEngine]]->openReportDesign((o:String)[o:String]). Cause: org.eclipse.birt.report.engine.api.EngineException: The design file file:/c:/dummy.rptdesign has error and can not be run.
J'ai donc abandonné cette solution pour l'instant et je suis repartit sur l'appel d'une url http.
Je voudrai donc savoir comment utiliser un paramètre(nom du fichier XML) passer dans l'url pour définir une source de donnée . Est ce que je peut coder cela grace au script BIRT, si oui, dans quel évènements et de quelle manière.
D'avance, merci.
Partager