Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2007, 10h16   #1
Nouveau Membre du Club
 
Inscription : décembre 2003
Messages : 75
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 75
Points : 27
Points : 27
Par défaut Créer une classe java pour automatiser la génération.

Bonjour,

J'ai créé la classe suivante à partir du code que tu as fourni BiM.
Cependant j'ai l'erreur suivante:
Citation:
The type org.eclipse.birt.core.exception.BirtException cannot be resolved. It is indirectly referenced from required .class files BirtReportGenerator/Execution Execution.java line 0 1169543455724 4391
J'ai téléchargé et décompressé BIRT runtime et inclu les librairies suivantes:
-chartengineapi.jar
-engienapi.jar


Code java :
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
35
36
37
38
39
40
41
42
package Execution;
 
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.ReportEngine;
import org.eclipse.birt.report.engine.api.RenderOptionBase;
import org.eclipse.birt.report.engine.api.EngineException;
 
public class Execution {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/* Partie initialisation */
		EngineConfig engineConfig = new EngineConfig();
		engineConfig.setEngineHome("Chemin A");
		ReportEngine engine = new ReportEngine(engineConfig);
		IReportRunnable design = null;
		RenderOptionBase option = new RenderOptionBase();
		option.setOutputFormat(RenderOptionBase.OUTPUT_FORMAT_PDF);	//Format du fichier de sortie
		/* Fin initialisation */
 
		/* Préparation de l'édition */
		try {
			design = engine.openReportDesign("Chemin B");
		} catch (EngineException e) {
			e.printStackTrace();
		}
		IRunAndRenderTask task = engine.createRunAndRenderTask(design);
		/* Fin de la préparation */
 
		/* Création PDF */
		option.setOutputFileName("Chemin C");	//Nom du fichier de sortie
		task.setRenderOption(option);		//Chargement du fichier
		/* Fin création PDF */
		task.run();					//Déclenchement de l'édition
		//Chemin A ="C:/birt-runtime-2_0_1/Report Engine";
	}
 
}

Une idée sur l'origine du problème?
lunart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 11h22   #2
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Tu cherches où se trouve cette classe, il s'avère que c'est dans coreapi.jar.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 15h11   #3
Nouveau Membre du Club
 
Inscription : décembre 2003
Messages : 75
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 75
Points : 27
Points : 27
Merci pour l'info

Sinon il me semble que sur la fin du code il faille rajouter un try catch comme suit:
Code :
1
2
3
4
5
6
7
/* Fin création PDF */
		try {
			task.run();
		} catch (EngineException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
lunart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 15h16   #4
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Exact, enfin, si tu ajoutes des paramètres à ton édition, je crois qu'il faut même faire un catch un peu plus grand. Dans ma fonction run() de EditionPDF (la classe singleton d'instanciation du ReportEngine), j'ai mis un try catch sur l'ensemble des instructions.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 09h40   #5
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 11
Points : 11
Points : 11
Peut on déployer ce genre de classe sur un serveur ? (Tomcat,Jboss ou autre ...)
6sous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 10h07   #6
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Bien sûr ! Mais au lieu de faire un main, tu crées un singleton :
Code java :
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package edition;
 
import java.io.File;
import java.util.ArrayList;
import java.util.Locale;
 
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.RenderOptionBase;
import org.eclipse.birt.report.engine.api.ReportEngine;
 
public class EditionPDF {
 
	private static EditionPDF m_Instance = null;
	private IReportEngine engine;
	private String realPath;
	private RenderOptionBase option;
	private String etat;
	private String chemin;
	private ArrayList parametres;
	private Locale locale;
 
	private EditionPDF() throws BirtException
	{
		EngineConfig config = new EngineConfig();
		realPath = "C:\\Tomcat\\";
		config.setResourcePath(new File(realPath, "WEB-INF/classes/ressources").getAbsolutePath());
		config.setEngineHome(new File(realPath, "WEB-INF/ReportEngine").getAbsolutePath());	//endroit où se trouvent les librairies du Runtime
//		config.setLogConfig(new File("C:\\Temp", Level.OFF);
		Platform.startup(config);
		IReportEngineFactory factory = (IReportEngineFactory) Platform
			.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
		engine = factory.createReportEngine( config );
		engine = new ReportEngine(config);		//engine permet de connaitre et de modifie le fichier .rptdesign
		option = new RenderOptionBase();
		option.setOutputFormat(RenderOptionBase.OUTPUT_FORMAT_PDF);	//Format du fichier de sortie
	}
 
	public static EditionPDF getInstance() throws BirtException
	{
		if (m_Instance == null)
			m_Instance = new EditionPDF();
		return m_Instance;
	}
 
