IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

BIRT Discussion :

Comment utiliser une datasource XML avec l'API report engine? [FAQ]


Sujet :

BIRT

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Comment utiliser une datasource XML avec l'API report engine?
    Bonjour,

    Je souhaite utiliser birt pour automatiser la génération de rapports PDF avec les données issus de fichiers XML. J'y arrive avec ireport/JaspertRepert; mais je n'arrive toujours pas à savoir comment faire avec Birt.

    Je me demande si cela est possible.

    J'ai l'impression qu'il faut creer un rapport a partir d'un xml et d'un xsd, j'option un .rptdesign.

    Ensuite j'utilise ce fichier dans du code Java pour produire le PDF.

    Est ce comme ca que ca marche?

    Merci pour votre retour

    Oti

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Personnellement, je n'ai pas compris où est le problème

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    J'utilise BIRT avec un dataSource XML,

    Pour cela j'ai créer une structure XML et j'ai construis mon .rptdesign à partir de cette structure.

    Par la suite, dans mon code java je modifie les données de mon XML (en gardant bien la même structure xsd) en fonction des demandes puis je lance la génération du rapport avec BIRT Runtime. Le .rptdesign va lire les données du XML et afficher le rapport.

    La définition du dataSource XML se fait pour moi au niveau du .rptdesign, et non au niveau JAVA... Enfin c'est comme ça que je fais

  4. #4
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    On peut définir la connexion au XML à partir du rptdesign ou du Java. Tu veux la définir à partir du Java, c'est bien ça ?

  5. #5
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    On prendra alors le même modèle que cette question sauf que le code correspondra à :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    IReportRunnable design = engine.openReportDesign("C:\\monEtat.rptdesign");
    IDataSource dataSource = design.getDesignInstance().getDataSource("monDataSource");
    try {
    	dataSource.setPrivateDriverProperty("FILELIST", "monFichier.xml");
    	dataSource.setPrivateDriverProperty("SCHEMAFILELIST", "monSchema.xsd");
    	dataSource.setPrivateDriverProperty("ENCODINGLIST", "UTF-8"); //Facultatif
    }
    catch (ScriptException e) {
    	e.printStackTrace();
    }

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    C'est bien ce que je voulais savoir. C'est tres gentil de votre part de m'avoir fourni l'exemple.

    Aussi, j'ai une autre question qui me bloque un peu.

    En fait, Birt permet de créer un fichier PDF. Et moi je voudrai savoir s'il est possible non pas de créer un fichier PDF mais plutot de récupérer les Bytes qui correspondent à ce fichier.

    En fait, je n'ai pas besoin de créer le PDF immédiatement, j'ai plutot besoin de générer les bytes correspondant, les envoyer par FTP puis les enregistrer ensuite sous forme de fichier (PDF biensur).

    Bien à vous

  7. #7
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Oui il est également possible de récupérer le flux de cette manière :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    option.setOutputStream(monStream);

    option est du type IRenderOption (ou classe héritée).

    Merci, maintenant je peux rajouter deux questions à la FAQ
    Comment définir une source de données XML ?
    Comment récupérer le fichier généré sous forme de flux ?

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Merci BiM
    Je commence à tomber amoureux de toi Bim, tu m'as sauvé la vie deux fois cette semaine.

    Thank you

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Une autre question ...
    De la même manière que pour la sortie, est ce qu'on peux donner à Birt en entrée un stream d'un fichier XML. J'ai cherché sur le forum et j'ai trouvé une discussion sur les Scripted DataSet, je ne sais pas si c'est cela qu'il faut utiliser.

    En remerciant tout le monde par avance

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    J'ai avance un peu depuis ce midi, mais la solution me parait compliquée et pas très classe.

    L'idée serait de parser le flux XML en Java, récupérer les données dans des instances Java sous forme d'EJB et au final faire appel à des script data set pour traiter les données pour Birt.

    Si Birt arrive à récupérer directement un flux en entrée, ça serait quand même plus intéressant de l'utiliser.

    Si vous avez des idées, des solutions à partager, merci de m'en faire part.

    Bonne journée

  11. #11
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Je n'ai pas très bien compris ta question, pourquoi ne pas tout simplement créer ton XML en JAVA, l'enregistrer dans un fichier XML et demander à BIRT d'appeler celui-ci ?

  12. #12
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    En fait je souhaite utiliser Birt au sein d'un ESB. Donc l'ESB doit récupérer un flux (du XML), le traiter (par birt en PDF) et le transférer une autre application.

    ET donc, j'ai besoin que Birt prenne en entrée un flux (INPUTSTREAM).
    Mais je ne sais pas si c est possible.

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 143
    Points : 1 353
    Points
    1 353
    Par défaut ?
    Que je comprenne bien, c'est un flux XML qui n'est pas un fichier , ni un web service?

    Vous pouvez utiliser un "scripted dataset" pour les objects Java.

  14. #14
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Oui c'est un fllux XML sous forme de INPUTSTREAM

    La question est comment le récupérer?

    Jasper arrive à le faire, pour l'instant avec Birt je ne sais pas si c'est possible.

  15. #15
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Points : 321
    Points
    321
    Par défaut
    Si cela est possible.

    Tu peux passer un paramètre à ton rapport :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    task.setParameterValue("monParamXML", myIO);
    puis utiliser ce paramètre dans ton rapport :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    params["monParamXML"].value

  16. #16
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    OK, merci pour ta réponse.

    Je vais tester ça et je te tiens au courant.

    Bonne journée

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/10/2013, 20h41
  2. Réponses: 16
    Dernier message: 07/07/2009, 13h46
  3. Comment utiliser une base FireBird avec Delphi5
    Par cmali67 dans le forum Bases de données
    Réponses: 8
    Dernier message: 24/03/2009, 00h37
  4. comment utiliser une library C avec g++
    Par pichouss dans le forum C++
    Réponses: 4
    Dernier message: 22/05/2008, 18h08
  5. Comment utiliser une datasource JNDI avec JDBC?
    Par KING_OF_GRACELAND dans le forum JDBC
    Réponses: 6
    Dernier message: 08/04/2008, 18h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo