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 02/08/2006, 16h04   #1
Futur Membre du Club
 
Avatar de maxscljava
 
Inscription : mai 2006
Messages : 48
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 48
Points : 16
Points : 16
Par défaut Association données et rapport

Bonjour à tous,

J'ai déja posé cette question mais je n'ai pas encore eu de réponse, donc je retente ma chance.

J'ai un projet Java dans lequel sont inclus les différents jar et plugin de Birt me permettant entre autre de créer des rapports.
Dans mon projet Java j'ai une classe qui s'occupe de récupérer des données dans une DB.

Lorque j'exécute un test (JUnit) qui instancie ma classe à laquelle je donne les informations nécessaire pour récupérer mes données dans la db, tout se passe bien mais ensuite je dois mettre à disposition de mon rapport le résultat de ma recherche, or il faut (paraît-il) que je copie cet objet dans un répertoir précis (C:\eclipse\plugins\org.eclipse.birt.report.viewer_2.0.1\birt\WEB-INF\classes)
pour que mon rapport travaillant via une ScriptedDataSource et un ScriptedDataSet puisse avoir accès au données via une méthode getData() de mon objet.

Mais lorsque je fais un new de mon objet je ne sais pas où il se trouve sur mon disque, de plus je ne sais pas une fois qu'il a récupérer les données le déplacer pour le mettre dans le bon répertoire et le tout pendant que mon test ou mon application tourne.

Bref je suis perdu, je reste persuader qu'il est possible que mon rapport accède à ma méthode (et donc aux données) pendant que mon application tourne et tout cela sans trop de manipulations.

Voilà, si vous avez une idée ou une aide ou encore mieux un exemple je serai heureux d'en savoir plus.

Merci pour tout
maxscljava
maxscljava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2006, 21h25   #2
Membre Expert
 
Avatar de moritan
 
Homme
Développeur Java
Inscription : juin 2005
Messages : 657
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : juin 2005
Messages : 657
Points : 1 050
Points : 1 050
Je pense qu'il y a eu un problème de compréhension dans les réponse que tu as eu.

Quand on te dis de mettre ton objet dans C:\eclipse\plugins\org.eclipse.birt.report.viewer_2.0.1\birt\WEB-INF\classes c'est juste le fichier .class Pour éviter les erreurs du type classcast exception...

Par contre le new tonObject(), il faut que tu le fasses directement dans ton rapport.
moritan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2006, 05h10   #3
Membre régulier
 
Inscription : septembre 2005
Messages : 100
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2005
Messages : 100
Points : 90
Points : 90
Envoyer un message via MSN à ReunionIsland
Par défaut ^_^ le monde est petit

plop,
salut maxscljava !!

hier je t'ai répondu sur le newsgroup de BIRT a peu prés la meme chose que moritan.

http://www.eclipse.org/newsportal/ar...pse.birt#12167

^_^
ReunionIsland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2006, 08h25   #4
Futur Membre du Club
 
Avatar de maxscljava
 
Inscription : mai 2006
Messages : 48
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 48
Points : 16
Points : 16
Par défaut Quelque chose m'échappe...

Merci à tous les deux pour vos réponses, mais quelque chose m'échappe.

Je suis dans mon appli Java j'instancie ma class via un new, c'est bien la classe de mon package et non celle du mis dans le répertoire birt_viewer qui est instanciée.
De plus, pour mon objet je dois lui transmettre des paramètre encodés par l'utilisateur et ce à partir d'Eclipse, donc il m'est difficile de faire un new dans le script du rapport car comment va-t-il allez récupérer les données encodées par l'utilisateur.
Enfin, je procède comme cela sur une action j'ouvre un wizard qui demande les infos de recherche à l'utilisateur, ensuite j'instancie mon objet dans lequel je stocke les données encodées par l'utilisateur,et je devrai mettre à disposition cet objet (a mettre dans le fameux répertoire) pour que lorsque dans mon code java je demande au rapport de se créer il puisse effectuer l'appel à la DB et s'afficher dans un browser sous Eclipse.

Ceci n'est peut-être pas la bonne façon, je ne sais pas ....si toutefois vous aviez une autre solution je serai heureux d'en prendre connaissance.

Quoiqu'il en soit merci beaucoup pour votre aide.
maxscljava
maxscljava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2006, 08h57   #5
Membre régulier
 
Inscription : septembre 2005
Messages : 100
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2005
Messages : 100
Points : 90
Points : 90
Envoyer un message via MSN à ReunionIsland
plop,

En ce qui me concerne moi je procéde de la façon suivante :
1/ je créer mon scripted Data set
2/ je définit dans le "open" de ce Data set les lignes suivante:
Code :
1
2
3
4
5
6
7
8
// j'instancie ma classe 
monObjet = new Packages.NomDeMaClassDansLeRepertoireBIRT();
//j'apelle la métode de mon objet qui va chercher les informations en base 
//et je lui passe en paramétre les informations necessaire pour executer ma requete
UnVecteur  = monObjet.readData(params["rptVal"]);
totalrows  = UnVecteur.size();
currentrow = 0;
Les paramétres que ton utilisateur peut définir tu les passes à ton rapport et c'est nickel chrome.
voila.
ReunionIsland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2006, 09h06   #6
Futur Membre du Club
 