	public void init(String etat, String chemin, ArrayList parametres)
	{
		this.etat = etat;
		this.chemin = chemin;
		this.parametres = parametres;
	}
 
	public void run()
	{
		try
		{
			IReportRunnable design = engine.openReportDesign(new File(realPath, "WEB-INF/etats/" + etat + ".rptdesign").getAbsolutePath());
			IRunAndRenderTask task = engine.createRunAndRenderTask(design);		//Crée une tâche afin d'éxécuter le rapport
			/* Passage des paramètres s'il y en a : task.setParameterValue(...); */
			/* Création PDF */
			option.setOutputFileName(chemin);	//Nom du fichier de sortie
			task.setLocale(Locale.FRENCH);
			task.setRenderOption(option);		//Chargement du fichier
			/* Fin création PDF */
			task.run();							//Création du fichier
		}
		catch (EngineException e)
		{
			trace.logError(e);
		}
	}
 
	public void destructeur()
	{
		engine.destroy();
	}
 
}
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 11h42   #7
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 11
Points : 11
Points : 11
Salut,

Exscuse moi de demander quelques petites précisions
Mais à vrai dire j'ai pas trop l'habitude des serveurs j2ee

Donc ton singleton, tu va l'utiliser dans une servlet ?
Il faut installer le report engine sur le serveur ?

Avec cette méthode on utilisira plus le viewer de Birt ?
6sous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 11h44   #8
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Citation:
Envoyé par 6sous
Salut,
Bonjour,

Citation:
Envoyé par 6sous
Exscuse moi de demander quelques petites précisions
Mais à vrai dire j'ai pas trop l'habitude des serveurs j2ee
Ok, mais tu n'as pas besoin de t'excuser, je suis là pour aider.

Citation:
Envoyé par 6sous
Donc ton singleton, tu va l'utiliser dans une servlet ?
Dans mon cas, oui !

Citation:
Envoyé par 6sous
Il faut installer le report engine sur le serveur ?
Dans le cas où le singleton est éxécuté côté serveur, tout doit se trouver sur le serveur.

Citation:
Envoyé par 6sous
Avec cette méthode on utilisira plus le viewer de Birt ?
Et non !
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 13h46   #9
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 11
Points : 11
Points : 11
ok merci c'est cool

Et pour que ton client recupere le fichier pdf créer tu fait comment ?
6sous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 13h50   #10
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Citation:
Envoyé par 6sous
ok merci c'est cool

Et pour que ton client recupere le fichier pdf créer tu fait comment ?
De rien

Je renvoie le fichier au client (comme je renverrai une JSP) et je l'affiche. Il s'ouvre dans son lecteur PDF par défaut. Il peut l'imprimer et/ou l'enregistrer à partir de Acrobat Reader (ou autre lecteur de PDF).
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 14h12   #11
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 11
Points : 11
Points : 11
Et est ce qu'elle est open source cette super servlet ?

Moi j'arrive à ouvrir le pdf mais avec un exec et le chemin d'adobe reader en dur donc c'est tout pourri.
Faut que je me mette serieusement au servlet.
6sous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 14h15   #12
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Je te l'ai donnée la servlet lol, je vois pas quoi te donner de plus. Tu devrais peut-être te pencher sur des tutoriels J2EE.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 17h05   #13
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 11
Points : 11
Points : 11
Oui merci t'a raison

J'ai reflechi un peu et j'ai cherché le pti bout de code pour envoyer un fichier pdf
et ca marche.

merci pour tout
6sous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 17h06   #14
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Citation:
Envoyé par 6sous
Oui merci t'a raison

J'ai reflechi un peu et j'ai cherché le pti bout de code pour envoyer un fichier pdf
et ca marche.

merci pour tout
De rien
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 09h53   #15
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 11
Points : 11
Points : 11
Bonjour,

Dans le singleton, au lieu de créer un fichier PDF
on peut récupérer un flux.

en faisant

Code :
option.setOutputStream(flux); //flux est de Type OutputStream
au lieu de

Code :
option.setOutputFileName(chemin);
et aprés dans flux on a un flux d'octet correspondant à notre fichier PDF ou HTML qu'on peut directement rebalancer au client.

Ca évite de créer des fichiers sur le serveur. C'est super.

du coté de l'appel en changeant le deuxième parametre par un OutputStream on a ca :

Code :
1
2
3
4
5
 
ByteArrayOutputStream flux = new ByteArrayOutputStream();
edition = EditionPDF.getInstance();
edition.init("nomdufichierrptdesign", flux, (ArrayList)parametres);
edition.run();
Et on récupére dans flux un flux d'octet de notre rapport générer en pdf ou html.
6sous est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h37.


 
 
 
 
Partenaires

Hébergement Web