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 14/12/2007, 11h20   #1
Invité de passage
 
Inscription : août 2003
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 6
Points : 4
Points : 4
Par défaut [2.2.1.1][JavaScript] Appel à une classe java

Bonjour à tous,

Je souhaite faire appel à une classe java une fois que mon état birt est construit afin de mettre à jour une base de données.

1) Ma config
  • version de birt : 2.2.1.1
  • mode d’exécution : utilisation du BIRT Runtime sur Linux
  • exécution : en batch

2) Ma classe

J’ai créé ma classe mc.batch.Virements dans laquelle un methode getInstance() me retourne une instance de celle-ci. Comme précisé dans le FAQ Birt, j’ai placé le jar contenant ma classe dans ReportEngine/lib du runtime.

3) Mon état

J’ai placé le code suivant dans la partie initialize ( j’ai fait de même dans beforeOpen => même résultat) :
Code :
1
2
var obj;
obj = new Packages.mc.batch.Virements.getInstance();
4) Exécution

Lors de l’exécution de l'état j’ajoute au classpath l’emplacement de mon jar.

5) Resultat

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
14 déc. 2007 10:12:21 org.eclipse.birt.report.engine.executor.ExecutionContext evaluate
GRAVE: TypeError: [JavaPackage mc.batch.Virements.getInstance] n'est pas une fonction (<inline>#3)
org.mozilla.javascript.EcmaError: TypeError: [JavaPackage mc.batch.Virements.getInstance] n'est pas une fonction (<inline>#3)
        at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3240)
        at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3230)
        at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3246)
        at org.mozilla.javascript.ScriptRuntime.typeError1(ScriptRuntime.java:3258)
        at org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3317)
        at org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3308)
        at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:2057)
        at org.mozilla.javascript.gen.c6._c0(<inline>:3)
        at org.mozilla.javascript.gen.c6.call(<inline>)
        at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:304)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2769)
        at org.mozilla.javascript.gen.c6.call(<inline>)
        at org.mozilla.javascript.gen.c6.exec(<inline>)
        at org.eclipse.birt.core.script.ScriptContext.eval(ScriptContext.java:223)
        at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:576)
        at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:555)
        at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.handleJSInternal(ScriptExecutor.java:61)
        at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.handleJS(ScriptExecutor.java:45)
        at org.eclipse.birt.report.engine.script.internal.ReportScriptExecutor.handleInitialize(ReportScriptExecutor.java:30)
        at org.eclipse.birt.report.engine.api.impl.EngineTask.loadDesign(EngineTask.java:1187)
        at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:82)
        at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:68)
        at org.eclipse.birt.report.engine.api.ReportRunner.runAndRenderReport(ReportRunner.java:221)
        at org.eclipse.birt.report.engine.api.ReportRunner.execute(ReportRunner.java:161)
        at org.eclipse.birt.report.engine.api.ReportRunner.main(ReportRunner.java:117)
6) Conclusion

J’ai la vague impression qu’il ne trouve pas ma classe !
Là je tourne en rond depuis quelque temps.

Merci de votre aide
bert1525 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2007, 00h48   #2
Membre habitué
 
Inscription : février 2005
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 34
Points : 123
Points : 123
Avant de faire des appels à du code java en javascript à travers birt il est important de savoir développer en java.

et la pour le coup le code va avoir du mal à fonctionner :

Citation:
obj = new Packages.mc.batch.Virements.getInstance();
On ne peux instancier une classe et dans le même temps appeler une méthode qui renvoie une instance de cette même classe... ca parait logique et pourtant c'est ce qu'on peut lire dans ce code.

Soit tu fais :

Code :
obj = new Packages.mc.batch.Virements();
Soit :

Code :
obj = Packages.mc.batch.Virements.getInstance();
mais ce n'est même pas sure que ca fonctionne tout dépend du code de la classe Virements.

A noter qu'on peut importer des packages avec la syntaxe:

Code :
importPackage(Packages.mc.batch);
A lire si ce n'est pas déjà fait: http://wiki.eclipse.org/BIRT/FAQ/Scr..._JavaScript.3F
gattino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 09h18   #3
Invité de passage
 
Inscription : août 2003
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 6
Points : 4
Points : 4
autant pour moi, j'ai mal relu mon post....
effectivement j'utilise ma classe Virements comme un singleton donc j'ai bien dans mon javascript :
Code :
obj = Packages.mc.batch.Virements.getInstance();
Je me suis référé à la FAQ BIRT, mais ça m'aide pas plus que ça!!
bert1525 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h43.


 
 
 
 
Partenaires

Hébergement Web