Avatar de maxscljava
 
Inscription : mai 2006
Messages : 48
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 48
Points : 16
Points : 16
Merci pour l'info, je vais essayé cette méthode.
Juste un blème je ne sais plus trop comment on passe les paramètres au rapport, aurais-tu une piste ou un exemple ?

Merci bcp
maxscljava
maxscljava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2006, 09h11   #7
Membre régulier
 
Inscription : septembre 2005
Messages : 100
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2005
Messages : 100
Points : 90
Points : 90
Envoyer un message via MSN à ReunionIsland
Tu utilises le Birt Viewer ou le report Engine??

Pour informations voici un petit tutorial sur la configuration des paramétres
http://www.eclipse.org/birt/phoenix/...ts/parameters/

Si tu utilises le Birt Viewer et que tu ne veux pas que tes utilisateurs définissent les paramétres Il faut passer les paramétres dans l'url directement.
ReunionIsland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2006, 09h20   #8
Futur Membre du Club
 
Avatar de maxscljava
 
Inscription : mai 2006
Messages : 48
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 48
Points : 16
Points : 16
Voici avec quoi je travaille :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
EngineConfig config = new EngineConfig();
        config.setEngineHome("C:/Other/Download/birt-runtime-2_1_0/ReportEngine");    //endroit où se trouvent les librairies du Runtime
        ReportEngine engine = new ReportEngine(config);     //engine permet de connaitre et de modifie le fichier .rptdesign
        IReportRunnable design = null;
        try {
            design = engine.openReportDesign("C:/workspace_med/med_client/Diags.rptdesign");
        } catch (EngineException e) {
            e.printStackTrace();
        }
        IRunAndRenderTask task = engine.createRunAndRenderTask(design);     //Crée une tâche afin d'éxécuter le rapport
 
        HTMLRenderOption options = new HTMLRenderOption();
        options.setOutputFileName("C:/Diagnoses.html");
        options.setOutputFormat("HTML");
        task.setRenderOption(options);
        // run the report and destroy the engine
        try {
            task.run();
        } catch (EngineException e) {
            e.printStackTrace();
        }
J'ai malgré tout un gros soucis, les paramètres sont dynamiques, c'est-à-dire que par exemple j'en ai 3 mais qu'il ne sont pas tous présent donc je ne peux pas les mettre en dur dans la query, d'ou l'object externe qui se charche de ramener les data en fonctions des paramètre présents.

Si je te suis bien :
1. Je devrai à partit de mon wizard (qui demande les infos à l'utilisateur) envoyé ces infos au rapports
2. Dans mon rapport instancier ma classe
3. Lui donner les paramètres reçus
4. Lui demander d'aller rechercher les données dans la DB
5. Ensuite demander le résultat
6. afficher mon rapport avec les données.

Est-ce comme cela que tu le vois ?

Merci d'avance
maxscljava
maxscljava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2006, 09h25   #9
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 maxscljava
Merci pour l'info, je vais essayé cette méthode.
Juste un blème je ne sais plus trop comment on passe les paramètres au rapport, aurais-tu une piste ou un exemple ?

Merci bcp
maxscljava
Code :
task.setParameterValue(taCle,tonParametre);
taCle de type String et tonParametre de type Object et task de type IRunAndRenderTask
__________________
__~{@ 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 03/08/2006, 09h40   #10
Membre régulier
 
Inscription : septembre 2005
Messages : 100
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : septembre 2005
Messages : 100
Points : 90
Points : 90
Envoyer un message via MSN à ReunionIsland
plop,
En ce qui concerne les paramétres tu peux les définir au niveau de Birt comme non obligatoire ( allow null value).

Citation:
J'ai malgré tout un gros soucis, les paramètres sont dynamiques, c'est-à-dire que par exemple j'en ai 3 mais qu'il ne sont pas tous présent donc je ne peux pas les mettre en dur dans la query, d'ou l'object externe qui se charche de ramener les data en fonctions des paramètre présents.
Petits conseil:
Ensuite si tu passe plusieurs paramétres fait attention quand tu les passes à la méthode de ta classe.
Au lieu de faire un constructeur ou une méthode avec plusieurs paramétres je te conseille d'utiliser une collection qui stocke tous tes paramètres que tu passe.
La ou il faut faire attention c'est que du coté java il faut récuperer sous la forme du type Object puis caster en tableau de String.
ReunionIsland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2006, 09h45   #11
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 maxscljava
J'ai malgré tout un gros soucis, les paramètres sont dynamiques, c'est-à-dire que par exemple j'en ai 3 mais qu'il ne sont pas tous présent donc je ne peux pas les mettre en dur dans la query, d'ou l'object externe qui se charche de ramener les data en fonctions des paramètre présents.
Si ce sont des paramètres que tu ne vas pas afficher directement mais simplement récupérer pour un DataSet, tu n'es dans ce cas, pas obligé de les déclaré dans ton rptdesign. Si tu as trois objets : Universite, Promotion, Etudiant et que tu veux passer en paramètre leur valeurs, dans ton BIRT, tu n'es pas obligé de déclarer les paramètres mais tu peux quand même les passer via Java et t'en servir dans ton rapport (tant qu'ils ne sont pas affichés).
__________________
__~{@ 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 03/08/2006, 11h26   #12
Futur Membre du Club
 
Avatar de maxscljava
 
Inscription : mai 2006
Messages : 48
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 48
Points : 16
Points : 16
Ok, merci à tous pour ces infos, je m'en vais essayer et je vous informe si cela fonctionne.

Encore un grand merci pour votre aide, elle est très précieuse.

maxscljava
maxscljava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 09h41   #13
Futur Membre du Club
 
Avatar de maxscljava
 
Inscription : mai 2006
Messages : 48
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 48
Points : 16
Points : 16
Bonjour à tous,

Voila j'ai commencer mes tests mais un blème vient une fois de + me bloquer , j'ai un message d'erreur (voir ci-dessous) malgré le fais que le Runtime est bien présent et dans le bon répertoire : (l'erreur se produit sur la ligne avec des ***)

Code :
1
2
EngineConfig config = new EngineConfig();
config.setEngineHome("C:/Other/Download/birt-runtime-2_1_0/ReportEngine");   ReportEngine engine = new ReportEngine(config); // ***

Code :
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
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.birt.core.framework.osgi.OSGILauncher.startup(OSGILauncher.java:131)
    at org.eclipse.birt.core.framework.Platform.startup(Platform.java:78)
    at org.eclipse.birt.core.framework.Platform.initialize(Platform.java:115)
    at org.eclipse.birt.report.engine.api.ReportEngine.<init>(ReportEngine.java:48)
    at be.gfdi.reporting.ReportsWizard.generateReport(ReportsWizard.java:148)
    at be.gfdi.reporting.ReportsWizard.performFinish(ReportsWizard.java:133)
    at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:666)
    at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:349)
    at org.eclipse.jface.dialogs.Dialog$3.widgetSelected(Dialog.java:645)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3287)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2907)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:811)
    at org.eclipse.jface.window.Window.open(Window.java:789)
    at be.gfdi.reporting.action.ReportsAction.run(ReportsAction.java:58)
    at be.gfdi.ent.thirdexplorer.MVCThirdExplorer$2.widgetDefaultSelected(MVCThirdExplorer.java:234)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:97)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3287)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2907)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1899)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1863)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:417)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
    at be.gfdi.fwk.client.core.application.ClientFrameworkApplication.run(ClientFrameworkApplication.java:72)
    at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:99)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:374)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:169)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.core.launcher.Main.invokeFramework(Main.java:338)
    at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
    at org.eclipse.core.launcher.Main.run(Main.java:977)
    at org.eclipse.core.launcher.Main.main(Main.java:952)
Caused by: java.lang.IllegalStateException: Platform already running
    at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:262)
    ... 45 more
Can't load the report engine
maxscljava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 09h58   #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
Ca ressemble a une tentative de preview... Avec les Scripted DataSet, oublie le preview...

__________________
__~{@ 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 04/08/2006, 10h01   #15
Membre Expert
 
Avatar de moritan
 
Homme
Développeur Java
Inscription : juin 2005
Messages : 657
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : juin 2005
Messages : 657
Points : 1 050
Points : 1 050
Tu ne lancerais pas ton appli directement dans Eclipse par hasard??

Parceque le message
Code :
1
2
Caused by: java.lang.IllegalStateException: Platform already running
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:262)
ça me fait dire qu'il y a un conflit d'utilisation sur ton moteur Birt comme si tu voulais le démarrer 2 fois. Attention au code static.
moritan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 10h09   #16
Futur Membre du Club
 
Avatar de maxscljava
 
Inscription : mai 2006
Messages : 48
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 48
Points : 16
Points : 16
Merci pour ces infos mais il faut savoir que seul le code présent dans mon précédent message est présent dans mon application, et effectivement je suis dans un application Eclipse faisant partie d'un projet dans lequel se trouve un autre composant contenant un li/shared qui lui même contient org.eclipse.birt.report.engine_2.1.0.N20060628-1351.jar.

Je me demande si la ligne config.setEngineHome("C:/Other/Download/birt-runtime-2_1_0/ReportEngine");
ne fait pas double emploi avec je Jar référencé dans l'autre projet qui lui-même est connu par mon projet ?

Je suis un pti peu perdu dans tout celà

maxscljava
maxscljava 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 12h50.


 
 
 
 
Partenaires

Hébergement Web